数字电子钟的设计_第1页
数字电子钟的设计_第2页
数字电子钟的设计_第3页
数字电子钟的设计_第4页
数字电子钟的设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、福 建 工 程 学 院课程设计任务书 设计题目: 数字电子钟的设计 班级: 学号: 姓名: 指导老师: 一、设计目的:通过单片机应用产品的设计与调试过程,巩固微机原理及接口技术课程所学理论知识,初步了解单片机应用系统设计与调试的方法。二、设计任务:设计一个以AT89S51单片机为核心的数字电子钟控制器,实现电子钟的时间、日期交替显示、闹钟功能,并可通过按钮开关或键盘切换显示内容、调整参数、设置闹钟,在单片机实验板上模拟调试实现控制器的功能。三、设计要求:1开机自检,检查相关接口及数码管显示器、指示灯、蜂鸣器等外设是否正常。28位数码管显示器平常以一定的时间间隔、合适的格式显示时间和日期信息,时

2、间显示时、分、秒;日期显示年(20002099)、月、日;设置闹钟功能时显示时、分、开/关状态。3可通过按键设定时间、日期、闹钟等参数、手动切换显示。按键可用独立式按键或行列式键盘实现。设定参数过程有合适的方式指示当前可修改的内容。4对开关量输入进行软件消抖动处理,参数的设定有容错处理,如:小时不能超过23,日期中每月最大天数、闰年等。5参数设定过程中,较长时间无操作,则自动恢复为正常显示方式。四、扩展功能(选做):1可设置多次闹钟。2显示星期功能。3显示环境温度,温度可由A/D转换实现或由1-Wire温度传感器DS18B20获取。4用Protel设计相应上述功能的控制器的原理图。5其它自选的

3、扩展功能。五、设计环节及时间安排:1明确设计任务,总体方案设计与选择,并对方案进行说明。1天2按照实验板配置情况设计实现该控制器功能的控制软件。 2天3软件功能调试、改进、扩展功能。 5天4编写设计说明书,设计答辩及小结。 2天二实验基本原理利用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要译码器,数据锁存器等较多硬件,可采用

4、动态显示法实现LED显示,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。三实验设计分析针对要实现的功能,采用AT89S51单片机进行设计,AT89S51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。这样,既能做到经济合理又能实现预期的功能。在程序方面,采用分块设计的方法,这样既减小了编程难度、

5、使程序易于理解,又能便于添加各项功能。程序可分为闹钟的声音程序、时间显示程序、日期显示程序,秒表显示程序,时间调整程序、闹钟调整程序、定时调整程序,延时程序等。运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。这是前期准备工作。第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和数码管电路等。第三部分是软件部分:先学习理解汇编语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。第四部分是软

6、件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。最后进行功能扩展,在已经正确的设计基础上,添加额外的功能!四实验要求实现A.电路设计1. 整体设计此次设计主要是应用单片机来设计电子时钟,硬件部分主要分以下电路模块:显示电路用8个共阴数码管分别显示,星期(年份),小时、分钟(月份)和秒(日),通过动态扫描进行显示,从而避免了译码器的使用,同时节约了I/0端口,使电路更加简

7、单。单片机采用AT89S51系列,这种单片机应用简单,适合电子钟设计。电路的总体设计框架如下:单片机输入部分晶振和复位输出部分2. 分块设计模块电路主要分为:输入部分、输出部分、复位和晶振电路。2.1 输入部分输入信号主要是各种模式选择和调整信号,由按键开关提供。以下为输入部分样例:在本实验中主要用用PB0-PB7口输入按键信号2.2 输出部分本电路的输出信号为8段数码管的位选和段选信号.本实验的数码管是共阴的,如下图:2.3 晶振与复位电路本实验单片机时钟用内部时钟,模块如下:复位电路为手动复位构成,模块如下:各模块拼接组合,电路总体设计图如下:B.程序设计B.1 程序总体设计本实验用汇编程

8、序完成.程序总的流程图如下:结合电路图,程序设计的整体思路为:接通电源,数码管显示,时,分,秒。并且走时显示LED灯每隔3秒自动切换为日期显示,此为正常工作模式。以下为在该工作方式下模式选择的按键方式:P0键 日期和时间的切换P1键 编辑模式键P2键 自增加一键P3键 移位键P4键 确定键P5键 闹钟编辑键B.2 程序主要模块B.2.1 延时模块数码管显示动态扫描时,用到延时程序,程序中使用延迟1ms,12ms,1s的程序,此程序需要反复调用程序如下:D1MS: MOV R7,#250 ;延时1毫秒子程序D1MS1: NOP NOP NOP NOP DJNZ R7,D1MS1 RETDELAY

9、: MOV R5,#10;延时12毫秒程序DE_1: MOV R6,#200 DE_2: NOP NOP NOP NOP NOP NOP DJNZ R6,DE_2 DJNZ R5,DE_1 RET D1S: MOV R7,#4 ;延时1秒子程序 D1S2: MOV R6,#200 D1S1: MOV R5,#200 D1S0: NOP DJNZ R5,D1S0 DJNZ R6,D1S1 DJNZ R7,D1S2 RETB.2.2中断服务程序对秒计数单元进行加1操作,计时单元的最大值为23时59分59秒。在计数单元中采用十进制BCD码计数,满60进位。ITP: PUSH ACC ;保护现场 PU

10、SH PSW MOV A,40H INC 38H ;每200uS加1 MOV A,38H CJNE A,#50,DONE ;满10mS? MOV 38H,#0;200uS计数单元清0 INC 42H MOV A,42H CJNE A,#20,DONE ;满200mS MOV 42H,#0 MOV A,43H CPL A MOV 43H,A INC 39H ;每200mS加1 MOV A,39H CJNE A,#5,DONE ;满1S? MOV 39H,#0 ;10mS计数单元清0 MOV A,3AH ;秒单元(按BCD码)加1 ADD A,#1 DA A MOV 3AH,A日历显示:中断服务程

11、序中日历的实现较为复杂,要考虑平年,闰年,特殊的2月,每月的天数的不尽相同。具体的逻辑判断方法为:首先,要考虑年份是不是闰年,闰年的判断方法是:将年份除以100,若能整除,则将年份除以400,若还能整除,则为闰年,若不能,则为平年;若不能被100整除,则判断是否能被4整除,若能,则为闰年,若不能则为平年。只有2月与平、闰年相关,因此在闰年和平年的子程序中,要判断是不是2月,若是则在相应的年中进行日期的增加,若不是则转入平时的月份。其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月为每月30天。日历进位判断流程图如下:年份能否被100整除NY年份是否能被4整除年份是否能被400

12、整除NN平年闰年YY是不是2月是不是2月Y日=28之后返回为1NNY日=29之后返回为1若月份为1、3、5、7、8、10、12月则调用31天的程序,若月份为4、6、9、11则调用30天的程序本实验用8个数码管,刚好能显示年,月,日,扫描显示与时间的扫描显示类似。千位,百位组成两位数能被4整除,则年数被400整除,为闰年。若十位,个位组成两位数能被4整除,则年数能被4整除,为闰年。日期显示子程序: MOV A,4AH ;天单元(按BCD码)加1 ADD A,#1 DA A MOV 4AH,A MOV A ,4BH ;查表取得当前月份的天数 ANL A,#0FH MOV 20H,A MOV A,

13、4BH ANL A,#0F0H SWAP A MOV B ,#10 MUL AB ADD A,20H MOV 20H,A MOV A,4CH ;平年闰年的判断去查表TAB2还是表TAB3 ANL A,#0FH MOV 21H,A ANL A,#0F0H SWAP A MOV B,#10 MUL AB ADD A,21H MOV B,#4 DIV AB MOV A,B CJNE A,#0,TAC MOVA,20H MOV DPTR,#TAB3 ;余数为0则转去查闰年的表 MOVC A,A+DPTR ; LJMP TAD TAC:MOVA,20H MOV DPTR,#TAB2 ;余数不为0则转去查

14、平年的表 MOVC A,A+DPTR ;输出字位码*/ TAD:CJNE A,4AH,DONE1 ;满一个月? MOV 4AH,#1 ;天单元变为1 MOV A,4BH ;月单元(按BCD码)加1 ADD A,#1 DA A MOV 4BH,A CJNE A,#13H,DONE1 ;满12个月? MOV 4BH,#1 ;月单元变1 MOV A,4CH ;年(按BCD码)加1 ADD A,#1 DA A MOV 4CH,A CJNE A,#99H,DONE1 ;满100年? MOV 4CH,#0 ;年单元清零DONE1:POP PSW ;恢复现场 POP ACC RETI TAB2:DB 00H

15、,032H,029H,032H,031H,032H,031H,032H,032H,031H,032H,031H,032H;平年0-12个月的天数 TAB3:DB 00H,032H,030H,032H,031H,032H,031H,032H,032H,031H,032H,031H,032H;闰年0-12个月的天数按键控制功能:P0键 日期和时间的切换P1键 编辑模式键P2键 自增加一键P3键 移位键P4键 确定键P5键 闹钟编辑键程序在附录中提供C. 程序调试及仿真本程序通过Keil单片机开发平台实现程序的编译,链接,生成HEX文件。程序再编译过程中可以发现错位,并及时改正,在设计时非常重要,使

16、错误被扼杀在摇篮中。通过Keil和硬件仿真平台Proteus的联合,可以将设计效果仿真出来,根据效果,有目的的改变设计,优化程序。c.1 利用Keil软件实验过程截图:1,建一个工程,并设定与Proteus仿真相关的参数2,汇编程序,并生成HEX文件c.2利用Proteus仿真实验过程截图:1.普通时间显示模式仿真图,表示:时间为30秒2.日期调节,显示模式仿真图,表示:2000年1月1日五.实验总结及感想经过了两周的单片机课程设计,学到了不少了单片机的知识,在第一周设计时,主要按照分模块来做的思路来做,先做开机自检,时间,再做日历,最后做键盘和闹钟,一个模块一个模块的完成,最后再把它们整合到

17、一起,进行检查和调试。有了方向和不少知识储备后,在接下来的几天,几乎每天都有突破,虽然有时只是一句程序的修改或诞生,但那种收获的感觉很开心的。一分耕耘,一分收获。只有亲自用实践来验证这句话,在能得其要领。经过这次单片机课程设计,我从一个单片机实践的门外汉,已经越升为略知一二的新手。虽然还有很多有关单片机的应用有待学习,但万变不离其宗,只要深入了解单片的原理,全部知识点,各个细节,一切设计皆有可能。在设计中也遇到问题,在protues仿真的时候按键按下去了没有反应,老师说不要太相信仿真软件,它仿真的结果有时跟在板上直接运行的结果有点差距,所以我下载到板上进行运行,发现在板上按键一按就可以在数码管

18、上直接显示出来。附录:电路原理图程序清单: ORG 0000H LJMP MAIN ORG 000BH LJMP ITP ;转T0中断服务程序 ORG 0030HMAIN: MOV SP,#6FH LCALL D1S MOV A,#89H ;数码管显示与矩阵键盘接口8255初始化 MOV DPTR,#0FEFFH MOVX DPTR,A MOV A,#8BH ;LED显示,开关,按键接口8255初始化 MOV DPTR,#0FDFFH MOVX DPTR,A MOV DPTR,#0FEFDH MOV A,#00H MOVX DPTR,A ;关显示 MOV DPTR,#0FDFCH MOV A,

19、#0FFH MOVX DPTR,A ;关LED;*开机自检*TEST: CLR P3.2 ;蜂鸣器 LCALL D1S SETB P3.2 MOV DPTR,#0FEFCH ;数码管显示器 MOV A,#00H MOVX DPTR,A MOV A,#01H MOV DPTR,#0FEFDH TEST_1: MOVX DPTR,A LCALL D1S RL A CJNE A,#01H,TEST_1 ;* MOV 38H,#00 ;38H-39H为秒计时 MOV 39H,#00 MOV 42H,#00 ;判断是否满200ms MOV 41H,#0FEH ;编辑状态下判断闪烁位 MOV 47H,#0

20、1H ;判断是否进入编辑模式 MOV 48H,#01H ;判断是否进入闹钟编辑模式 MOV 46H,#00H ;判断计时是否满3秒 MOV 43H,#00H ;判断是否闪烁 MOV 40H,#01H ;判断显示何种模式(时间/日期) MOV 3AH,#00H ;秒 MOV 3BH,#00H ;分 MOV 3CH,#00H ;时 MOV 4AH,#01H ;天 MOV 4BH,#01H ;月 MOV 4CH,#00H ;年 MOV 5AH,#15 ;闹钟存储单元 MOV 5BH,#00H MOV 5CH,#00H SETB IT0 SETB EA SETB EX0 MOV SP,#6FH MOV

21、 TMOD,#22H MOV TL0,#48H MOV TH0,#48H SETB ET0 SETB TR0 ;启动T0定时工作 LOOP: MOV A,40H CJNE A,#01H,LOOP2 ;判断显示时间 MOV A,48H CJNE A,#01H,LOOP3 LCALL CZ ;调用拆字子程序 LP1: LCALL DISP ;调用显示子程序 LCALL KEY;调用键盘子程序 MOV A,47H CJNE A,#01H,LP1 LCALL CLOCK;跳转闹钟 SJMP LOOP ;反复循环主流程CLOCK: MOV A,5AH CJNE A,#17,BC MOV A,3BH CJ

22、NE A,5BH,BC MOV A,3CH CJNE A,5CH,BC CLR P3.2 RETBC:SETB P3.2 RETLOOP2: MOVA,40H CJNE A,#02H,LOOP ;判断显示日期 LCALL CZ1 ;调用拆字子程序 LP2:LCALL DISP ;调用显示子程序 LCALL KEY;调用键盘子程序 MOV A,47H CJNE A,#01H,LP2 SJMP LOOP2 ; 反复循环主流程 LOOP3:LCALL CZ2 LP3:LCALL DISP LCALL KEY MOV A,48H CJNE A,#01H,LP3 SJMP LOOP DISP:MOV R

23、0,#30H ;显示缓冲单元首地址 MOV R3,#01H ;字位码初值(从最右位起) DISP1:MOV A,40H CJNE A,#01,PDNZ MOV A,48H ;判断闹钟是否进入编辑模式 CJNE A,#01H,NZ PDNZ:MOV A,47H CJNE A,#02H,DISP1_1_C ;判断是否进入编辑模式 NZ:MOV A,43H ;判断闪烁状态 CJNE A,#00H,ZT ;亮 MOV A,R3 LJMP DISP1_1 ZT:MOV A,R3 ;暗 ANL A,41H LJMPDISP1_1DISP1_1_C: MOVA,R3 DISP1_1:MOV DPTR,#0F

24、EFDH ; 8255B口(字位码输出口) MOVX DPTR,A ; 输出字位码 MOV A,R0 ; 取显示数据码 MOVDPTR,#TAB MOVCA,A+DPTR MOV DPTR,#0FEFCH MOVX DPTR,A ; 输出字段码 LCALL D1MS ; 保持显示1毫秒 MOV A,#0FFH MOVX DPTR,A INC R0 ; 指向下一显示缓冲单元 MOV A,R3 ; 取出字位码 JB ACC.7,DISP2 ; 判已显示到最左位否 RL A ; 未完,字位码左移1位 MOV R3,A LJMP DISP1 DISP2: RET ; 转下一位显示;*时间拆字子程序*

25、CZ: MOV R0,#3AH ;秒、分、时单元首地址 MOV R1,#30H ;显示缓冲单元首地址CZ_1:MOV A,R0 ;取当前BCD码 ANL A,#0FH ;保留低4位(个位) MOV R1,A ;送显缓当前个位单元 INC R1 ;指向显缓十位单元 MOV A,R0 ;再取当前BCD码 ANL A,#0F0H ;保留高4位(十位) SWAP A ;交换到低4位 MOV R1,A ;送显缓当前十位单元 INC R1 ;指向显缓下一个个位单元 INC R1 INC R0 ;指向下一个时间BCD码单元 CJNE R0,#3DH,CZ_1 ;未完继续 MOV 32H,#16 MOV 35

26、H,#16 RET ;子程序返回;*日期的拆字子程序*CZ1:MOV R0,#4AH ;天、月、年单元首地址 MOV R1,#30H ;显示缓冲单元首地址CZ1_1:MOV A,R0 ;取当前BCD码 ANL A,#0FH ;保留低4位(个位) MOV R1,A ;送显缓当前个位单元 INC R1 ;指向显缓十位单元 MOV A,R0 ;再取当前BCD码 ANL A,#0F0H ;保留高4位(十位) SWAP A ;交换到低4位 MOV R1,A ;送显缓当前十位单元 INC R1 ;指向显缓下一个个位单元 INC R0 ;指向下一个时间BCD码单元 CJNE R0,#4DH,CZ1_1;未完

27、继续 MOV 36H,#0 MOV 37H,#2 MOV A,32H ADD A, #18 MOV 32H,A MOV A,34H ADD A,#18 MOV 34H,A RET ;*闹钟拆字子程序*CZ2:MOV R0,#5BH ;秒、分、时单元首地址 MOV R1,#33H ;显示缓冲单元首地址CZ2_1:MOV A,R0 ;取当前BCD码 ANL A,#0FH ;保留低4位(个位) MOV R1,A ;送显缓当前个位单元 INC R1 ;指向显缓十位单元 MOV A,R0 ;再取当前BCD码 ANL A,#0F0H ;保留高4位(十位) SWAP A ;交换到低4位 MOV R1,A ;

28、送显缓当前十位单元 INC R1 ;指向显缓下一个个位单元 INC R1 INC R0 ;指向下一个时间BCD码单元 CJNE R0,#5DH,CZ2_1;未完继续 MOV 30H,5AH MOV 31H,#0 MOV 32H,#16 MOV 35H,#16 RET ;子程序返回DONE:POP PSW ;恢复现场 POP ACC RETI ITP: PUSH ACC ;保护现场 PUSH PSW MOV A,40H INC 38H ;每200uS加1 MOV A,38H CJNE A,#50,DONE ;满10mS? MOV 38H,#0;200uS计数单元清0 INC 42H MOV A,

29、42H CJNE A,#20,DONE ;满200MS MOV 42H,#0 MOV A,43H CPL A MOV 43H,A INC 39H ;每200mS加1 MOV A,39H CJNE A,#5,DONE ;满1S? MOV 39H,#0 ;10mS计数单元清0 MOV A,3AH ;秒单元(按BCD码)加1 ADD A,#1 DA A MOV 3AH,A MOV A,46H ADD A,#1 MOV 46H,A CJNE A,#3,QH ;满3S切换 MOV 46H,#0 MOV A,40H CJNE A,#01H,D MOV 40H,#02H LJMPQHD: MOV 40H,#

30、01H QH: MOV A,3AH CJNE A,#60H,DONE ;满1分钟? MOV 3AH,#0 ;秒单元清零 MOV A,3BH ;分钟单元(按BCD码)加1 ADD A,#1 DA A MOV 3BH,A CJNE A,#60H,DONE ;满1小时? MOV 3BH,#0 ;分钟单元清零 MOV A,3CH ;小时单元(按BCD码)加1 ADD A,#1 DA A MOV 3CH,A CJNE A,#24H,DONE ;满24小时? MOV 3CH,#0 ;小时单元清零 MOV A,4AH ;天单元(按BCD码)加1 ADD A,#1 DA A MOV 4AH,A MOV A ,

31、4BH ;查表取得当前月份的天数 ANL A,#0FH MOV 20H,A MOV A, 4BH ANL A,#0F0H SWAP A MOV B ,#10 MUL AB ADD A,20H MOV 20H,A MOV A,4CH ;平年闰年的判断去查表TAB2还是表TAB3 ANL A,#0FH MOV 21H,A ANL A,#0F0H SWAP A MOV B,#10 MUL AB ADD A,21H MOV B,#4 DIV AB MOV A,B CJNE A,#0,TAC MOVA,20H MOV DPTR,#TAB3 ;余数为0则转去查闰年的表 MOVC A,A+DPTR ; LJ

32、MP TAD TAC:MOVA,20H MOV DPTR,#TAB2 ;余数不为0则转去查平年的表 MOVC A,A+DPTR ;输出字位码*/ TAD:CJNE A,4AH,DONE1 ;满一个月? MOV 4AH,#1 ;天单元变为1 MOV A,4BH ;月单元(按BCD码)加1 ADD A,#1 DA A MOV 4BH,A CJNE A,#13H,DONE1 ;满12个月? MOV 4BH,#1 ;月单元变1 MOV A,4CH ;年(按BCD码)加1 ADD A,#1 DA A MOV 4CH,A CJNE A,#99H,DONE1 ;满100年? MOV 4CH,#0 ;年单元清

33、零DONE1:POP PSW ;恢复现场 POP ACC RETI TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;09 显示字段码表 DB 88H,83H,0C6H,0A1H,86H,8EH,0BFH,0C8H ;A-F,-,N,DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H,01H ;0.9. 显示字段码表 TAB2:DB 00H,032H,029H,032H,031H,032H,031H,032H,032H,031H,032H,031H,032H;平年0-12个月的天数 TAB3:DB 00H

34、,032H,030H,032H,031H,032H,031H,032H,032H,031H,032H,031H,032H;闰年0-12个月的天数;*键盘子程序*KEY:MOV DPTR,#0FDFDH ;B口 MOVX A,DPTR ;输入按键状态 CPL A ;取反JZ KD ;若无键闭合则返回 LCALL DELAY ;延时12ms消抖动MOVX A,DPTR CPL A JZ KD ;确认是否有键闭合MOVX A,DPTR MOV B,A ;输入稳定的键状态 KW:MOVX A,DPTR CPL AJNZ KW ;等待键释放(累加器非0则转移) MOV A,B ;取键值JNB ACC.0

35、,K0 ;若是K0闭合则转K0键功能程序JNB ACC.1,K1 ;若是K1闭合则转K1键功能程序JNB ACC.2,K2JNB ACC.3,K3_AJNB ACC.4,K4_AJNB ACC.5,K5_AKD: RET K3_A: LCALL K3 RETK4_A: LCALL K4 RETK5_A: LCALL K5 RETK0: MOV 45H,#00H;切换日期和时间 MOV A,40H CJNE A,#01H,K0_1 MOV 40H,#02H RETK0_1: MOV 40H,#01H RET K1: MOV 45H,#01H;编辑模式的按键 MOV 47H,#02HRET K2:

36、 MOV 45H,#02H ;进入时间修改程序 MOV A,48HCJNE A,#01H,KQ MOV A,40HCJNE A,#01H,K2_1 MOV A,41HJNB ACC.0,K2_AJNB ACC.1,K2_BJNB ACC.3,K2_CJNB ACC.4,K2_DJNB ACC.6,K2_EJNB ACC.7,K2_FRETKQ:LCALL K2_Q RETK2_A: MOV A,30H ADD A,#1 MOV 30H,A CJNE A,#10,Z1 MOV 30H,#0 Z1:RETK2_B: MOV A,31H ADD A,#1 MOV 31H,A CJNE A,#6,Z2

37、 MOV 31H,#0 Z2:RETK2_C:MOV A,33H ADD A,#1 MOV 33H,A CJNE A,#10,Z3 MOV 33H,#0 Z3:RETK2_D:MOV A,34H ADD A,#1 MOV 34H,A CJNE A,#6,Z4 MOV 34H,#0 Z4:RETK2_E:MOV A,36H ADD A,#1 MOV 36H,A MOV A,37H CJNE A,#2,Z9 MOV A,36H CJNE A,#4,Z5 MOV 36H,#0 LJMP Z5 Z9:MOV A,36H CJNE A,#10,Z5 MOV 36H,#0 Z5:RETK2_F:MOV A

38、,37H ADD A,#1 MOV 37H,A CJNE A,#3,Z6 MOV 37H,#0 Z6:RETK2_1:MOV A,41H;进入日期修改程序JNB ACC.0,K2_2JNB ACC.1,K2_3JNB ACC.2,K2_4JNB ACC.3,K2_5JNB ACC.4,K2_6JNB ACC.5,K2_7RETK2_2:MOV A,30H ADD A,#1 MOV 30H,A CJNE A,#10,W1 MOV 30H,#0 W1:RETK2_3:MOV A,31H ADD A,#1 MOV 31H,A CJNE A,#3,W2 MOV 31H,#0 W2:RETK2_4:MO

39、V A,32H ADD A,#1 MOV 32H,A CJNE A,#28,W3 MOV 32H,#18 MOV A,33H CJNE A,#1,W9 MOV A,32H CJNE A,#21,W3 MOV 32H,#18 LJMP W3 W9:MOV A,32H CJNE A,#28,W3 MOV 32H,#18 W3:RETK2_5:MOV A,33H ADD A,#1 MOV 33H,A CJNE A,#2,W4 MOV 33H,#0 W4:RETK2_6:MOV A,34H ADD A,#1 MOV 34H,A CJNE A,#28,W5 MOV 34H,#18 W5:RETK2_7:

40、MOV A,35H ADD A,#1 MOV 35H,A CJNE A,#10,EE MOV 35H,#0 EE: RETK2_Q:MOV A,41HJNB ACC.0,K2_Q1JNB ACC.1,K2_Q2JNB ACC.3,K2_Q3JNB ACC.4,K2_Q4JNB ACC.6,K2_Q5JNB ACC.7,K2_Q6RET;*K2_Q1: ;闹钟调整 MOV A,5AH CJNE A,#15,QQ MOV A,#17 MOV 30H,A MOV 5AH,30H RET QQ: MOV A,#15 MOV 30H,A MOV 5AH,30H RETK2_Q2: MOV 31H,#0 RETK2_Q3: MOV A,33H ADD A,#1 MOV 33H,A CJNE A,#10,Q3 MOV 33H,#0 Q3: RET

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论