




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DIY爱好者毕业论文用51单片机设计时钟 Shaoguan University作者:kesion目 录任 务 书摘 要前 言说 明 书 第 一章 电路原理分析 1-1 显示原理1-2 数码管结构及代码显示1-3 键盘及读数原理1-4 连击功能的实现第 二 章 程序设计思想和相关指令介绍2-1 数据与代码转换2-2 计时功能的实现与中断服务程2-3 时间控制功能与比较指令2-4 时钟误差的分析 附录A 电路图附录B 存储单元地址表附录C 输入输出口功能分配表附录D 定时中断程序流程图附录F 调时功能流程图附录G 程序清单 摘要单片计算机即单片微型计算机。(Single-Chip Microcomputer ),是 集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对时间系统的学习设计,从而达到设计、开发软、硬的能力。 前言本文通过用对一个能实现时钟,日历显示、定时功能的时间系统的学习设计,从而系统的学习了51单片机应用中的数据转换显示,数码管显示原理,动态扫描显示原理,单片机的定时中断原理、及单片机相关指令在各方面的应用。系统由AT89C51、LED数码管、按键、二极管等部分构成,能实现时钟日历的功能:能进行时、分、秒的显示。也具有日历计算、显示和时钟,日历的校准、定时时间的设定,实现三路开关定时输出等功能。文章后附有电路图,程序清单,各数据存储单元的所在地址,输入输出口对应表。以供读者参考。因作者本人也是个初学者,水平有限,难免有疏落不足之处,敬请老师和同学能给与批评正。说明书 系统由AT89C51、LED数码管、按键、发光二极管等部分构成,能实现时间的调整、定时时间的设定,输出等功能。系统的功能选择由SB0、SB1、SB2、SB3、SB4完成。其中SB0为时间校对,定时器调整功能键,按SB 0进入调整状态。SB1为功能切换键。第一轮按动SB1依次进入一路、二路、三路定时时间设置提示程序,按SB3进入各路定时调整状态。定时时间到,二极管发亮。到了关断时间后灭掉。如果不进入继续按SB1键,依次进入时间“年”位校对、“月”位校对、 “日”位校对、“时”位校对、“分”位校对、“秒”位校对状态。不管是进入那种状态,按动SB2皆可以使被调整位进行不进位增量加1变化。各预置量设置完成后,系统将所有的设置存入RAM中,按SB1退出调整状态。上电后,系统自动进入计时状态,起始于“00”时“00”分。SB4为年月日显示转换键,可使原来显示时分秒转换显示年月日。二、电路原理分析 1. 显示原理 电原理图见附图1。由6个共阴极的数码管组成时、分、秒的显示。P0口的8条数据线P0.0 至P0.7 分别与两个CD4511译码的ABCD口相接,P2口的 P2.0至P2.2分别通过电阻R10至R13与VT1至VT3的基极相连接。这样通过P0 口送出一个存储单元的高位、低位BCD显示代码,通过P2口送出扫描选通代码轮流点亮LED1至LED6,就会将要显示的数据在数码管中显示出来。从P0口输出的代码是BCD码,从P2口输出的就是位选码。这是扫描显示原理。 2. 数码管结构及代码显示 共阴LED数码管结构、字段及引脚排列见图2图2共阴LED数码管由8只发光二极管VD1至VD8共阴连接并按“8”字形结构排列而成。这样,我们将这些二极管的正极接高低不同的电位,把所有的负极接地,当正极为高电位时相应的二极管就会导通而发光,从而使数码管呈现不同的字符。而只有P2相应呈现高电位,VT个管导通,LED1的GND与地相接,LED位被选中才具备发光的使能条件;可见,在利用P2口送出位选码,使各位轮流得到发光使能条件的同时,通过P0口分别送出不同的段选码,就会在LED1至LED4中显示出不同的数字来。3 键盘及读数原理键盘是人与微机打交道的主要设备,按键的读取容易引起误动作。可采用软件去抖动的方法处理,软件的触点在闭合和断开的时候会产生抖动,这时触点的逻辑电平是不稳定的,如不采取妥善处理的话,将引起按键命令错误或重复执行,在这里采用软件延时的方法来避开抖动,延时时间20ms.4 连击功能的实现 按下某键时,对应的功能键解释程序得到执行,如操作者没有释放按键,则对应的功能会反复执行,好象连续执行,在这里我们采用软件延时250ms,当按键没释放则执行下一条对应程序。利用连击功能,能实现快速调时操作。三、程序设计思想和相关指令介绍 本系统的主程序主要完成时间显示和定时输出判断功能。而年月日显示和各时间单元进位,时间设定时,调定时间设定时等功能全部在中断服务程序中完成。1数据与代码转换。由前述可知,从P2口输出位选码,从P0口输出段选码,LED就会显示出数字来。但P0口的输出的数据是要BCD码,各存储单元存储的是二进制数,也就是要和显示出的字符表达的含义是不一致的。可见,将要显示的存储单元的数据直接送到P0口去驱动LED数码管显示是不能正确表达的,必须在系统内部将要显示的数据经过BCD码转换后,将各个单元数据的段选代码送入P0口,给CD4511译码后去驱动数码管显示。具体转换过程如下:我们先将要显示的数据装入累加器A中,再将A中的数据转换成高低两位的BCD码,再放回A中,然后将A中的值输出。如:有一个单元存储了45这样一位数,则需转换成四位的BCD码:(0100)(0101)然后放入A中。 A中BCD码,高位四位代表“4”低四位代表“5”同时送给两个译码器中,译码后“45”字就在两个LED中显示出来。 2计时功能的实现与中断服务程序 时间的运行依靠定时中断子程序对时钟单元数值进位调整来实现的。计数器T0打开后,进入计时,满100毫秒后,重装定时。中断一次,满一秒后秒进位,满60秒后即为1分钟,分钟单元进位,60分到了后,时单元进位,24小时满后,天单元进位。这样然后根据进率,得到年、月、日、时、分、秒存储单元的值,并经译码后,通过扫描程序送LED中显示出来,实现时钟计时功能。累加是用指令INC来实现的。 进入中断服务程序以后,执行PUSH PSW和PUSH A将程序状态寄存器PSW的内容和累加器A中的数据保存起来,这便是所谓的“保护现场”. 以保护现场和恢复现场时存取关键数据的存储区叫做堆栈。在软件的控制之下,堆栈可在片内RAM中的任一区间设定,而堆栈的数据存取与一般的RAM存取又有区别,对它的操作,要遵循“后进先出”的原则。3 时钟误差分析 开启定时器/计数器0,使之开始计时,中断后进入中断程序。自停止计数到、计数又开始,中间执行了7条指令,也就是延迟了13个单周期共用时间26us,这样,每个中断的总时间应为为100.026sm,而原来定时是100ms,所以,也就是说每次中断定时多了26um.这样,可改变计数重装值,使每次中断定时时间为99.974sm,加上原来的7条指令所用的时间,正好100sm.计数10次得1s.这样就可得到较精确的计时秒数,然后根据进率,得到时、分的值。4 时间控制功能与比较指令 系统的另一功能就是实现对执行设备的定时开关控制,其主要控制思想是这样的:先将执行设备开启的时间和关闭时间置入RAM某一单元,在计时主程序当中执行几条比较指令,如果当前计时时间与执行设备的设定开启时间相等,就执行一条 CLR指令,将对应的那路P3置为高电位,开启;如果当前计时时间与执行设备设定的关闭时间相等,就执行SETB 对应的P3置低电位,二极管截止,。实现此控制功能用到的比较指令为CJNE A,#direct,rel,其转移条件是累加器A中的值与立即数不等则转移。 参考文献1、 谢自美,电子线路设计、实验、测试 武汉:华中理工大学出版社,20002、 何书森、何华斌实用数字电路原理与设计速成福州:福建科学技术出版社,2000.63、 白驹衍, 单片计算机及应用北京:电子工业出版社, 1999.2显示/定时判断/开定时中断对应P0.3P0.4P0.5输出调用程序条件主程序开始中断T0按SB4?与设定时同?按SB0?中断0中断1进入定时中断程序(最高级)秒分时日月年进位调整时间(改变时间存储值)转换显示年月日 (3S返回)设定定时(三路定时)返回主程序定时中断程序流程图定时中断重装定时常数加100ms 整秒 调整秒单元整分调整分单元整时月判断调整月单元调整年单元整月调整日单元整日调整时单元整年调时功能流程图中断开始(SB0)按键扫描开始按SB1 按SB3进入1路调整年单元单元加1调整2路 按SB2调整月单元)调整秒单元调整分单元调整时单元调整日单元月单元时单元分单元调整3路调整年单元 按SB1 按SB3单元加1 按SB2 按SB1 按SB3单元加1日单元 按SB2中断返回 按SB1 按SB3单元加1 按SB2 按SB1 按SB3单元加1 按SB2 按SB1 按SB3 开关定时 按SB2 按SB1 按SB3 按SB2 按SB1 按SB1 调时功能流程图存储单元分配表读取按键代码表16进制码P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7SB1SB2SB3*FE01111111FD10111111FB11011111存储单元分配表时间单元1组开定时单元1组关2组开2组关3组开3组关Sec 32h 秒Min31h分414051506160Hour30h时424652566266Day35h日434753576367Mou34h月444854586468Year33h年454955596569Sb0Sb1Sb2Sb3Sb41组输出2组输出3组输出各P口功能连接.P3.3P1.0P1.1P1.2P3.2p3.0P3.1P3.4 调整时间、定时中断+-年月日显示转换二极管二极管二极管 程序SEC EQU 32H ;秒 即时时间 伪指令 MIN EQU 31H ;分 HOUR EQU 30H ;时 DAY EQU 35H ;日 MON EQU 34H ;月 YEAR EQU 33H ;年 MIN_1 EQU 41H ;分 定时器1路、开存储单元 HOUR_1 EQU 42H ;时 DAY_1 EQU 43H ; MON_1 EQU 44H ; YEAR_1 EQU 45H ; MIN_11 EQU 40H ;分 定时器1路、关存储单元 HOUR_11 EQU 46H ;时 DAY_11 EQU 47H ;日 MON_11 EQU 48H ;月 YEAR_11 EQU 49H ;年;* ORG 0000H ljmp MAIN ORG 0003H ;中断转换显示年月日、INT0(SB4键) LJMP SHOW ORG 000BH ;计数中断 T0、方式1 LJMP TIME ORG 0013H LJMP CHANGE; 调整时间、定时、INT1(SB0键);-主程序 ORG 0030HMAIN:;-初始化付值 MOV YEAR , #02 MOV MON , #05 MOV DAY , #01 MOV HOUR , #00 MOV MIN , #00 MOV SEC , #00 CLR 40H ;定时单元1路清零 CLR 41H CLR 42H CLR 43H CLR 44H CLR 45H CLR 46H CLR 47H CLR 48H CLR 49H;-开中断 MOV TMOD , #01H ;计数、模式1、T0 MOV TL0, #0B0H ;100SM 计数定时 MOV TH0, #3CH ; clr p3.0 MOV 20H, #0AH ;10次*100SM SETB PT0 ;T0为最高级 SETB TR0 ;允许计数 SETB ET0 ;允许T0中断 SETB EX0 ;允许INT0中断 SETB EX1 ;允许INT1中断 SETB EA ;开总中断;-显示、定时器启动判断LOOP: MOV R1, #30H; 存储单元 MOV R4, #01H; 位选通 MOV R3, #03H; 三组显示NEXT: MOV A , R1 ; MOV B , #10 ;将存储单元转换成两高低两组的BCD码 DIV AB SWAP A ORL A, B MOV P0, A;输出 MOV P2, R4 INC R1 ;下一单元 MOV A, R4 ; RL A ;位移 MOV R4, A LCALL DE5SM ;延时0.5SM DJNZ R3, NEXT ;全扫描显示一偏;-判断定时输出(只编写了一路) CJNE R7, #88H,LOOP ;是8则开,否则、定时已关、转;-开 MOV A, YEAR CJNE A, YEAR_1, LOOP_1;年比较,不等转关 MOV A, MON CJNE A, MON_1, LOOP_1 MOV A, DAY CJNE A , DAY_1,LOOP_1 MOV A, HOUR CJNE A, HOUR_1,LOOP_1 MOV A, MIN CJNE A, MIN_1, LOOP_1 CPL P3.0;-关LOOP_1: MOV A, YEAR CJNE A, YEAR_11, LOOP;年比较 MOV A, MON CJNE A, MON_11, LOOP MOV A, DAY CJNE A , DAY_11,LOOP MOV A, HOUR CJNE A, HOUR_11,LOOP MOV A, MIN CJNE A, MIN_11, LOOP CPL P3.0 LJMP LOOP;-年月日显示中断子程序SHOW: PUSH PSW push ACC PUSH B PUSH 01H PUSH 02H PUSH 03H PUSH 04H MOV R2, #0FFH ;中断扫描次数TURN: MOV R1 , #33H MOV R4 , #01H MOV R3 , #03HNEXT_1: MOV A, R1 MOV B , #10 DIV AB SWAP A ORL A, B MOV P0, A MOV P2, R4 INC R1 RL A MOV R4 ,A LCALL DE5SM DJNZ R3, NEXT_1 DJNZ R2, TURN ;反复显示一定时间后返回 POP 04H POP 03H POP 02H POP 01H POP B POP ACC POP PSW RETI;-计数中断服务子程序TIME: PUSH PSW PUSH ACC PUSH B PUSH 06H MOV TH0 , #3CH;重装计数 MOV TL0 , #0BH; DJNZ 20H, OUT ;转到中断跳出pop程序 MOV 20H, #0AH ; 重装:100*10=1000;-进位程序 INC SEC MOV R6, SEC ; CJNE R6, #60, OUT;比较 MOV SEC , #00 ; INC MIN MOV R6, MIN CJNE R6, #60, OUT MOV MIN , #00 INC HOUR MOV R6 , HOUR CJNE R6 , #25 , OUT MOV HOUR ,#00 INC DAY MOV R5, MON CJNE R5, #1, MON_22;是否1月、不是转2 月 MOV R5, DAY CJNE R5, #32, OUT ; 本月是否益出 INC MON MOV DAY,#1 LJMP OUTOUT: POP 06H POP B POP ACC POP PSW RETIMON_22: MOV R5, MON CJNE R5 , #2 , MON_33;是否2月、不是转3月 MOV A, YEAR ;判断是否瑞年 MOV B, #4 DIV AB MOV A , B JNZ OUT_1;不是则转(A不为零则转) MOV R5 ,DAY CJNE R5,#30, OUT;如是瑞年、判断是否到29天 INC MON MOV DAY ,#1 LJMP OUTOUT_1: MOV R5, DAY CJNE R5, #29, OUT ;平年二月判断 INC MON MOV DAY , #1 LJMP OUTMON_33: MOV R5, MON CJNE R5, #3 , MON_44 MOV R5, DAY CJNE R5 , #32, OUT INC MON MOV DAY , #1 LJMP OUTMON_44: MOV R5, MON CJNE R5,#4, MON_55 MOV R5, DAY CJNE R5 ,#31,OUT INC MON MOV DAY , #1 LJMP OUTMON_55: MOV R5,MON CJNE R5,#5, MON_66 MOV R5,DAY CJNE R5,#32,OUT INC MON MOV DAY,#1 LJMP OUTMON_66: MOV R5, MON CJNE R5,#6, MON_77 MOV R5, DAY CJNE R5 ,#31,OUT INC MON MOV DAY , #1 LJMP OUTMON_77: MOV R5, MON CJNE R5,#7, MON_88 MOV R5, DAY CJNE R5,#32,L1 INC MON MOV DAY , #1L1: LJMP OUTMON_88: MOV R5, MON CJNE R5,#8, MON_99 MOV R5, DAY CJNE R5 ,#32,L2 INC MON MOV DAY , #1L2: LJMP OUTMON_99: MOV R5, MON CJNE R5,#9, MON_00 MOV R5,DAY CJNE R5 ,#31,L3 INC MON MOV DAY , #1L3: LJMP OUTMON_00: MOV R5, MON CJNE R5,#10, MON_AA MOV R5, DAY CJNE R5 ,#32,L4 INC MON MOV DAY , #1L4: LJMP OUTMON_AA: MOV R5, MON CJNE R5,#11, MON_BB MOV R5,DAY CJNE R5,#31,L5 INC MON MOV DAY , #1L5: LJMP OUTMON_BB: MOV R5, DAY CJNE R5 ,#32,L6 INC YEAR MOV MON, #1 MOV DAY , #1L6:LJMP OUT;-校对时间、定时调整中断CHANGE : PUSH PSW PUSH ACC PUSH B PUSH 00H mov p2,#00hSHOW_1: MOV A , #01H;显示1 MOV P0, A MOV P2, #0FFH;三组数码管都显示1路 LCALL READ ;调用读p1口键程序 CJNE A, 01H, SHOW_1;去抖后比较 LCALL DE250SM ; 延时250秒 CJNE A, #0FBH,ttT1 LJMP SB3_1ttT1: CJNE A, #0FEH,SHOW_1 AJMP SHOW_2;-二组显示SHOW_2: MOV A, #02H; 显示2 MOV P0, A MOV P2, #0FFH; LCALL READ CJNE A, 01H, SHOW_2 ;去抖后比较 LCALL DE250SM; 延时250秒 CJNE A, #0FBH,T2;不等转去判断此时SB3按了没 LJMP SB3_2 T2: CJNE A, #0FEH, SHOW_2 AJMP SHOW_3;_-三组显示SHOW_3: MOV A, #03H; 显示3 MOV P0, A MOV P2, #0FFH;位码 LCALL READ CJNE A, 01H,SHOW_3;去抖后比较 LCALL DE250SM;延时250秒 CJNE A, #0FBH, T3;不等转去判断此时SB3按了没 LJMP SB3_3T3: CJNE A, #0FEH, SHOW_3 AJMP SHOW_4;-即时年单元调时、显示SHOW_4: MOV A , YEAR ;调出年单元 MOV B, #10 ;BCD转换 DIV AB SWAP A ORL A, B MOV P0, A ; MOV P2, #01H; LCALL READ LCALL DE250SM CJNE A, 01H, SHOW_4 ;去抖 CJNE A, #0FEH, KEY2_1 ;按SB2 转年调整 AJMP MON_CH ;按SB1往下调月单元KEY2_1:CJNE A, #0FDH, SHOW_4 LCALL YEAR_AD ; 调用年调整 AJMP SHOW_4 ;MON_CH: MOV A , MON ; 月单元调整 MOV B, #10 DIV AB SWAP A ORL A, B MOV P0, A ; MOV P2, #02H; LCALL READ LCALL DE250SM CJNE A, 01H, MON_CH ;去抖 CJNE A, #0FEH, KEY2_2 ;按SB2 转月调整 LJMP DAY_CH ;按SB1往下调日单元KEY2_2:CJNE A, #0FDH, MON_CH LCALL MON_AD ; 调用月调整 LJMP MON_CH ;DAY_CH: MOV A , DAY ; 日单元调整 MOV B, #10 DIV AB SWAP A ORL A, B MOV P0, A ; MOV P2, #04H; LCALL READ LCALL DE250SM CJNE A, 01H, DAY_CH ;去抖 CJNE A, #0FEH, KEY2_3 ;按SB2 转日调整 LJMP HOUR_CH ;按SB1往下调时单元KEY2_3:CJNE A, #0FDH, DAY_CH LCALL DAY_AD ; 调用日调整 LJMP DAY_CHHOUR_CH: MOV A , HOUR ; 时单元调整 MOV B, #10 DIV AB SWAP A ORL A, B MOV P0, A ; MOV P2, #01H; LCALL READ LCALL DE250SM CJNE A, 01H, HOUR_CH ;去抖 CJNE A, #0FEH, KEY2_4 ;按SB2 转时调整 AJMP MIN_CH ;按SB1往下调分单元KEY2_4:CJNE A, #0FDH, HOUR_CH LCALL HOUR_AD ; 调用时调整 AJMP HOUR_CH ;MIN_CH: MOV A , MIN ; 分单元调整 MOV B, #10 DIV AB SWAP A ORL A, B MOV P0, A ; MOV P2, #02H; LCALL READ LCALL DE250SM CJNE A, 01H, MIN_CH ;去抖 CJNE A, #0FEH, KEY2_5 ;按SB2 转分调整 AJMP SEC_CH ;按SB1往下调秒单元KEY2_5:CJNE A, #0FDH,MIN_CH LCALL MIN_AD ; 调用分调整 LJMP MIN_CH ;SEC_CH: MOV A , SEC ; 秒单元调整 MOV B, #10 DIV AB SWAP A ORL A, B MOV P0, A ; MOV P2, #04H; LCALL READ LCALL DE250SM CJNE A, 01H, SEC_CH ;去抖 CJNE A, #0FEH, KEY2_6 ;按SB2 秒调整 LJMP OUT_A ;按SB1跳出KEY2_6: CJNE A, #0FDH, SEC_CH CLR SEC ; 归零 LJMP SEC_CH ;-按SB2定时器年单元加1子程序SB3_2: LJMP SHOW_2 ;二路没编返回SB3_3: LJMP SHOW_3 ;三路没编返回SB3_1: MOV A , YEAR_1 ; 调时年单元 MOV B ,#10 DIV AB SWAP A ORL A,B MOV P0, A MOV P2, #01H LCALL READ LCALL DE250SM CJNE A, 01H, SB3_1 CJNE A, #0FBH, KEY2_7 ;按SB2 转年调整 LJMP MON_111 ;按SB1往下调月单元KEY2_7:CJNE A, #0FDH, SB3_1 INC YEAR_1 ; 1路年单元加1 MOV R5,YEAR_1 CJNE R5,#09,SB3_1 ;益出 MOV YEAR_1, #00H AJMP SB3_1 ;-月单元加1子程序MON_111: MOV A , MON_1 ; 调时月单元显示 MOV B ,#10 DIV AB SWAP A ORL A,B MOV P0, A MOV P2, #02H LCALL READ LCALL DE250SM CJNE A, 01H, MON_111 CJNE A, #0FBH, KEY2_8 ;按SB2 转月调整 LJMP DAY_111KEY2_8: CJNE A,#0FDH,MON_111 INC MON_1 ;1路月单元加1 MOV R5,MON_1 CJNE R5,#13,MON_111;益出 MOV MON_1, #01H AJMP MON_111 ; 转到月显;_-日单元加1子程序DAY_111: MOV A , DAY_1 ; 调时日单元显示提示 MOV B ,#10 DIV AB SWAP A ORL A,B MOV P0, A MOV P2, #04H LCALL READ LCALL DE250SM CJNE A, 01H,DAY_111 CJNE A, #0FBH, KEY2_9 ;按SB2 转日调整 LJMP HOUR_111KEY2_9: CJNE A,#0FDH,DAY_111 INC DAY_1 ;1组日单元加1 MOV R5, DAY_1 CJNE R5,#32,DAY_111;益出 MOV DAY_1, #01H AJMP DAY_111 ; 转到日显;-按SB2时单元加1子程序HOUR_111: MOV A , HOUR_1 ; 调时时单元显示提示 MOV B ,#10 DIV AB SWAP A ORL A,B MOV P0, A MOV P2, #01H LCALL READ LCALL DE250SM CJNE A, 01H,HOUR_111 CJNE A, #0FBH, KEY2_10 ; 按SB2 转时调整 LJMP MIN_111KEY2_10:CJNE A,#0FDH,HOUR_111 INC HOUR_1 MOV R5,HOUR_1 CJNE R5,#24,HOUR_111;益出 MOV HOUR_1, #00H AJMP HOUR_111 ; 转到时显;-分单元加1子程序MIN_111: MOV A , MIN_1 ; 调时分单元、并显示提示 MOV B ,#10 DIV AB SWAP A ORL A,B MOV P0, A MOV P2, #02H LCALL READ LCALL DE250SM CJNE A, 01H,MIN_111 CJNE A, #0FBH, KEY2_11 ;按SB2 转分调整 AJMP OFF_CH ;按SB3往下调定时:关单元KEY2_11: CJNE A, #0FDH, MIN_111 INC MIN_1 ;1路分单元加1 MOV R5, MIN_1 CJNE R5,#60,MIN_111;益处 MOV MIN_1, #00H AJMP MIN_111 ; 转到分显年单元调整OFF_CH: MOV A , YEAR_11 ; 调时年单元 MOV B ,#10 DIV AB SWAP A ORL A,B MOV P0, A MOV P2, #01H LCALL READ LCALL DE250SM CJNE A, 01H, OFF_CH CJNE A, #0FBH, KEY2_F7 ;按SB2 转年调整 LJMP MON_OFF ;按SB1往下调月单元KEY2_F7:CJNE A, #0FDH, OFF_CH INC YEAR_11 ; 1路年单元加1 MOV R5,YEAR_11 CJNE R5,#09,OFF_CH ;益出 MOV YEAR_11, #00H AJMP OFF_CH ;-月单元加1子程序MON_OFF: MOV A , MON_11 ; 调时月单元显示 MOV B ,#10 DIV AB SWAP A ORL A,B MOV P0, A MOV P2, #02H LCALL READ LCALL DE250SM CJNE A, 01H, MON_OFF CJNE A, #0FBH, KEY2_F8 ;按SB2 转月调整 LJMP DAY_OFFKEY2_F8: CJNE A,#0FDH,MON_OFF INC MON_11 ;1路月单元加1 MOV R5,MON_11 CJNE R5,#13,MON_OFF;益出 MOV MON_11, #01H AJMP MON_OFF ; 转到月显;_-日单元加1子程序DAY_OFF: MOV A , DAY_11 ; 调时日单元显示提示 MOV B ,#10 DIV AB SWAP A ORL A,B MOV P0, A MOV P2, #04H LCALL READ LCALL DE250SM CJNE A, 01H,DAY_OFF CJNE A, #0FBH, KEY2_F9 ;按SB2 转日调整 LJMP HOUR_OFFKEY2_F9: CJNE A,#0FDH,DAY_OFF INC DAY_11 ;1组日单元加1 MOV R5, DAY_11 CJNE R5,#32,DAY_OFF;益出 MOV DAY_11, #01H AJMP DAY_OFF ; 转到日显;-按SB2时单元加1子程序HOUR_OFF: MOV A , HOUR_11 ; 调时时单元显示提示 MOV B ,#10 DIV AB SWAP A ORL A,B MOV P0, A MOV P2, #01H LCALL READ LCALL DE250SM CJNE A, 01H,HOUR_OFF CJNE A, #0FBH, KEY2_F10 ; 按SB2 转时调整 LJMP MIN_OFFKEY2_F10:CJNE A,#0FDH,HOUR_OFF INC HOUR_11 MOV R5,HOUR_11 CJNE R5,#24,HOUR_OF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 氨纶抽条密丝绒项目投资可行性研究分析报告(2024-2030版)
- 口腔健康与肌肤护理
- 2025-2030年中国产销化工油漆类行业深度研究分析报告
- 护具系列项目可行性研究报告
- 中国三星盆台行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 智能晒衣架项目可行性研究报告模板
- 2025年中国3G无线网卡行业市场发展现状及投资战略咨询报告
- 2025年中国铰接式卡车行业发展运行现状及投资潜力预测报告
- 2025年中国30头配套餐具行业市场发展前景及发展趋势与投资战略研究报告
- 图书出版合同
- 工程创优质量承诺和保证措施(投标技术部分)
- 年循环再生20万吨高值化改性塑料智能制造项目环境影响报告书
- 软件产品质量评价标准
- 海南省淡水水产养殖行业排污许可证申请与核发技术指南-文昌市珠溪河流域(试行)
- DB32∕T 4073-2021 建筑施工承插型盘扣式钢管支架安全技术规程
- Q∕SY 08124.3-2018 石油企业现场安全检查规范 第3部分:修井作业
- 《幼儿园中班第一学期家长会》 PPT课件
- 槽钢桩支护施工方案
- 土石坝剖面图绘制12.28
- 水利水电工程防渗墙工程质量检测
- 机加产品外观质量检验标准
评论
0/150
提交评论