你好,能不能帮我写个12分钟倒计时的汇编程序,51的
发布网友
发布时间:2024-09-07 00:26
我来回答
共1个回答
热心网友
时间:2024-10-23 19:31
LOAD BIT P1.2
DIN BIT P1.0
DCLK BIT P1.1
DOUT BIT P3.3
KEY EQU 22H ;存放按键键码
KD EQU 23H ;存放按键号
KEY_F BIT 00H ;有键标志位
SEC EQU 25H ;秒单元
MIN EQU 26H ;分单元
ORG 0000H
AJMP MAIN
ORG 0100H
MAIN:
MOV SP, #60H ;初始化
MOV ST, #0
CLR KEY_F
MOV KEY,#0
MOV KD,#0
MOV SEC,#0
MOV MIN,#0
MOV TMOD,#01H ;定时器初始化
MOV TH0,#0DBH
MOV TL0,#0F9H
MOV IE,#82H
CH451_INIT: ;CH451初始化子程序
MOV P1,#60H
CLR DIN ;先低后高
SETB DCLK ;置为默认的高电平
SETB DIN ;输出上升沿CH451选择4线串行接口
SETB LOAD
SETB DOUT ;置为输入
NOP
MOV B,#04H ;设置CH451
MOV A,#03H ;关看门狗开显示键盘
LCALL WRITE
NOP
MOV B,#05H ;设置显示模式为译码方式
MOV A,#80H
LCALL WRITE
NOP
CLR IT1 ;置外部中断信号为低电平触发
CLR IE1 ;清中断标志
SETB EX1 ;允许键盘中断
SETB EA ;开总中断
START:
LCALL DISP ;当前计时显示
JNB KEY_F,START ;无按键等待
CLR KEY_F ;有按键,清按键标志
DISP: ;显示子程序
PUSH PSW
PUSH ACC
MOV B,#0FH ;加载字数据7
MOV A,SEC
ANL A,#0FH
ACALL WRITE
MOV A,SEC
SWAP A
ANL A,#0FH
DEC B ;加载字数据6
ACALL WRITE
MOV A,#12H
DEC B ;加载字数据5
ACALL WRITE
MOV A,MIN
ANL A,#0FH
DEC B ;加载字数据4
ACALL WRITE
MOV A,
SWAP A
ANL A,#0FH
DEC B ;加载字数据3
ACALL WRITE
MOV A,#10H
DEC B ;加载字数据2
ACALL WRITE
MOV A,MIN
ANL A,#0FH
DEC B ;加载字数据1
ACALL WRITE
MOV A,
SWAP A
ANL A,#0FH
DEC B ;加载字数据0
ACALL WRITE
POP ACC
POP PSW
RET
WRITE:
PUSH PSW
PUSH ACC
CLR EX1
CLR LOAD
MOV R7,#08H
WRITE_8:
RRC A
CLR DCLK
MOV DIN,C
SETB DCLK
DJNZ R7,WRITE_8
MOV A,B
MOV R7,#04H
WRITE_4:
RRC A
CLR DCLK
MOV DIN,C
SETB DCLK
DJNZ R7,WRITE_4
SETB LOAD
SETB EX1
POP ACC
POP PSW
RET
把时分秒调换即可,你试试吧~