基于51单片机的数字钟设计_毕业设计论文.doc_第1页
基于51单片机的数字钟设计_毕业设计论文.doc_第2页
基于51单片机的数字钟设计_毕业设计论文.doc_第3页
基于51单片机的数字钟设计_毕业设计论文.doc_第4页
基于51单片机的数字钟设计_毕业设计论文.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

武汉大学电子信息学院电子系统综合设计课程论文基于51单片机的数字钟设计2010 年 6 月 20日目 录1 作品的背景与意义12 功能指标设计13 作品方案设计24 软件设计3附录1 系统电路图6附录2 系统软件代码7电子系统综合设计课程论文1 作品的背景与意义时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用led显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。现在我们利用单片机实现数字时钟计时功能的主要内容,其中at89c51是核心元件同时采用数码管动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”,另外具有校时功能,断电后有记忆功能,恢复供电时可实现计时同步等特点,除此外还实现了万年历和闹钟等的功能。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:ds1302,ds12887,x1203等都可以满足高精度的要求。单片计算机即单片微型计算机。(single-chip microcomputer ),是集cpu、ram、rom、定时、计数和多种接口于一体的微控制器。他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而51单片机是各单片机中最为典型和最有代表性的一种。所以综上所述,此次实验中所完成的数字钟有着强大的功能和良好的市场前景,复合电子类产品的发展趋势。2 功能指标设计2.1 基本功能1.设计一个精确的1秒定时器; 2.根据1秒定时器,设计一个带小时、分钟、秒的时钟,并将小时、分钟、秒显示在led上; 3.设计小时、分钟、秒的修改按键,可分别调整小时、分钟、秒(按键设计参考电子表); 2.2 拓展功能1.增加小时、分钟、秒的键盘直接修改功能; 2.设计闹钟功能,最多支持5个闹钟,可分别查看和修改闹钟时间,可分别设置闹钟开关。 3.增加万年历功能。3 作品方案设计3.1设计要求基本设计1设计一个精确的一秒定时器2运用一秒的定时器设计出有时、分、秒的数字钟,并显示在led数码管上3设置按键,能够修改数字钟时间扩展设计:1.设计闹钟功能,能够查看和修改闹钟时间及开关状态2.设计万年历功能,实现日月年的正常进位,能够查看和修改年月日,能够自动区分大小月和平闰年3.2模块划分 初始化程序 设定初值,中断初始化主程序 程序主要执行部分,对子程序(显示、按键设置,闹钟、万年历功能)进行调用定时器中断服务 中断走时:秒分时显示程序 刷新8位数码管来显示时间、日期及扩展功能设置界面按键设置 通过对按键的操作实现时间及扩展功能的设置。闹钟功能 修改闹铃时间,闹铃开关的置换,修改位闪烁加以区分万年历功能修改日期,同样的修改位闪烁加以区分 3.3模块设计概述1.按键设置通过调整选择键set_key选择调整位,选中位开始闪烁,此时再按增加键add_key或减少键dec_key调整选中位,如果长按add_key或dec_key,系统识别后则进行调时快进,此时停止闪烁,方便人眼观察。同时还增加了调秒功能:如果选中位是秒,则按增加键或减少键都是将秒清零。3.时间设置进入时间设置界面后,通过调整选择键set_key选择调整位,选中位闪烁。按增加键add_key或减少键dec_key设置所需要的时间。4.闹钟设置进入闹钟设置界面后,通过调整选择键set_key选择调整位,选中位闪烁。按增加键add_key或减少键dec_key设置所需要的时间。与时间设置不同的是,闹钟设置里增加了开关设置。5.万年历设置 进入万年历设置界面后,通过调整选择键set_key选择调整位,选中位闪烁。按增加键add_key或减少键dec_key设置所需要的时间。万年历设置里增加了大小月和平闰年的判别。4 软件设计4.1 主程序流程图4.2闹钟程序流程4.3万年历程序流程4.4中断系统结构图附录一附录二/*/初始化mov sp,#60h;栈指针地址赋值mov 3ch,#0ch;设置界面修改位的闪烁频率 具体代码在serve 1秒中断服务中mov 37h,#0ffh;临时地址 预留给39hmov 39h,#0ffh;段位标志 8位数据对应8个数码管 为0的那位数码管始终暗mov 3ah,#11111101b;界面转换标志*01为时间界面 取反后 *10为万年历界面 *00为设置闹钟界面clr a ;时间万年历初始化 时间00:00:00 万年历2000。01。01mov 23h,a;时mov 22h,a ;分mov 21h,a ;秒mov 33h,#01h;日mov 34h,#01h ;月mov 35h,a;年 只能显示2000-2099的时间mov 3dh,a ;数码管闪烁开关 初始化为关闭状态 取反后 11111111 打开mov 40h,a ;闹钟设置界面预留地址地址mov 41h,amov 42h,amov 43h,amov 44h,amov 45h,amov 46h,amov 47h,amov 50h,a ;闹钟1 时mov 51h,a ;闹钟1 分mov 52h,a ;闹钟1 秒mov 0ah,a ;闹钟1 开关 00000000为关闭状态 取反后打开闹钟1mov 53h,a ;同上mov 54h,amov 55h,amov 0bh,amov 56h,amov 57h,a ;同上mov 58h,amov 0ch,amov 59h,a ;同上mov 5ah,amov 5bh,amov 0dh,amov 5ch,a ;同上mov 5dh,amov 5eh,amov 0eh,a*/org 0000h;程序入口地址 ljmp start org 000bh;定时器0中断入口地址 ljmp timer_0org 0300h/*程序开始,初始化*/ start: setb 48h;使用一个bit位用于调时闪烁标志setb 47h;使用一个bit位用于产生脉冲用于调时快进时基mov r1,#0;调整选择键功能标志:0正常走时、1调时、2调分、3调秒mov 20h,#00h;用于控制秒基准时钟源的产生 mov 21h,#00h;清零秒寄存器mov 22h,#00h;清零分寄存器mov 23h,#00h;清零时寄存器mov 24h,#00h;用于控制调时闪烁的基准时钟的产生mov ip,#02h;ip,ie初始化 mov ie,#82h mov tmod,#01h;设定定时器0工作方式1mov th0,#3ch mov tl0,#0b0h;赋定时初值,定时50ms setb tr0;启动定时器0 mov sp,#40h;重设堆栈指针/*主程序*/ main: lcall display ;调用显示子程序 lcall key_scan ;调用按键检测子程序 jz main;无键按下则返回重新循环lcall set_key ;调用选择键处理子程序jb 46h,main;如果已进行长按调整(调时快进),则不再执行下面的单步调整 lcall add_key;调用增加键处理子程序,加一lcall dec_key;调用减少键处理子程序,减一 ljmp main ;重新循环 /*定时器中断服务程序*/ timer_0: push acc push psw ;保护现场mov th0,#3chmov tl0,#0b0h ;重新赋定时初值 cpl 47h;产生脉冲用于调时快进时基inc 24hmov a,24hcjne a,#10,add_time;产生0.5秒基准时钟,用于调时闪烁cpl 48h;取反调时闪烁标志位mov 24h,#00hadd_time:;走时inc 20h mov a,20h cjne a,#20,reti1;产生1秒基准时钟 mov 20h,#00h ;一秒钟时间到,清零20hmov a,21hadd a,#01hda a;作十进制调整mov 21h,a cjne a,#60h,reti1 mov 21h,#00h ;一分钟到 mov a,22h add a,#01h da a mov 22h,a cjne a,#60h,reti1 mov 22h,#00h ;一小时到 mov a,23h add a,#01h da a mov 23h,a cjne a,#24h,reti1 mov 23h,#00h ;到24点,清零小时reti1: pop psw pop acc ;恢复现场reti ;中断返回/*显示处理*/ display:mov a,21h ;秒anl a,#0fh mov 2fh,a;转换出秒个位,存入2fhmov a,21h anl a,#0f0h swap a mov 2eh,a;转换出秒十位,存入2ehjb 46h,min;如果长按按键(调时快进),则跳过闪烁处理程序cjne r1,#3,min;如果r1为3,闪烁秒位待调整jb 48h,minmov 2fh,#0ah;使该位为10,查表得到使该位不显示的输出mov 2eh,#0ahmin:mov a,22h ;分 anl a,#0fh mov 2dh,a;转换出分个位,存入2dhmov a,22h anl a,#0f0h swap a mov 2ch,a;转换出分十位,存入2chjb 46h,hour;如果长按按键(调时快进),则跳过闪烁处理程序cjne r1,#2,hour;如果r1为2,闪烁分位待调整 jb 48h,hourmov 2dh,#0ah;使该位为10,查表得到使该位不显示的输出mov 2ch,#0ahhour:mov a,23h ;时 anl a,#0fh mov 2bh,a;转换出时个位,存入2bhmov a,23h anl a,#0f0h swap a mov 2ah,a;转换出时十位,存入2ahjb 46h,disp;如果长按按键(调时快进),则跳过闪烁处理程序cjne r1,#1,disp;如果r1为1,闪烁时位待调整 jb 48h,dispmov 2bh,#0ah;使该位为10,查表得到使该位不显示的输出mov 2ah,#0ah/*数码管动态扫描显示*/disp:mov dptr,#tablemov a,2fhmovc a,a+dptrmov p0,aclr p2.7lcall delaysetb p2.7;显示秒个位mov a,2ehmovc a,a+dptrmov p0,aclr p2.6lcall delaysetb p2.6;显示秒十位mov a,#0bfhmov p0,aclr p2.5lcall delaysetb p2.5;显示“-”mov a,2dhmovc a,a+dptrmov p0,aclr p2.4lcall delaysetb p2.4;显示分个位mov a,2chmovc a,a+dptrmov p0,aclr p2.3lcall delaysetb p2.3;显示分十位mov a,#0bfhmov p0,aclr p2.2lcall delaysetb p2.2;显示“-”mov a,2bhmovc a,a+dptrmov p0,aclr p2.1lcall delaysetb p2.1;显示时个位mov dptr,#table1;该位使用table1以消除前置0mov a,2ahmovc a,a+dptrmov p0,aclr p2.0lcall delaysetb p2.0;显示时十位ret /*按键检测子程序*/ key_scan: clr 46h;关闭长按调整(调时快进)标志mov p1,#0ffh ;将p1口设置成输入状态 mov a,p1 cpl a anl a,#07h;p1口低3位连接3个按键,只判断该3位 jz exit_key ;无键按下则返回 lcall delay;延时去抖动mov a,p1;重新判断 cpl a anl a,#07h jz exit_key ;键盘去抖动 mov r5,a ;临时将键值存入r5mov r4,#00h;用于控制调时快进速度;设置为00h是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进 loop:;进入长按处理lcall display;使长按时显示正常 mov a,p1 cpl a anl a,#07hjb 47h,loop1inc r4;调时快进间隔时间基准加1loop1:cjne r1,#03h,loop2;如果调秒时长按,则不处理ljmp loop3loop2:cjne r4,#99h,loop3mov r4,#70h;确认用户长按后,重新设定起始值,加快调时快进速度setb 46h;长按调整(调时快进)标志lcall add_keylcall dec_keyloop3:jnz loop ;等待键释放mov a,r5;输出键值retexit_key:ret/*延时子程序*/delay:mov r7,#150 djnz r7,$ret /*选择键处理子程序*/ set_key: cjne r5,#01h,exit;选择键键值inc r1;调整选择功能标志加一cjne r1,#4,exitmov r1,#0mov 24h,#00h;调时闪烁基准清零 ret/*增加键处理子程序*/ add_key: cjne r5,#02h,exit;增加键键值cjne r1,#01h,next1;选择键功能标志为1,调时,否则跳出mov a,23hadd a,#01hda amov 23h,acjne a,#24h,exitmov 23h,#00hnext1:cjne r1,#02h,next2;选择键功能标志为2,调分,否则跳出mov a,22hadd a,#01hda amov 22h,acjne a,#60h,exitmov 22h,#00hnext2:cjne r1,#03h,exit;选择键功能标志为3,调秒,否则跳出mov 21h,#00h;如增加键按下直接清零秒ret/*减少键处理子程序*/ dec_key: cjne r5,#04h,exit;减少键键值cjne r1,#01h,next3;选择键功能标志为1,调时,否则跳出mov a,23hadd a,#99hda amov 23h,acjne a,#99h,exitmov 23h,#23hnext3:cjne r1,#02h,next4;选择键功能标志为2,调分,否则跳出mov a,22hadd a,#99hda amov 22h,acjne a,#99h,exitmov 22h,#59hnext4:cjne r1,#03h,exit;选择键功能标志为3,调秒,否则跳出mov 21h,#00h;如较少键按下直接清零秒ret/*万用返回子程序*/exit: ret/*数码管字形编码表*/table: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0ffh ;字形显示编码table1:db 0ffh,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0ffh ;小时位的十位数编码,该位如果为0则不显示/闹钟检测mov a,0ahjz nao2 ;检测闹钟开关 若关检测下一个闹钟,否则检测时间是否为闹钟设定时间mov a,30hcjne a,50h,nao2mov a,31hcjne a,51h,nao2mov a,32hcjne a,52h,nao2ajmp xiang ;时间为闹钟设定时间吻合 进入闹铃程序 下同nao2:mov a,0bhjz nao3mov a,30hcjne a,53h,nao3mov a,31hcjne a,54h,nao3mov a,32hcjne a,55h,nao3ajmp xiangnao3:mov a,0chjz nao4mov a,30hcjne a,56h,nao4mov a,31hcjne a,57h,nao4mov a,32hcjne a,58h,nao4ajmp xiangnao4:mov a,0dhjz nao5mov a,30hcjne a,59h,nao5mov a,31hcjne a,5ah,nao5mov a,32hcjne a,5bh,nao5ajmp xiangnao5:mov a,0ehjz bumov a,30hcjne a,5ch,bumov a,31hcjne a,5dh,bumov a,32hcjne a,5eh,buajmp xiang/检测独立按键bu: jb t0,zhu1;检测s19是否按下 按下进入万年历界面,否则检测矩阵键盘mov a,3ah;界面转换标志取反即可使得时间和万年历界面相互转换cpl amov 3ah,a/检测矩阵键盘/检测到按键1,2,3,4,5时进入对应的闹钟设置界面 检测到0bh(对应s11)进入时间设置界面 检测到0ch(对应s12)进入万年历设置界面/若未检测到按键 则跳回主程序继续下一个检测周期zhu1:mov r7,#0fhacall jianceanjian ;矩阵键盘检测子程序 将检测到的键值存入r7cjne r7,#0fh,zhu2ajmp zhuxunhuanzhu2:cjne r7,#0bh,zhu3ajmp shijianshezhizhu3:cjne r7,#0ch,zhu4ajmp wannianlishezhizhu4:cjne r7,#01h,zhu5ajmp naozhongshezhizhu5:cjne r7,#02h,zhu6ajmp naozhongshezhizhu6:cjne r7,#03h,zhu7ajmp naozhongshezhizhu7:cjne r7,#04h,zhu8ajmp naozhongshezhizhu8:cjne r7,#05h,zhuxunhuan0ajmp naozhongshezhizhuxunhuan0: ajmp zhuxunhuan/年月日校正子程序 用于万年历进位和万年历设置 防止出现不存在的时间nyr:mov a,33hcjne a,#32,month ;日为32时,月进位日置1mov 33h,#01hajmp month0month:cjne a,#31,month1 ;日为31时 分辨大小月及2月mov a,34hcjne a,#4,month2mov 33h,#01hajmp month0month2:cjne a,#2,month6mov 33h,#01h ajmp month0month6:cjne a,#6,month9mov 33h,#01hajmp month0month9:cjne a,#9,month11mov 33h,#01hajmp month0month11:cjne a,#11,return0mov 33h,#01hajmp month0month1: cjne a,#30,month29 ;日为30时分辨2月 mov a,34hcjne a,#02h,return0mov 33h,#01hajmp month0month29:cjne a,#29,return0 ;日为29时分辨闰平年2月mov a,34hcjne a,#02h,return0mov a,35hmov b,#04hdiv abmov a,bjnz monoajmp return0mono:mov 33h,#01hmonth0: mov a,#01h ;月进位add a,34hmov 34h,acjne a,#0dh,return0mov 34h,#01hmov a,#01hadd a,35hmov 35h,acjne a,#100,return0 ;年最多只能99mov 35h,#00return0: ret/*/屏幕刷新中断xianshi:push bpush dphpush dpl push pswpush accmov th1,#0dfhmov tl1,#0e0hmov a,3ahjnb acc.0,wannianli ;界面显示判断/时间界面mov a,21hmov b,#0ah div abmov 10h,bmov 11h,amov a,22hmov b,#0ahdiv abmov 12h,bmov 13h,amov a,23hmov b,#0ahdiv abmov 14h,bmov 15h,amov 16h,#0ahmov 17h,#0ahajmp liang/万年历界面wannianli:jnb acc.1,shezhimov a,33hmov b,#0ah div abmov 10h,bmov 11h,amov a,34hmov b,#0ahdiv abmov 12h,bmov 13h,amov a,35hmov b,#0ahdiv abmov 14h,bmov 15h,amov 16h,#00hmov 17h,#02hajmp liang/闹钟设置界面shezhi:mov 10h,40hmov 11h,41hmov 12h,42hmov 13h,43hmov 14h,44hmov 15h,45hmov 16h,46hmov 17h,47h/万年历设置wannianlishezhi:mov 3ah,#0feh ;转换设置界面mov 39h,#11011111b ;设置闪烁位mov 37h,39hmov 3dh,#0ffh ;开闪烁开关wm: acall nyr ;校正 万年历jb t1,ws1 ;s20 按下 退出设置界面mov 39h,#0ffh ;关闪烁mov 3dh,#00h ;闪烁开关 关mov 3ah,#11111101b ;转换成时间设置界面ajmp zhuxunhuanws1: jb int0,ws2 ;修改位 右移 同上mov a,37hcjne a,#11111110b,wss0rr arr arramov 37h,as20:jnb int0,s20ajmp wmwss0:rr amov 37h,as21:jnb int0,s21 ajmp wmws2: jb int1,wm1 ;修改位左移mov a,37hcjne a,#11011111b,wss1rl arl arl amov 37h,as23:jnb int1,s23ajmp wmwss1:rl amov 37h,as24:jnb int1,s24ajmp wm/矩阵键盘检测 修改万年历 wm1:mov r7,#0fhacall jianceanjiancjne r7,#0fh,wsjsz1ajmp wmwsjsz1:mov a,37h;检测修改位jb acc.5,wsjsz2/修改年十位mov a,35hmov b,#0ah div abmov 1fh,bmov a,r7mov b,#0ahmul abadd a,1fhmov 35h,amov a,37hrr amov 37h,aajmp wmwsjsz2:jb acc.4,wsjsz3/修改年个位mov a,35hmov b,#0ahdiv abmov b,#0ahmul abadd a,r7mov 35h,amov a,37hrr amov 37h,aajmp wmwsjsz3:jb acc.3,wsjsz4/修改月十位 只能为0,1 但月个位不为0,1,2是不能修改为1月个位为0时不能修改为0cjne r7,#00h,wsj1mov a,34hmov b,#0ahdiv abmov a,bcjne a,#00h,wled4ajmp wmmmwsj1:cjne r7,#01h,wmmmmov a,34hmov b,#0ahdiv abmov a,bcjne a,#00h,l1ajmp wled4l1: cjne a,#01h,l2ajmp wled4l2: cjne a,#02h,wmmmajmp wled4wmmm:ljmp wmwled4:mov a,34hmov b,#0ahdiv abmov 1fh,bmov a,r7mov b,#0ahmul abadd a,1fhmov 34h,amov a,37hrr amov 37h,aajmp wmwsjsz4:jb acc.2,wsjsz5/修改月个位 但月十位为1时只能修改为0,1,2 月十位为0时不能修改为0mov a,34hmov b,#0ahdiv abcjne a,#00h,wj0cjne r7,#00h,wled3ajmp wwmwj0:cjne r7,#00h,wj1ajmp wled3wj1: cjne r7,#01h,wj2ajmp wled3wj2: cjne r7,#02h,wwmajmp wled3wled3:mov b,#0ahmul abadd a,r7mov 34h,amov a,37hrr amov 37h,awwm: ajmp wmwsjsz5: jb acc.1,wsjsz6/修改日十位 只能为0,1,2,3 日个位不为0,1时不能修改为3cjne r7,#00h,wsj10ajmp wled2wsj10: cjne r7,#01h,wsj20ajmp wled2wsj20:cjne r7,#02h,wsj30ajmp wled2wsj30:cjne r7,#03h,wwmmov a,33hmov b,#0ahdiv abmov a,bcjne a,#00h,l3ajmp wled2l3: cjne a,#01h,wwmajmp wled2wled2:mov a,33hmov b,#0ahdiv abmov 1fh,bmov a,r7mov b,#0ahmul abadd a,1fhmov 33h,amov a,37hrr amov 37h,aajmp wmwsjsz6:/修改日个位 日十位为3时 只能修改为0,1 mov a,33hmov b,#0ahdiv abcjne a,#00h,ll4cjne r7,#00h,wled1ajmp wmll4: cjne a,#03h,wled1cjne r7,#00h,wj4ajmp wled1wj4:cjne r7,#01h,wwmajmp wled1wled1:mov b,#0ahmul abadd a,r7mov 33h,amov 37h,#11011111bajmp wm/*/矩阵按键检测子程序jianceanjian:mov dptr,#8000hmov a,#0f0hmovx dptr,amov dptr,#8000hmovx a,dptr cpl ajnz xiaodouretxiaodou:/acall delaymov a,#0f0hmov dptr,#8000hmovx a,dptrcpl ajnz panretpan: mov dptr,#8000hmov a,#11111110bmovx dptr,amov dptr,#8000hmovx a,dptrjnb acc.0,key10;低电位说明按键在该位jnb acc.1,key20jnb acc.2,key30jnb acc.3,key40mov dptr,#8000hmov a,#11111101bmovx dptr,amov dptr,#8000hmovx a,dptrjnb acc.0,key50jnb acc.1,key60jnb acc.2,key70jnb acc.3,key80mov dptr,#8000hmov a,#11111011bmovx dptr,amov dptr,#8000hmovx a,dptrjnb acc.0,key90jnb acc.1,key00jnb acc.2,tuijnb acc.3,key0c0retkey10:mov r7,#01hretkey20:mov r7,#02hretkey30:mov r7,#03hretkey40:mov r7,#04hret key50:mov r7,#05hretkey60:mov r7,#06hretkey70:mov r7,#07hretkey80:mov r7,#08hretkey90:mov r7,#09hretkey00:mov r7,#00hrettui:mov r7,#0bhretkey0c0:mov r7,#0chret /*/闹铃响 xiang:clr p1.0/acall mdelay/setb p1.0jb t1,xiang ;s20 退出闹铃 跳回主循环setb p1.0ajmp zhuxunhuan/*/闹钟设置naozhongshezhi:/检测是哪个闹钟 并初始化闹钟设置cjne r7,#01h,nz2mov a,50hmov b,#0ahdiv abmov 45h,amov 44h,bmov a,51hmov b,#0ahdiv abmov 43h,amov 42h,bmov a,52hmov b,#0ahdiv abmov 41h,amov 40h,bmov 09h,#50hmov 47h,#01hmov 08h,#0ahajmp nanjiannz2:cjne r7,#02h,nz3mov a,53hmov b,#0ahdiv abmov 45h,amov 44h,bmov a,54hmov b,#0ahdiv abmov 43h,amov 42h,bmov a,55hmov b,#0ahdiv abmov 41h,amov 40h,bmov 09h,#53hmov 47h,#02hmov 08h,#0bhajmp nanjiannz3:cjne r7,#03h,nz4mov a,56hmov b,#0ahdiv abmov 45h,amov 44h,bmov a,57hmov b,#0ahdiv abmov 43h,amov 42h,bmov a,58hmov b,#0ahdiv abmov 41h,amov 40h,bmov 09h,#56hmov 47h,#03hmov 08h,#0chajmp nanjiannz4:cjne r7,#04h,nz5mov a,59hmov b,#0ahdiv abmov 45h,amov 44h,bmov a,5ahmov b,#0ahdiv abmov 43h,amov 42h,bmov a,5bhmov b,#0ahdiv abmov 41h,amov 40h,b mov 09h,#59hmov 47h,#04h mov 08h,#0dhajmp nanjiannz5:mov a,5chmov b,#0ahdiv abmov 45h,amov 44h,bmov a,5dhmov b,#0ahdiv abmov 43h,amov 42h,bmov a,5ehmov b,#0ahdiv abmov 41h,amov 40h,bmov 09h,#5chmov 47h,#05hmov 08h,#0ehajmp nanjiannanjian:mov 3ah,#11111100b ;界面转换成闹钟设置界面mov 39h,#11011111bmov 37h,39hmov 3dh,#0ffh ;开闪烁nm: mov r1,08hjb t0,xia1 ;s19 闹钟开关mov a,r1cpl amov r1,axia1:mov a,r1jz xia2mov 46h,#0bhjmp xia3xia2:mov 46h,#0ahxia3: jb t1,ns1 ;s20 退出闹钟设置 跳回主程序/闹钟数据保存mov 39h,#0ffhmov 3dh,#00hmov 3ah,#11111101bmov r1,09hmov a,45hmov b,#0ahmul abadd a,44hmov r1,ainc r1mov a,43hmov b,#0ahm

温馨提示

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

评论

0/150

提交评论