基于汇编语言编写的数码管显示时钟程序.docx
《基于汇编语言编写的数码管显示时钟程序.docx》由会员分享,可在线阅读,更多相关《基于汇编语言编写的数码管显示时钟程序.docx(11页珍藏版)》请在冰豆网上搜索。
![基于汇编语言编写的数码管显示时钟程序.docx](https://file1.bdocx.com/fileroot1/2023-2/6/5f6145f9-a1fd-414e-8bf0-e3fda8eac263/5f6145f9-a1fd-414e-8bf0-e3fda8eac2631.gif)
基于汇编语言编写的数码管显示时钟程序
如图用汇编语言编写的可调时钟(用定时器定时,不精准),此程序只是提供一个idea
操作:
最上面的键是开始调整键,后面依次为时分秒的切换键、加键、减键、调整完成键.
程序如下:
SHIEQUR2
FENEQUR3
MIAOEQUR4
CHANGEEQUR5
ORG00H
LJMPMAIN
ORG000BH//中断入口
LJMPITOR
ORG60H
MAIN:
MOVTMOD,#01H//初始化定时器
MOVTH0,#3CH
MOVTL0,#0B0H//50mS
SETBET0
SETBEA
CLRF0//键盘设定标志位
MOVR0,#00H
MOVR1,#00H
MOVP0,#0FFH
MOVSHI,#00H
MOVFEN,#00H
MOVMIAO,#00H
MOVCHANGE,#00H
SETBTR0//打开定时器
M1:
LJMPKEY//键盘扫描
M2:
LCALLINIT//动态显示
LJMPM1
INIT:
MOVA,SHI//显示函数
MOVB,#0AH
DIVAB
MOV40H,A
MOV41H,B
CLRP2。
0
CLRP2.1
CLRP2。
2
JNBF0,O1
CJNECHANGE,#00H,O1
CJNER1,#0,O1
MOVP1,#00H
CPLP2.7
LCALLDELAY
LJMPO10
O1:
MOVDPTR,#TABLE
MOVA,40H
MOVCA,@A+DPTR
MOVP1,A
LCALLDELAY
MOVP1,#00H
O10:
CLRP2。
0
CLRP2。
1
SETBP2。
2
JNBF0,O2
CJNECHANGE,#00H,O2
CJNER1,#0,O2
MOVP1,#00H
LCALLDELAY
LJMPO20
O2:
MOVDPTR,#TABLE
MOVA,41H
MOVCA,@A+DPTR
MOVP1,A
LCALLDELAY
MOVP1,#00H
O20:
CLRP2。
0//显示小时
SETBP2。
1
CLRP2.2
MOVP1,#040H
LCALLDELAY//显示分隔符
MOVP1,#00H
MOVA,FEN
MOVB,#0AH
DIVAB
MOV40H,A
MOV41H,B
CLRP2.0
SETBP2.1
SETBP2。
2
JNBF0,O3
CJNECHANGE,#01H,O3
CJNER1,#0,O3
MOVP1,#00H
LCALLDELAY
LJMPO30
O3:
MOVDPTR,#TABLE
MOVA,40H
MOVCA,@A+DPTR
MOVP1,A
LCALLDELAY
MOVP1,#00H
O30:
SETBP2。
0
CLRP2.1
CLRP2。
2
JNBF0,O4
CJNECHANGE,#01H,O4
CJNER1,#0,O4
MOVP1,#00H
LCALLDELAY
LJMPO40
O4:
MOVDPTR,#TABLE
MOVA,41H
MOVCA,@A+DPTR
MOVP1,A
LCALLDELAY
MOVP1,#00H//显示分钟
O40:
SETBP2。
0
CLRP2.1
SETBP2。
2
MOVP1,#040H
LCALLDELAY//显示分隔符
MOVP1,#00H
MOVA,MIAO
MOVB,#0AH
DIVAB
MOV40H,A
MOV41H,B
SETBP2。
0
SETBP2。
1
CLRP2.2
JNBF0,O5
CJNECHANGE,#02H,O5
CJNER1,#0,O5
MOVP1,#00H
LCALLDELAY
LJMPO50
O5:
MOVDPTR,#TABLE
MOVA,40H
MOVCA,@A+DPTR
MOVP1,A
LCALLDELAY
MOVP1,#00H
O50:
SETBP2。
0
SETBP2.1
SETBP2.2
JNBF0,O6
CJNECHANGE,#02H,O6
CJNER1,#0,O6
MOVP1,#00H
LCALLDELAY
LJMPO60
O6:
MOVDPTR,#TABLE
MOVA,41H
MOVCA,@A+DPTR
MOVP1,A
LCALLDELAY
MOVP1,#00H//显示秒
O60:
RET
KEY:
MOVA,P0
XRLA,#0FFH
CJNEA,#00H,A1
LJMPM2
A1:
LCALLDELAY1
MOVA,P0
XRLA,#0FFH
CJNEA,#00H,KEY1
LJMPM2
KEY1:
CJNEA,#80H,KEY2//按键1、开始键
SETBF0
//CLRTR0
JNBP0。
7,$
LJMPM2
KEY2:
CJNEA,#40H,KEY3//按键2、切换键
JNBF0,B1
INCCHANGE
MOVA,CHANGE
CJNEA,#03,B2
MOVCHANGE,#00H
B1:
JNBP0.6,$
LJMPM2
B2:
JNBP0。
6,$
LJMPM2
KEY3:
CJNEA,#20H,KEY4//按键3、加键
JNBF0,C1
MOVA,CHANGE
CJNEA,#00,C2
INCSHI
CJNESHI,#24,C1
MOVSHI,#00H
C1:
JNBP0。
5,$
LJMPM2
C2:
CJNEA,#01,C4
INCFEN
CJNEFEN,#60,C3
MOVFEN,#00H
C3:
JNBP0.5,$
LJMPM2
C4:
INCMIAO
CJNEMIAO,#60,C5
MOVMIAO,#00H
C5:
JNBP0.5,$
LJMPM2
KEY4:
CJNEA,#10H,KEY5//按键4、减键
JNBF0,D1
MOVA,CHANGE
CJNEA,#00,D2
CJNESHI,#00H,D0
MOVSHI,#24
D0:
DECSHI
D1:
JNBP0。
4,$
LJMPM2
D2:
CJNEA,#01,D3
CJNEFEN,#00H,D00
MOVFEN,#60
D00:
DECFEN
JNBP0。
4,$
LJMPM2
D3:
CJNEMIAO,#00H,D000
MOVMIAO,#60
D000:
DECMIAO
JNBP0。
4,$
LJMPM2
KEY5:
JNBF0,D0000//按键5、停止键
CLRF0
MOVR0,#00H
D0000:
JNBP0.3,$
LJMPM2
ITOR:
MOVTH0,#3CH
MOVTL0,#0B0H
INCR0
JNBF0,E0
CPLP2.6
INC44H
MOVA,44H
CJNEA,#5,RETURN
MOV44H,#00H
LJMPE1
E0:
CJNER0,#19,RETURN
MOVR0,#00H
JBF0,E1
INCMIAO
CJNEMIAO,#60,RETURN
MOVMIAO,#00H
INCFEN
CJNEFEN,#60,RETURN
MOVFEN,#00H
INCSHI
CJNESHI,#24,RETURN
MOVSHI,#00H
LJMPRETURN
E1:
INCR1
CJNER1,#2,RETURN
MOVR1,#0
RETURN:
RETI
DELAY:
MOVR7,#255
DJNZR7,$
RET
DELAY1:
MOVR6,#115//10mS
DL1:
MOVR7,#248
DJNZR7,$
DJNZR6,DL1
RET
TABLE:
DB3FH,06H,5BH,4FH
DB66H,6DH,7DH,07H
DB7FH,6FH
END