资源描述
摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。而51 单片机是各单片机中最为典型和最有代表性的一种。本设计是以AT89C51 芯片为核心,辅以必要的外围电路,设计了一个结构简单的数字音乐闹钟,它由5V 直流电源供电。在硬件方面,除了CPU 外,使用六个七段LED 数码管来进行显示,LED 采用的是动态扫描显示,通过LED 能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用汇编语言编程。整个电子钟系统能完成时间的显示、调时和定时闹钟的功能。选用单片机最小系统应用程序,添加比较程序、时间调整程序及音乐程序。通过时间比较程序触发蜂鸣,实现闹钟功能,完成设计所需求的软件环境。测试程序的可行性并用Proteus 进行仿真。关键字:单片机 LED 闹钟 目录摘要第一章 概述1第二章 系统总体方案及硬件设计22.1总体设计22.3系统时钟电路设计22.3系统复位电路的设计22.4闹钟指示电路设计22.5电子闹钟的显示电路设计3第三章 软件设计43.1概述43.2主模块的设计43.3基本显示模块设计53.4时间设定模块设计53.5闹铃功能的实现6第四章 PROTEUS软件仿真8总结9致谢10参考文献11附录:源程序代码12第1章 概述本设计数字音乐闹钟的设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机数字音乐闹钟。定时闹钟设计可采用数字电路实现,也可以采用单片机来完成。定时闹钟是用数字集成电路构成的,用数码管显示“时”,“分”,“秒”的现代计时装置。单片机具有集成度高、功能强、通用性好、特别是它能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领域。所以在该设计中采用单片机AT89C51来完成定时闹钟的设计。它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外, AT89C51的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。AT89C51单片机结合七段显示器设计的简易定时闹铃时钟,可以设置现在的时间及显示闹铃设置时间,若闹铃时间到则播放音乐。按K4键退出音乐播放并返回时间显示界面。否则音乐一直播放。设计内容包括了秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分的设计。采用四个开关来控制定时闹钟的工作状态,分别为:K1、设置显示时间和闹钟的小时;K2、设置显示时间的小时以及设置闹钟的开关;K3、设置分钟和闹钟的分钟;K4、设置完成退出。设计准备中根据具体的要求,查找资料,然后按要求根据已学过的时钟程序编写定时闹钟的程序,依据程序利用Proteus软件进行了仿真试验,对出现的问题进行分析和反复修改源程序,最终得到正确并符合要求的结果。第2章 系统总体方案及硬件设计2.1 总体设计电子闹钟应包括秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分。按键功能说明:K1、设置显示时间和闹钟的小时;K2、设置显示时间的小时以及设置闹钟的开关;K3、设置分钟和闹钟的分钟;K4、设置完成退出。电子闹钟的系统框图如下所示:AT89C51复位、时钟等电路按钮电路6位数码管显示电路闹铃声指示电路电源系统 图1电子闹钟的主电路指的是图中虚线框内部分,主要涉及到CPU电路和按键按钮电路。主机的设计具体地说有:1)系统时钟电路设计;2)系统复位电路设计;3)按键与按钮电路设计;4)闹铃声指示电路设计。2.2 系统时钟电路设计对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。但由于原理图中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在本闹钟系统的实际应用中一定要注意正确选择参数(3010 PF),并保证对称性(尽可能匹配),选用正牌厂家生产的瓷片或云母电容,如果可能的话,温度系数要尽可能低。实验表明,这2个电容元件对闹钟的走时误差有较大关系。2.3 系统复位电路的设计智能系统一般应有手动或上电复位电路。复位电路的实现通常有两种方式:)RC复位电路;)专用监控电路。前者实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。本次毕业设计采用了上电按钮电平复位电路。2.4 闹钟指示电路设计闹铃指示可以有声或光两种形式。本系统采用声音指示。关键元件是蜂鸣器。蜂鸣器有无源和有源两种,前者需要输入声音频率信号才能正常发声,后者则只需外加适当直流电源电压即可,元件内部已封装了音频振荡电路,在得电状态下即起振发声。市场上的有源蜂鸣器分为3、5、6等系列,以适应不同的应用需要。闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能。2.5 电子闹钟的显示电路设计本次课程设计采用了6位数码管显示电路。在6位LED显示时,为了简化电路,降低成本,采用动态显示的方式, 6个LED显示器共用一个8位的I/O, 6位LED数码管的位选线分别由相应的P2. 0P2. 5控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即P0口。译码显示电路将“时”、“分”、“秒”计数器的输出状态靠七段显示译码器译码,通过6位LED七段显示器显示出来。到达定时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现闹铃。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整的。第3章 软件设计3.1 概述软件设计的重点在于秒脉冲信号的产生、显示的实现、以及按键的处理等方面。基于软件的秒脉冲信号通常有延时法和定时中断法。延时法一般采用查询方式,在延时子程序前后必然需要查询和处理的程序,导致误差的产生,因此其秒脉冲的精度不高;中断法的原理是,利用单片机内部的定时器溢出中断来实现。例如,设定某定时器每100ms中断1次,则10次的周期为1s。本系统中所使用的晶振频率为12MHZ。3.2 主模块的设计主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终的功能的多少和性能的好坏。本系统的主模块的程序框图如下图2所示:系统初始化定时初始化中断初始化串口初始化显示待机指示符设定闹铃时间判设置闹铃时间否?显示刷新启动走时有关变量初始化刷新显示判时或分变化否?秒指示判秒到否?闹铃判是否到闹铃时间?延时YYYY 图 23.3 基本显示模块设计基本显示模块设计的重点是由显示代码取得相应的段码,显示段码数据的并行发送,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。3.4 时间设定模块设计时间设定模块的设计要点是按键的去抖处理与“一键多态”的处理。即只涉及4个键完成了6位时间参数的设定。软件法去抖动的实质是软件延时,即检测到某一键状态变化后延时一段时间,再检测该按键的状态是否还保持着,如是则作为按键处理,否则,视为抖动,不予理睬。去抖中的延时时间一般参考资料多描述为10ms左右,实际应用中,应大于20ms,否则,会导致按一次作多次处理,影响程序正常执行。“一键多态”即多功能键的实现思想是,根据按键时刻的系统状态,决定按键采取何种动作,即何种功能。其流程图如下图3所示:设置键吗?设置模块初始化将在编参数送显示缓冲区闪烁标志为真?将当前位的显示代码置暗代码调基本显示模块刷新显示设置键吗?当前编辑位下移(下一位)当前编辑的是分各位?结束设定键吗?根据当前位的性质分别进行处理(含上下限判断) 图43.5 闹铃功能的实现闹铃功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行闹铃判别。译码显示电路将“时”、“分”、“秒”计数器的输出送到七段显示译码驱动器译码驱动,通过六个七段LED显示器显示出来。闹铃电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动蜂鸣器发声实现报时。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。其流程图如下所示:时十位、个位,分十位、个位改变了设置闹铃标志是否设置了闹铃清除闹铃标志判当前时间是设定时间中断返回中断返回闹铃判别处理图5.1 图5.2考虑到实用性,在该电子钟的设计中修改定时或调整时间时采用了闪烁,在编程上,首先进行了初始化定义了程序的入口地址以及中断的入口地址,在主程序的开始定义了一组固定单元用来存储计数的秒,分,时。在显示程序段中主要进行了闪烁的处理,采用定时器中断置标志位,再与位选相互结合的方法来控制调时或定时中的闪烁。时,分,秒显示则是用了软件译码(查表)的方式,再用了一段固定的程序段进行进制转化。初始化之后,用中断方式对其计数,计数的同时采用了定时器比较的方法,比较当前计数时间与定时时间是否相等,若相等则将闹铃标志位置数,闹钟响。第四章 Proteus软件仿真本次课程设计所采用的程序调试软件为VM集成调试软件,所采用的仿真软件 Proteus6 Professional软件。本次试验的效果图如下所示:性能及误差分析该电子钟有四个按键: K1, K2、K3和K4键。K1、设置显示时间和闹钟的小时;K2、设置显示时间的小时以及设置闹钟的开关;K3、设置分钟和闹钟的分钟;K4、设置完成退出。经测试该电子钟在软件的编程过程中所产生的误差比较小。另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累计误差很小,可以忽略。仿真部分采用Proteus6 Professional软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。总结通过本次毕业设计较系统地掌握有关单片机控制的设计思想和设计方法,主要对AT89C51的结构、功能、内部资源等了解并对其进行测试和加以应用的知识得到学习。由于是在我们短学期实习之后才来始写的,我们实习做的是电子钟,所以对时钟有了一定的掌握。我在原来的功能上增加了音乐闹钟的功能。在本设计中尽量做到了硬件电路简单稳定,充分发挥软件编程的优点,减小因元器件精度不够引起的误差。由于时间有限和本身知识水平的发挥,我们认为本系统还有需要改进和提高的地方,例如选用更高精度的元器件,硬件电路更加精确稳定,软件测量算法进一步的改进与完善等。致谢虽然这次毕业设计的时间不是很长,但毕业设计却是自己独立思考完成的,首先我对任务按时间进行了分工,每天按时完成任务,再然,课后的创新思考,也成了我近期的参考事项,最后,经过不断的实习演练,才能确保顺利完成优质的毕业设计。因为是自己的单独设计,刚开始时,心里总有些紧张与茫然,不知如何入手,但我们的指导老师具有高度的责任感与敬业精神,在他们的指导下,我才能顺利的完成这项工作,他们在指导我的同时也让我深深的感受到了生活中的激情与处事方式,我深深的感谢他们对我的栽培。通过这次毕业设计,使我对所学的理论知识有了实践的演练,操作能力得到了很大的提高。我认为理论知识毕竟是书本上的,是抽象的,而我们的生活是需要实际操作的,只有通过实际的操作演练与理论相结合,才能使我们真正的学到更多我们想象不到的知识,而在这三年的学习生活中我们就是缺少了理论和实践的紧密结合,而本次毕业设计则恰恰像一场及时雨,让我们通过亲身模拟学会如何把理论知识应用于实践。给了我充分的锻炼机会。获益非浅!感谢学校和老师对我们的栽培!参考文献1、潘永雄.新编单片机原理与应用. 西安电子科技大学出版社,2002年2、张友德,赵志英,涂时亮.单片机微型机原理应用与实验. 复旦大学出版社,2000年3、周航慈、朱兆优、李跃忠.智能仪器原理与设计. 北京航空航天大学出版社,2005年4、江秀汉.可编程序控制器原理及应用(第二版).西安电子科技大学出版社,2003年5、沈庆阳、郭庭吉.单片机实践与应用.清华大学出版社,2002年6、窦振中.单片机外围器件实用手册存储器分册.北京航空航天大学出版社,1998年 7、关德新,冯文全.单片机外围器件实用手册电源器件分册.北京航空航天大学出版社,1998年8、何立民.单片机应用技术选编,北京航空航天大学出版社,1993年9、李建忠.单片机原理及运用. 西安电子科技大学出版社,2001年 10、吴金戎、沈庆阳.8051单片机实践与应用.清华大学出版社 ,2001年 11、赵晓安.MCS-51单片机原理及应用.天津大学出版社,2001年 12、冯建华、赵亮.单片机应用系统设计与产品开发. 人民邮电出版社, 2004年 13、何立民.MCS51系列单片机应用系统设计.北京航空航天大学出版社, 1999年 14、李荣正、陈学军.PIC单片机实验教程. 北京航空航天大学出版社,2006年15、张义和、陈敌北.例说8051.人民邮电出版社,2006年附录 源程序代码 K1 EQU P1.0 ;在程序开始前定义变量 K2 EQU P1.1 K3 EQU P1.2 K4 EQU P1.3 ORG 0000H LJMP MAIN ORG 000BH LJMP TIME ORG 001BH LJMP TIME1 ORG 0100H MAIN:MOV SP,#50H MOV 20H,#00H ;时间 BIN SECOND MOV 21H,#00H ; BIN MINUTE MOV 22H,#00H ; BIN HOUR MOV 23H,#01H ;闹铃 BIN MINUTE MOV 24H,#01H ; BIN HOUR MOV 25H,#00H ;定义一个标志位 MOV 30H,#00H ;时间 BCD SECOND MOV 31H,#00H ; MOV 32H,#00H ; BCD MINUTE MOV 33H,#00H ; MOV 34H,#00H ; BCD HOUR MOV 35H,#00H ; MOV 36H,#01H ;闹铃 BCD MINUTE MOV 37H,#00H ; MOV 38H,#01H ; BCD HOUR MOV 39H,#00H ; MOV TMOD,#11H ;16位计数器 T0,方式1 MOV TH0,#03CH ;赋初值 MOV TL0,#0B0H MOV IE,#10000111B ;开中断 T0,EA=1 SETB ET1 SETB ET0 SETB TR0;T0启动计数 MOV R2,#14H ;计数器 MOV P2,#0FFH LOOP:LCALL TIMEPRO ; 调用现在时间与闹铃时间比较程序 LCALL DISPLAY1 ; 调用现在时间显示子程序 JB K1,M1 ; 判断按键是否按下 LCALL XIAOZHEN1 ; 调用消抖程序 MOV C,25H.0 JC A1 A1:CLR 25H.0 LCALL SETTIME ; 调用设置现在时间子程序 LJMP LOOP M1:JB K2,M2 LCALL XIAOZHEN2 MOV C,25H.0 JC A2 A2:CLR 25H.0 LCALL SETATIME ; 调用设置闹钟的程序 LJMP LOOP M2:JB K4,M3 A3:LCALL XIAOZHEN3 MOV C,25H.0 JC A4 A4:CLR 25H.0 M3:LJMP LOOPSETTIME: L0 LCALL DISPLAY1 JB K2,L1 LCALL XIAOZHEN4 MOV C,25H.0 JC A5 A5:CLR 25H.0 INC 22H MOV A,22H CJNE A,#18H,GO12 MOV 22H,#00H MOV 34H,#00H MOV 35H,#00H LJMP L0 L1:JB K3,L2 LCALL XIAOZHEN5 MOV C,25H.0 JC A6 A6:CLR 25H.0 INC 21H MOV A,21H CJNE A,#3CH,GO11 MOV 21H,#00H MOV 32H,#00H MOV 33H,#00H LJMP L0 GO11:MOV B,#0AH DIV AB MOV 32H,B MOV 33H,A LJMP L0 GO12:MOV B,#0AH DIV AB MOV 34H,B MOV 35H,A LJMP L0 L2:JB K4,L0 LCALL XIAOZHEN3 MOV C,25H.0 JC AX AX:CLR 25H.0 RETSETATIME: LCALL DISPLAY2 ;调用闹钟设置,闹铃响时的显示程序 N0:LCALL DISPLAY2 JB K3,N1 LCALL XIAOZHEN6 MOV C,25H.0 JC A7 A7:CLR 25H.0 INC 24H MOV A,24H CJNE A,#24,GO22 MOV 24H,#00H MOV 38H,#00H MOV 39H,#00H LJMP N0 N1:JB K1,N2 LCALL XIAOZHEN7 MOV C,25H.0 JC A8 A8:CLR 25H.0 INC 23H MOV A,23H CJNE A,#60,GO21 MOV 23H,#00H MOV 36H,#00H MOV 37H,#00H LJMP N0 GO21:MOV B,#0AH DIV AB MOV 36H,B MOV 37H,A LJMP N0 GO22:MOV B,#0AH DIV AB MOV 38H,B MOV 39H,A LJMP N0 N2:JB K4,N0 LCALL XIAOZHEN3 MOV C,25H.0 JC A9 A9:CLR 25H.0 RET TIMEPRO:MOV A,21H MOV B,23H CJNE A,B,BK MOV A,22H MOV B,24H CJNE A,B,BK SETB 25H.0 MOV C,25H.0 JC XX XX:LJMP START BK:RET START:JNB K4,S2 MAIN1: MOV 40H,#00H ;设简谱码指针初始值 NEXT: MOV A,40H ;简谱码指针暂存累加器A MOV DPTR,#TABLE ;设简谱码 MOVC A,A+DPTR CJNE A,#00H,PLAY ;取到的简谱码不是结束码,传PLAY取节拍码 LJMP STOP ;是结束码,退出 PLAY: MOV R1,A ;R1暂存简谱码 ANL A,#0FH ;取节拍码 MOV R2,A MOV A,R1 ANL A,#0F0H ;取音符码 CJNE A,#00H,MUSIC ;音符码不为0,调发音子程序 CLR TR1 ;音符码为0,不发音 LJMP DEL MUSIC:SWAP A DEC A MOV 52H,A ADD A,52H MOV R3,A MOV DPTR,#TABLE1 ;取相应计数值 MOVC A,A+DPTR MOV TH1,A ;暂存高位字节 MOV 51H,A MOV A,R3 INC A MOVC A,A+DPTR ;取相应计数值的低位字节 MOV TL1,A ;暂存低位字节 MOV 50H,A SETB TR1 ;启动定时器 DEL: LCALL DELAY INC 40H ;指向下一个简谱码 LJMP NEXT STOP: CLR TR1 ;停止计时器 LJMP MAIN1 TIME1:PUSH ACC ;现场保护 PUSH PSW CPL P3.7 ;P3.7反相输出,演奏音乐 MOV TL1,50H ;重设计数值 MOV TH1,51H POP PSW POP ACC RETI DELAY:MOV R7,#02H ;4/4曲调,演示125ms子程序 DELA1:MOV R6,#125 DELA2:MOV R5,#248 DJNZ R5,$ DJNZ R6,DELA2 DJNZ R7,DELA1 DJNZ R2,DELAY RET S2:LJMP LOOP TABLE1:DW 64524,64580,64684,64777 ;简码值 DW 64820,64898,64968,65030,65058 DW 64400,64260 TABLE:DB 42H,62H,72H,41H,61H,41H,31H,22H,0B2H ;歌曲三个和尚 DB 62H,61H,61H,71H,61H,41H,64H DB 0B2H,0B2H,62H,61H,61H,71H,61H,41H,64H DB 0B2H,0B2H,62H,61H,61H,71H,61H,41H,64H DB 42H,62H,72H,41H,61H,41H,31H,22H,0B2H DB 22H,31H,41H,31H,21H,0A2H,0B4H DB 22H,31H,41H,31H,21H,0A2H,0B4H DB 22H,31H,41H,31H,21H,0A2H,0B4H DB 0A2H,21H,32H,42H,62H,61H,41H,62H,71H DB 42H,41H,61H,42H,32H,22H,31H,21H,0A2H DB 42H,41H,61H,42H,32H,22H,31H,21H,0A2H DB 42H,41H,61H,42H,32H,22H,31H,21H,0A2H DB 62H,61H,42H,62H,71H,61H,72H,62H,71H DB 62H,61H,71H,32H,42H,64H DB 00HXIAOZHEN1:LCALL DISPLAY1 JB K1,XIAOZHEN1 MOV C,K1 JC XIAOZHEN1 LCALL DELAY5 MOV C,K1 JC XIAOZHEN1 STOP1:MOV C,K1 JNC STOP1 LCALL DELAY5 MOV C,K1 JNC STOP1 SETB 25H.0 RETXIAOZHEN2:LCALL DISPLAY2 JB K2,XIAOZHEN2 MOV C,K2 JC XIAOZHEN2 LCALL DELAY5 MOV C,K2 JC XIAOZHEN2 STOP2:MOV C,K2 JNC STOP2 LCALL DELAY5 MOV C,K2 JNC STOP2 SETB 25H.0 RETXIAOZHEN3:LCALL DISPLAY1 JB K4,XIAOZHEN3 MOV C,K4 JC XIAOZHEN3 LCALL DELAY5 MOV C,K4 JC XIAOZHEN3 STOP3:MOV C,K4 JNC STOP3 LCALL DELAY5 MOV C,K4 JNC STOP3 SETB 25H.0 RET XIAOZHEN4:LCALL DISPLAY1 JB K2,XIAOZHEN4 MOV C,K2 JC XIAOZHEN4 LCALL DELAY5 MOV C,K2 JC XIAOZHEN4 STOP4:MOV C,K2 JNC STOP4 LCALL DELAY5 MOV C,K2 JNC STOP4 SETB 25H.0 RETXIAOZHEN5:LCALL DISPLAY1 JB K3,XIAOZHEN5 MOV C,K3 JC XIAOZHEN5 LCALL DELAY5 MOV C,K3 JC XIAOZHEN5 STOP5:MOV C,K3 JNC STOP5 LCALL DELAY5 MOV C,K3 JNC STOP5 SETB 25H.0 RETXIAOZHEN6:LCALL DISPLAY2 JB K3,XIAOZHEN6 MOV C,K3 JC XIAOZHEN6 LCALL DELAY5 MOV C,K3 JC XIAOZHEN6 STOP6:MOV C,K3 JNC STOP6 LCALL DELAY5 MOV C,K3 JNC STOP6 SETB 25H.0 RETXIAOZHEN7:LCALL DISPLAY2 JB K1,XIAOZHEN7 MOV C,K1 JC XIAOZHEN7 LCALL DELAY5 MOV C,K1 JC XIAOZHEN7 STOP7:MOV C,K1 JNC STOP7 LCALL DELAY5 MOV C,K1 JNC STOP7 SETB 25H.0 RET DELAY5:MOV R4,#14H DL00:MOV R5,#0FFH DL11:DJNZ R5,DL11 DJNZ R4,DL00 RET TIME:PUSH ACC PUSH PSW MOV TH0,#03CH MOV TL0,#0B0H DJNZ R2,RET0 MOV R2,#14H MOV A,20H CLR C INC A CJNE A,#3CH,GO1 MOV 20H,#0 MOV 30H,#0 MOV 31H,#0 MOV A,21H INC A CJNE A,#3CH,GO2 MOV 21H,#0H MOV 32H,#0 MOV 33H,#0 MOV A,22H INC A CJNE A,#18H,GO3 MOV 22H,#00H MOV 34H,#0 MOV 35H,#0 AJMP RET0 GO1:MOV 20H,A MOV B,#0AH DIV AB MOV 31H,A MOV 30H,B AJMP RET0 GO2:MOV 21H,A MOV B,#0AH DIV AB MOV 33H,A MOV 32H,B AJMP RET0 GO3:MOV 22H,A MOV B,#0AH DIV AB MOV 35H,A MOV 34H,B AJMP RET0 RET0:POP PSW POP ACC RETIDISPLAY1:MOV R0,#30H MOV R3,#0FEH MOV A,R3 PLAY1:MOV P2,A MOV A,R0 MOV DPTR,#DSEG1 MOVC A,A+DPTR MOV P0,A LCALL DL1 MOV P2,#0FFH MOV A,R3 RL A JNB ACC.6,LD1 INC R0 MOV R3,A LJMP PLAY1 LD1:RETDISPLAY2:PUSH ACC PUSH PSW MOV R0,#36H MOV R3,#0FBH MOV A,R3 PLAY2:MOV P2,A MOV A,R0 MOV DPTR,#DSEG1 MOVC A,A+DPTR MOV P0,A LCALL DL1 MOV P2,#0FFH MOV A,R3 RL A JNB ACC.6,LD2 JNC R0 MOV R3,A LJMP PLAY2 LD2:POP PSW POP ACC RET DL1:MOV R7,#05H DL:MOV R6,#0FFH DL6:DJNZ R6,$ DJNZ R7,DL RET DSEG1:DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END第 21 页 共 24 页
展开阅读全文