实用单片机电子钟的制作
主程序(MAIN),如下:
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIME
ORG 0300H
MAIN:
MOV 20H,#00H
;计时的0.1秒、秒、时和分单元清0
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV IP,#02H
;IP,IE初始化
MOV IE,#82H
MOV TMOD,#01H
;定时器的初始化
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0
;启动定时器工作
MOV SP,#40H
;堆栈指针设为40H
NEXT:
LCALL DISP
;调用显示子程序
LCALL KEY
;调按键判断子程序
JZ NEXT
;无键按下转NEXT
LCALL ANKEY
;有键按下转按键处理子程序
SJMP NEXT
;按键处理完转NEXT
NOP
NOP
NOP
定时中断处理程序:
TIME:
PUSH ACC
;现场保护
PUSH PSW
MOV TL0,#0B4H
;重置初值
MOV TH0,#3CH
INC 20H
;计时处理
MOV A,20H
CJNE A,#0AH,RETI1
MOV 20H,#00H
MOV A,21H
ADD A,#01H
DA A
MOV 21H,A
CJNE A,#60H,RETI1
MOV 21H,#00H
MOV A,22H
ADD A,#01H
DA A
MOV 22H,#00H
MOV A,23H
ADD A,#01H
DA A
MOV 23H,A
CJNE A,#24H,RETI1
MOV 23H,#00H
RETI1:
POP PSW
;恢复现场
POP ACC
RETI
;中断返回
NOP
NOP
显示子程序
DISP:
ANL 2FH,#10H
;拆字,注意小数点的显示
MOV A,21H
ANL A,#0FH
ORL A,2FH
MOV 2FH,A
MOV A,21H
ANL A,#0F0H
SWAP A
MOV 2EH,A
ANL 2DH,#10H
MOV A,22H
ANL A,#0FH
ORL A,2DH
MOV 2DH,A
MOV A,22H
ANL A,#0F0H
SWAP A
MOV 2CH,A
ANL 2BH,#10H
MOV A,23H
ANL A,#0FH
ORL A,2BH
MOV 2BH,A
MOV A,23H
ANL A,#0F0H
SWAP A
MOV 2AH,A
MOV R0,#2FH
MOV R3,#06H
MOV DPTR,#TABLE
MOV A,#01H
LOOP1:
MOV B,A
;送位控制字与段控制字
MOV P2,A
MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
MOV R2,#80H
;延时
DJNZ R2,$
DEC R0
MOV A,B
RL A
DJNZ R3,LOOP1
RET
TABLE:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H
;小数点不亮的代码
DB 82H,0F8H,80H,90H,00,00,00,00,00,00
DB 40H,79H,24H,30H,19H,12H,02H,78H
;小数点亮的显示代码
DB 00H,10H,00,00,00,00,00,00
NOP
NOP
按键判断程序
KEY:
MOV P3,#0FFH
;读按键状态
MOV A,P3
CPL A
ANL A,#0FH
JZ RETX
;无键按下返回,有键按下延时去抖动
LCALL DISP
LCALL DISP
MOV A,P3
CPL A
ANL A,#0FH
JZ RETX
;是抖动则返回主程序,否则读按键状态存入R6及A中
MOV R6,A
LOOP2:
LCALL DISP
;等待按键的释放
MOV A,P3
CPL A
ANL A,#0FH
JNZ LOOP2
MOV A,R6
RETX:
RET
NOP
NOP
按键处理子程序
ANKEY:
CLR EA
;关中断
LX:
MOV A,R6
JB ACC.0,L1
;是功能键转L1
JB ACC.1,L2
;是确认键转L2
JB ACC.2,L3
;是增1键转L3
JNB ACC.3,L12
;不是减1键,转L12
JB 2BH.4,L6
;判断使哪一位(时、分、秒)的值减1
JB 2DH.4,L8
JB 2FH.4,L9
L12:
LCALL DISP
LCALL DISP
LCALL KEY
JZ L12
LJMP LX
L2:
MOV 25H,#00H
;是确认键,处理完毕返回
CLR 2BH.4
CLR 2DH.4
CLR 2FH.4
SETB EA
RET
L3:
JB 2BH.4,L61
JB 2DH.4,L81
JB 2FH.4,L91
AJMP L12
L1:
MOV A,25H
JZ LB1
JB ACC.0,LB2
JB ACC.1,LB3
JNB ACC.2,L12
LB1:
MOV 25H,#01H
;25H单元是标志位,(25H)=01H调节时单元的值
SETB 2BH.4
CLR 2DH.4
CLR 2FH.4
AJMP L12
LB3:
MOV 25H,#04H
;(25H)=04H调节秒单元的值
SETB 2FH.4
CLR 2DH.4
CLR 2BH.4
AJMP L12
LB2:
MOV 25H,#02H
;(25H)=02H,调节分单元的值
SETB 2DH.4
CLR 2BH.4
CLR 2FH.4
AJMP L12
L61:
AJMP L611
;调节时间时注意使用的是十进制,而且注意
L81:
AJMP L811
;分和秒都是60进制,时是24进制
L91:
AJMP L911
L6:
MOV A,23H
ADD A,#01H
DA A
MOV 23H,A
CJNE A,#24H,L15
L15:
JC L112
MOV 23H,#00H
L112:
AJMP L12
L8:
MOV A,22H
ADD A,#01H
DA A
MOV 22H,A
CJNE A,#60H,L16
L16:
JC L112
MOV 22H,#00H
AJMP L12
L9:
MOV A,21H
ADD A,#01H
DA A
MOV 21H,A
CJNE A,#60H,L17
L17:
JC L112
MOV 21H,#00H
AJMP L12
L611:
MOV A,23H
ADD A,#99H
DA A
MOV 23H,A
CJNE A,#99H,L112
MOV 23H,#23H
AJMP L12
L811:
MOV A,22H
ADD A,#99H
DA A
MOV 22H,A
CJNE A,#99H,L112
MOV 22H,#59H
AJMP L12
L911:
MOV A,21H
ADD A,#99H
DA A
MOV 21H,A
CJNE A,#99H,L112
MOV 21H,#59H
AJMP L12
NOP
NOP
END
本文档为【无线电制作精汇(2)单片机源程序实用单片机电子钟主程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。