版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机电子时钟参考程序;60H-67H:显示缓冲区;T0用于产生秒信号,定时器溢出20次为1秒,溢出次数存放单元:53H;5DH单元存放功能键按键次数,(0-2)(K1键);5CH单元存放时间或日期修改位置的按键次数(K2键);40H-45H单元存放秒、分、时、日、月、年;5EH单元存放按键键码 ORG 0000h LJMP START ORG 000BH LJMP ITT0 ORG 0013H LJMP KEY ORG 001BH LJMP T1TIM ORG 0030H START: MOV SP,#30H ;设置堆栈首地址 MOV DPTR,#0E001H ;8279命令口地址 MOV
2、A,#0DCH ;清显示RAM MOVX DPTR,A LCALL DELAY100MS MOV A,#34H ;设置8279分频系数 MOVX DPTR,A MOV A,#10H ;设置按键及显示方式 MOVX DPTR,A MOV A,#90H ;允许写显示RAM MOVX DPTR,A MOV A,#40H MOVX DPTR,A LCALL CHECK1 ;调自检程序 LCALL ORANGE ;调初始化程序,有时间的初值、按键计数器的初值 ;年月日的初值,显示时间的初值 LCALL DISP ;调显示子程序 MOV TMOD,#11H ;设置T0定时器工作方式及初值 MOV TH0,
3、#3CH MOV TL0,#0B0H SETB ET0 ;开T0、T1、8279按键中断,启动定时器T0 SETB TR0 SETB EX1 SETB T1 SETB ET1 SETB EALOOP: LCALL ABC SJMP LOOP;ABC: MOV A,5DH CJNE A,#0,ABC1 ;如果K1键标志为非0,则可以修改日期和时间 SETB TR0 ;如果K1键标志为0,则不能修改日期和时间 SETB ET0 ;开启定时器T0 LCALL FLASH ;正常显示时间 LJMP ABC4ABC1: CJNE A,#1,ABC2 ;若K1键标志为1,允许修改时间MOV A,5CH C
4、JNE A,#0,ABC11 ;若K2键标志为0,则小时位闪动,且允许修改MOV 60H,#0FFH ;修改“小时”位并闪动MOV 61H,#0FFHLCALL DISPLCALL M1SMOV A,42HLCALL BCD8MOV 60H,3DHMOV 61H,3EH LCALL DISP LJMP ABC3ABC11: CJNE A,#1,ABC12 ;若K2键标志为1,则月闪动,且允许修改 MOV 63H,#0FFH ;修改“分”位并闪动MOV 64H,#0FFH LCALL DISP LCALL M1S MOV A,41H LCALL BCD8 MOV 63H,3DH MOV 64H,
5、3EH LCALL DISP LJMP ABC3ABC12:MOV 66H,#0FFH ;若K2键标志为2,则秒闪动,且允许修改 MOV 67H,#0FFH ;修改“秒”位并闪动 LCALL DISP LCALL M1S MOV A,40H LCALL BCD8 MOV 66H,3DH MOV 67H,3EH LCALL DISP LJMP ABC3ABC2:CJNE A,#2,ABC3 ;若K1键标志为2,允许修改日期 LCALL NYR ;显示当前年月日的值 MOV A,5CH CJNE A,#0,ABC21 ;若K2键标志为0,则“年”位闪动,且允许修改 MOV 60H,#0FFH ;修
6、改“年”位并闪动 MOV 61H,#0FFH LCALL DISP LCALL M1S MOV A,45H LCALL BCD8 MOV 60H,3DHMOV 61H,3EHLCALL DISPLJMP ABC3ABC21:CJNE A,#1,ABC22 ;若K2键标志为1,则“月”位闪动,且允许修改MOV 63H,#0FFH ;修改“月”位并闪动MOV 64H,#0FFHLCALL DISPLCALL M1SMOV A,44HLCALL BCD8MOV 63H,3DHMOV 64H,3EHLCALL DISPLJMP ABC3ABC22:MOV 66H,#0FFH ;若K2键标志为2,则“日
7、”位闪动,且允许修改MOV 67H,#0FFH ;修改“日”位并闪动LCALL DISPLCALL M1SMOV A,43HLCALL BCD8MOV 66H,3DHMOV 67H,3EHLCALL DISPABC3:LCALL M1SABC4:LCALL DELAY100MS ;调100毫秒延时子程序RET;显示器自检子程序CHECK1: MOV R5,#0AH MOV 59H,#00HCHECK2: MOV R6,#08H MOV R0,#60HCHECK3: MOV A,59H LCALL BCD8 MOV R0,3EH INC R0 MOV R0,3DH INC R0 DJNZ R6,
8、CHECK3 LCALL DISP LCALL DELAY100MS INC 59H DJNZ R5,CHECK2 RET;显示当前年月日的值NYR:MOV A,45HLCALL BCD8MOV 60H,3DHMOV 61H,3EHMOV A,44HLCALL BCD8MOV 63H,3DHMOV 64H,3EHMOV A,43HLCALL BCD8MOV 66H,3DHMOV 67H,3EHLCALL DISPRET;1秒延时子程序,主要用于修改时间、日期的为闪动M1S:MOV R7,#5M1S3:MOV R6,#100M1S2:MOV R5,#100M1S1:DJNZ R5,M1S1DJN
9、Z R6,M1S2DJNZ R7,M1S3RET;显示子程序 DISP:MOV R7,#08HMOV R0,#60HMOV DPTR,#0E001HMOV A,#90H MOVX DPTR,AMOV DPTR,#0E000HDISP1:MOV A,R0 MOVX DPTR,AINC R0DJNZ R7,DISP1RET;将A寄存器中的二进制数转换成BCD码十进制数;并找到十进制数的显示字符码,存放在3DH、3EH单元中;高位在3DH单元中,低位存放在3EH单元中BCD8:MOV B,#100DIV ABMOV A,BMOV B,#10DIV ABMOV DPTR,#TABMOVC A,A+DP
10、TRMOV 3DH,AMOV A,BMOVC A,A+DPTRMOV 3EH,ARET;定时器T0中断子程序,定时器溢出20次为1秒ITT0: INC 53H MOV TH0,#03CH MOV TL0,#0B0H SETB TR0 MOV A,53H CJNE A,#14H,LL1 MOV 53H,#00H LCALL SECEND LL1: RETI;T0定时器到1秒,则秒单元(40H)加1SECEND: MOV A,40H CJNE A,#59,LL2 MOV 40H,#00H LCALL MINU SJMP LL21LL2: INC 40HLL21: LCALL FLASH RET;
11、T0定时器到1分钟,则分单元(41H)加1 MINU: MOV A,41H CJNE A,#59,LL3 MOV 41H,#00H LCALL HOUR SJMP LL31LL3: INC 41HLL31: RET; T0定时器到1小时,则小时单元(42H)加1 HOUR: MOV A,42H CJNE A,#23,LL4 MOV 42H,#00H LCALL DAY SJMP LL41LL4: INC 42HLL41: RET;T0定时器到1天,则天单元(43H)加1;并判断是否是闰年DAY: LCALL RUNNIAN ;调判断闰年子程序 MOV A,5BHJNZ DAY1 MOV DPT
12、R,#TAB1 SJMP DAY2DAY1:MOV DPTR,#TAB2DAY2:MOV A,44H MOVC A,A+DPTR CJNE A,43H,DAY3 MOV 43H,#01H LCALL MONTH SJMP DAY4DAY3:INC 43HDAY4:RET;T0定时器到1月,则月单元(44H)加1 MONTH: MOV A, 44H CJNE A,#12,M1 MOV 44H,#1 LCALL YEAR SJMP M2M1: INC 44HM2: RET;T0定时器到1年,则年单元(45H)加1 YEAR: MOV A, 45H CJNE A,#99,Y1 MOV 45,#0 S
13、JMP Y2Y1: INC 45HY2: RET ; 延时100毫秒子程序 DELAY100MS:MOV R3,#200 DELAY1: MOV R4,#250 DELAY2: DJNZ R4,DELAY2 DJNZ R3,DELAY1 RET;延时10秒子程序DELAY10S: MOV R5,#100DDELAY3: LCALL DELAY100MS DJNZ R5,DELAY3 RET;正常显示时间子程序FLASH: MOV A,40H LCALL BCD8 MOV 66H,3DH MOV 67H,3EH MOV A,41H LCALL BCD8 MOV 63H,3DH MOV 64H,3
14、EH MOV A,42H LCALL BCD8 MOV 60H,3DH MOV 61H,3EH LCALL DISP RET;闰年判断子程序 RUNNIAN:MOV A,45H MOV B,#4 DIV AB MOV A,B JZ RUNN1 MOV 5BH,#0 SJMP RUNN2RUNN1: MOV 5BH,#1RUNN2: RET;按键中断子程序;5EH单元存放按键代码;5DH单元存放K1键按键次数;5CH单元存放K2键按键次数KEY: PUSH PSW CLR ET0 ;有按键按下,则停止定时器T0 CLR TR0 ;关闭定时器T0中断和按键中断 CLR EX1 CLR ET1 CL
15、R TR1 MOV TH1,#3CH ;启动T1定时器,定时10秒 MOV TL1,#0B0H ;10秒内没有再次按键,进入正常时间计时状态 MOV 5AH,#00H SETB ET1 SETB TR1 MOV DPTR,#0E001H MOV A,#40H MOVX DPTR,A ;读键值 MOV DPTR,#0E000H MOVX A,DPTR ANL A,#3FH MOV 5EH,A ;按键值存放在5EH单元 CJNE A,#04H,KEY1 ;判断是否功能键K1? MOV A,5DH CJNE A,#02H,KEY01 ;若功能键值当前为2, MOV 5DH,#00H ;本次按键后,按
16、键次数清0 SJMP KEY02 KEY01: INC 5DH ;否则功能键按键次数加1 KEY02: LJMP KEYEND;KEY1: CJNE A,#01H,KEY2 ;判断是否K2键? MOV A,5DH CJNE A,#00H,KEY13 ;若K1键次数为0,则本次K2按键无效 LJMP KEYENDKEY13: MOV A,5CH ;若K1键次数为非0,则本次K2按键有效 CJNE A,#02H,KEY11 ;若K2键值当前为2, MOV 5CH,#00H ;则K2键本次按键后,按键次数清0 SJMP KEY12KEY11: INC 5CH ;否则K2键按键次数加1KEY12: L
17、JMP KEYEND;KEY2: CJNE A,#02H,KEY3 ;判断是否K3键?(+) MOV A,5DH CJNE A,#00H,KEY23 ;若K1键次数为0,则本次K3按键无效 LJMP KEYENDKEY23: CJNE A,#01H,KEY24 若K1键次数为1,则可进行时间加1修改 MOV A,5CH CJNE A,#00H,KEY231 ;若K2键次数为0,则进行“小时”修改 MOV A,42H CJNE A,#23,KEY230 ;当前小时为23,加1后则小时单元清0 MOV 42H,#00H LJMP KEYENDKEY230: INC 42H ;当前小时不为23,则小
18、时单元加1 LJMP KEYEND;KEY231: CJNE A,#01H,KEY232 ;若K2键次数为1,则进行“分”修改MOV A,41HCJNE A,#59,KEY2311 ;当前分为59,加1后则分单元清0MOV 41H,#00HLJMP KEYENDKEY2311:INC 41H ;当前分不为59,则“分”单元加1LJMP KEYEND;KEY232:MOV A,40H ;若K2键次数为,则进行“秒”修改CJNE A,#59,KEY2321 ;当前“秒”为59,加1后则“秒”单元清0MOV 40H,#00HLJMP KEYENDKEY2321:INC 40H ;当前“秒”不为59,
19、则“秒”单元加1LJMP KEYEND;KEY24:MOV A,5CH ;若K1键次数为2,则可进行日期修改CJNE A,#00H,KEY241 ;若K2键次数为0,则可进行“年”修改 MOV A,45HCJNE A,#99,KEY240 ;当前“年”为99,加1后则“年”单元清0MOV 45H,#00H LJMP KEYENDKEY240:INC 45H ;当前“年”不为99,则“年”单元加1LJMP KEYEND;KEY241:CJNE A,#01H,KEY242 ;若K2键次数为1,则可进行“月”修改 MOV A,44HCJNE A,#12,KEY2411 ;当前“月”为12,加1后则“
20、月”单元清1MOV 44H,#01HLJMP KEYENDKEY2411:INC 44H ;当前“月”不为12,则“月”单元加1LJMP KEYEND;KEY242:MOV A,43H ;若K2键次数为2,则可进行“日”修改CJNE A,#31,KEY2421 ;当前“日”为31,加1后则“日”单元清1MOV 43H,#01HLJMP KEYENDKEY2421:INC 43H ;当前“日”不为31,则“日”单元加1LJMP KEYEND;KEY3:CJNE A,#03H,KEYEND ;判断是否K4键?(-)MOV A,5DHCJNE A,#00H,KEY33 ;若K1键次数为0,则本次K4
21、按键无效LJMP KEYENDKEY33:CJNE A,#01H,KEY34 ;若K1键次数为1,则可进行时间减1修改MOV A,5CHCJNE A,#00H,KEY331 ;若K2键次数为0,则可进行“小时”减1修改MOV A,42HCJNE A,#0,KEY330 ;当前“小时”为0,减1后则“小时”单元置23MOV 42H,#23LJMP KEYENDKEY330:DEC 42H ;当前“小时”不为0,则“小时”单元减1LJMP KEYEND;KEY331:CJNE A,#01H,KEY332 ;若K2键次数为1,则可进行“分”减1修改MOV A,41HCJNE A,#0,KEY3311
22、 ;当前“分”为0,减1后则“分”单元置59MOV 41H,#59LJMP KEYENDKEY3311:DEC 41H ;当前“分”不为0,则“分”单元减1LJMP KEYEND;KEY332:MOV A,40H ;若K2键次数为2,则可进行“秒”减1修改CJNE A,#0,KEY3321 ;当前“秒”为0,减1后则“秒”单元置59MOV 40H,#59LJMP KEYENDKEY3321:DEC 40H ;当前“秒”不为0,则“秒”单元减1LJMP KEYEND;KEY34:MOV A,5CH ;若K1键次数为2,则可进行日期减1修改CJNE A,#00H,KEY341 ;若K2键次数为0,
23、则可进行“年”减1修改MOV A,45HCJNE A,#0,KEY340 ;当前“年”为0,减1后则“年”单元置99MOV 45H,#99LJMP KEYENDKEY340:DEC 45H ;当前“年”不为0,则“年”单元减1LJMP KEYEND;KEY341:CJNE A,#01H,KEY342 ;若K2键次数为1,则可进行“月”减1修改MOV A,44HCJNE A,#1,KEY3411 ;当前“月”为1,减1后则“月”单元置12MOV 44H,#12LJMP KEYENDKEY3411:DEC 44H ;当前“月”不为1,则“月”单元减1LJMP KEYEND;KEY342:MOV A,43H ;若K2键次数为2,则可进行“日”减1修改CJNE A,#1,KEY3421 ;当前“日”为1,减1后则“日”单元置31MOV 43H,#31LJMP KEYENDKEY3421:DEC 43H ;当前“日”不为1,则“日”单元减1LJMP KEYENDKEYEND:POP PSWMOV A,5DHCJNE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长春信息技术职业学院《材料科学与工程基础》2025-2026学年期末试卷
- 马鞍山师范高等专科学校《旅游规划原理》2025-2026学年期末试卷
- 长春早期教育职业学院《资产评估》2025-2026学年期末试卷
- 阜阳科技职业学院《比较文学》2025-2026学年期末试卷
- ICU患者饮食护理
- 《龙的传人》教学设计
- 舟桥工岗前实操综合知识考核试卷含答案
- 学校学生行为管理制度
- 二手车经纪人持续改进考核试卷含答案
- 城市轨道交通行车值班员风险识别测试考核试卷含答案
- 南通市医疗机构主要运行指标定期公布工作实施方案
- 四川三江招商集团有限公司2026年3月公开招聘工作人员考试参考试题及答案解析
- 【励志教育】主题班会:《张雪机车夺冠》从山村少年到世界冠军的缔造者【课件】
- 2026重庆酉阳自治县城区学校选聘教职工91人笔试模拟试题及答案解析
- 2026湖北松滋金松投资控股集团有限公司招聘28人笔试备考试题及答案解析
- 2026江苏无锡惠高新运产业招商发展有限公司招聘6人笔试备考题库及答案解析
- T∕CEA 3030-2026 乘运质量等级 第2部分:自动扶梯和 自动人行道
- 医院清明假期安全课件
- 2026年国海证券行测笔试题库
- 湖北省武汉市2026高三下学期3月调研考试化学试题 含答案
- (新教材)2026年部编人教版三年级下册语文 语文园地三 课件
评论
0/150
提交评论