




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计单片机原理与应用课程设计报告姓名 贾海宇 学号 12213070 指导教师 戴胜华 时间 2014年6月15日 1、 设计要求利用JD51开发板上的4个LED数码管, 设计带有闹铃功能的数字时钟,要求:(1)在4位数码管上显示当前时间。显示格式“时时分分”(2)由LED闪动做秒显示。(3)利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到蜂鸣器发出声响,按停止键使可使闹铃声停止。(4)实现秒表功能(百分之一秒显示) 二、设计目的1. 理解学习LED数码管显示、开关的扫描及处理以及定时器、中断的运用。2. 学习汇编语言的应用。3. 学习Proteus、KEIL软件的应用
2、。4. 培养解决实际问题的能力。三、设计原理计时功能利用单片机的定时器来完成,由于定时器定时的时长有限,所以要利用中断程序才能定时1秒,若中断程序每隔5ms中断一次并当作一个计数,则每中断一次计数加1,当计数200次时,则表示1s到了,秒变量加1,同理再判断1min是否到了,再判断1h是否到了。为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等较多硬件,可采用动态显示法实现LED显示。闹铃声由交流蜂鸣器产生,所以当闹铃时间和当前时间相等时,可以对蜂鸣器输入方波信号,蜂鸣器就会发出声音。 如原理图所示,硬件系统主要由单片机最小应用系统、LED数码管显示模
3、块、电源模块、晶振模块、按键模块等组成。AT89S52详述:AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16位定时器/计数器。一个6向
4、量2级中断结构,全双工串行口及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止. 主要性能 与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、 全静态操作:0Hz33Hz 、 三级加密程序存储器 、 32个可编程I/O口线 、三个16位定时器/计数器 八个中断源 、全双工UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒、看门狗定时器
5、 、双数据指针 、掉电标识符 。 功能特性描述 At89s52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器
6、,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash AT89S52 P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下
7、,0具有内部上拉电阻。flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。 引脚号第二功能 P1.0 T2(定时器
8、/计数器T2的外部计数输入),时钟输出 P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5 MOSI(在系统编程用) P1.6 MISO(在系统编程用) P1.7 SCK(在系统编程用) P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2 口送出高八位地址。在这种应用中,P2
9、 口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。3口亦作为AT89S52特殊功能(第二功能)使用。flash编程和校验时,P3口也接收一些控制信号。 端口引脚 第二功能 P3.0 RXD(串行输入口) P3.1
10、 TXD(串行输出口) P3.2 INTO(外中断0) P3.3 INT1(外中断1) P3.4 TO(定时/计数器0) P3.5 T1(定时/计数器1) P3.6 WR(外部数据存储器写选通) P3.7 RD(外部数据存储器读选通) 此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。 RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 ALE/PROG当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注
11、意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。 对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 PSEN程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。 EA/VPP外部访问允许,欲使
12、CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。 如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。 FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp。当然这必须是该器件是使用12V编程电压Vpp。4、 proteus仿真设计及描述1、 生成.hex文件单击“Project”菜单,再在下拉菜单中单击“目标选项”在下图中,单击“Output”中单击“Create HEX File”选项,使程序编译后产生HEX代码,以便在Proteus里加载可执行代码,下面将编译
13、、链接、转换成可执行文件(.HEX的文件)。2、 源代码>添加/移除源代码>新建源代码文件名3、单击play按钮,下图是Proteus仿真结果:源程序:五、设计方案及思路【系统的主要功能】本实验实际是设计一个电子表,可以显示时和分,并且用一个二极管显示秒。另外,还可以对它进行时间调整,还要有闹铃功能。利用单片机内部的定时器计数器来实现的,它的处理过程如下:首先设定单片机内部的一个定时器计数器工作于定时方式,对机器周期计数形成基准时间,然后用另一个定时器计数器或软件计数的方法对基准时间计数形成秒,秒计60次形成分,分计60次形成小时,小时计24次则计满一天。然后通过数码管把它们的内容
14、在相应位置显示出来即可。 数码管显示可以采用静态显示方法或动态显示方法。静态显示方法需要数据锁存器等硬件,接口复杂,时钟显示一般用6个或8个数码管。由于系统没有其他的复杂的任务处理,而且显示的时钟信息随时都可能变化,一般采用动态显示方式。动态显示方法线路相对简单,但需动态扫描,扫描频率要大于人眼视觉暂留频率,信息看起来才稳定。译码方式可分为软件译码和硬件译码,软件译码通过译码程序查得显示信息的字段码;硬件译码通过硬件译码器得到显示信息的字段码,实际中通常采用软件译码。 在具体处理时,定时器计数器采用中断方式工作,对时钟的形成在中断服务程序中实现。在主程序中只需对定时器计数器初始化、调用显示子程
15、序和控制子程序。另外,为了使用方便,设计了简单的按键,可以通过按键实现时间调整和复位。 实验用JD51开发板完成,本实验的硬件包括显示部分、闹铃部分、开关部分。·显示部分JD51上用于显示部分的电路如下图:JD51上有四位共阳LED数码管,其标号分别为LED1LED4,低电平选通,且任何时候仅有一位输出低电平,显示时对各显示器进行动态扫描,显示器分时轮流工作。虽然每次只有一个显示器显示,但是由于人的视觉暂留现象我们仍会感觉所有的显示器都在同时显示。P0口作为输出口控制8个发光二极管的亮灭,控制数码管的显示。表一 LED数码管真值表 ·闹铃部分蜂鸣器与p2.5口相连·
16、;开关部分本实验中的开关是实验仪上的四个逻辑开关,它们分别与P3.2、P3.3、P3.4、P3.5相连。其总P3.2用于调整时钟或闹钟的时,P3.3用于调整时钟或闹钟的分,P3.5用于控制显示时钟还是显示闹钟,并且同时控制调整时钟还是调整闹钟,按任意键(SW1、SW2、SW4)时停止闹钟。6、 软件设计流程及描述·显示部分 显示部分分为时钟显示、闹钟显示和秒显示三部分,主要由时钟显示子程序和闹钟显示子程序构成,闹钟显示与时钟显示编程流程大致相同。 流程图如下:·闹铃部分设计思路及原理:音节由不同频率的方波产生,音节与频率的关系如下表所示。要产生音频方波,设计利用延时来建立音
17、符表NOTE,表格中的数存R3*20us,其倒数1/(R3*2*10us)对应相应音符的频率。另外,音乐的节拍是由延时实现的,如果1拍为0.4秒,1/4拍是0.1秒。只要设定延时时间,就可求得节拍的时间。延时作为基本延时时间,节拍值只能是它的整数倍。设计利用T1中断产生10ms延时,取1/4拍为10H*10ms,相应产生所需延时。音符(低).1.2.3.4.5.6.7频率(HZ)262294330349392440494音符(中)1234567频率(HZ)523587659698784880988音符(高)1234567频率(HZ)1046117513181397156817601967所设定
18、闹铃的音符和节拍表NOTE和METRE如下:NOTE:DB 7FH,7FH,7FH,60H,65H,72H,72H,72H,7FH,72H DB 60H,72H,60H,72H,60H,72H,7FH,72H,7FH,98H,72H,7FH DB 7FH,7FH,7FH,60H,65H,72H,72H,72H,7FH,72H DB 60H,72H,60H,72H,60H,72H,7FH,72H,7FH,72H,4CH,55H,00HMETRE:DB 80H,20H,20H,20H,20H,20H,20H,20H,20H,80H DB 20H,20H,20H,20H,40H,20H,20H,20
19、H,20H,20H,20H,80HDB 80H,20H,20H,20H,20H,20H,20H,20H,20H,80H DB 20H,20H,20H,20H,40H,20H,20H,20H,20H,20H,20H,40H·开关扫描及处理部分本实验用到了三个开关,其中涉及开关的扫描及处理。开关4控制数码管当前显示的是时钟还是闹钟,显示时钟时,可通过开关1和开关2调整时钟的时和分;显示闹钟时,也可以通过开关1和开关2调整时和分。开关4控制闹铃的开和关。按键的闭合与否,反映在电压上就是呈现出高电平或低电平。由于机械触点的弹性作用,在闭合及断开的瞬间,电压信号伴随有一定时间的抖动,抖动时间与
20、按键的机械特性有关,一般是510ms。为了保证CPU确认一次按键动作,既不重复也不遗漏,必须消除抖动的影响。通过软件消除抖动的方法为:在程序执行过程中检测到有按键按下时,调用一段延时(约10ms)子程序,然后判断该按键的电平是否仍然保持在闭合状态,如果是,则确认有键按下。按键调整闹钟与按键调整时钟编程流程基本一致,按键扫描及处理流程图如图:·T0中断服务程序:采用定时器T0计时,中断程序每隔50ms中断一次计数加1,当计数20次时,则表示1s到了,秒变量加1,同理再判断是否1分钟到了,再判断是否1小时到了,再判断是否24小时到了。程序流程图如下:七、实验源程序;*;/*电子时钟程序*
21、/ ;程序主要包括MAIN函数,T0、T1中断程序,时间、闹钟显示程序 ,按键扫描、处理程序;* ORG 0000HAJMP MAIN ;跳转到主程序MAIN执行ORG 000BHAJMP INTT0 ;跳到INTT0执行ORG 001BHLJMP INTT1 ;跳到INTT1执行ORG 0300H;/*主函数*/预置T0T1工作方式,置初值,预置时钟、闹钟,置位数码管MAIN:MOV SP,#80H MOV TMOD,#11H ;设置定时器T0、T1工作于方式1 MOV TH0,#3CH ;装入时钟定时初值(50ms) MOV TL0,#0B0H MOV TH1,#0D8H ;装入闹铃定时初
22、值(10ms) MOV TL1,#0F0H MOV R1,#00H ;确保首次默认闹铃工作MOV 20H,#00H MOV 21H,#00H MOV 22H,#00H ;预置时钟分分MOV 23H,#00H ;预置时钟时时 MOV 30H,#30H ;预置闹铃分分MOV 31H,#08H ;预置闹铃时时SETB P2.0 ;数码管接P2口,置位数码管,使其全灭SETB P2.1SETB P2.2SETB P2.3CLR P1.7 ;发光二极管LED7LED8用于显示秒,清P1.7,发光二极管LED8亮SETB P1.6 ;置位P1.6,发光二极管LED7灭SETB EA ;开放总中断SETB
23、ET0 ;允许T0中断SETB TR0 ;开启定时器T0LOOP:LCALL DISPT ;调用时间显示子程序LCALL RING ;调用闹铃处理子程序LCALL KEY ;调用按键扫描子程序JZ LOOP ;无键按下则循环LCALL CASE ;有键按下则转按键处理子程序执行SJMP LOOP ;循环;/*T0一秒定时中断程序INTT0*/正常时钟计时INTT0:PUSH PSW ;状态字入栈保护 PUSH ACC ;累加器入栈保护MOV TL0,#0B0H ;装入计数初值,12MHZ晶振,形成1S中断MOV TH0,#3CHINC 20HMOV A,20HCJNE A,#20,RETURN
24、CPL P1.7 ;一秒到发光二极管轮流亮,用于显示秒CPL P1.6MOV 20H,#00H ;一秒到清20H MOV A,21HADD A,#01HDA AMOV 21H,ACJNE A,#60H,RETURNMOV 21H,#00H ;一分到,21H单元清零MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,RETURNMOV 22H,#00H ;一小时到,22H单元清零MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,RETURNMOV 23H,#00H ;满24,23H单元清零RETURN:POP ACCPOP
25、 PSWRETI;/*时间显示子程序*/DISPT:MOV A,22HANL A,#0FHMOV 2AH,A ;时钟分的低位MOV A,22HANL A,#0F0HSWAP AMOV 2BH,A ;时钟分的高位MOV A,23HANL A,#0FHMOV 2CH,A ;时钟时的低位MOV A,23HANL A,#0F0HSWAP AMOV 2DH,A ;时钟时的高位LED1:SETB P2.3 MOV A,2DH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.0 ;选通数码管1 MOV P0,A ;显示时钟时的十位部分 LCALL DELAYLED2:SETB P2.0
26、 MOV A,2CH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.1 ;选通数码管2 MOV P0,A ;显示时钟时的个位部分 LCALL DELAY LED3:SETB P2.1 MOV A,2BH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.2 ;选通数码管3 MOV P0,A ;显示时钟分的十位部分 LCALL DELAYLED4:SETB P2.2 MOV A,2AH JB P1.7,TA2TA1: ADD A,#10 ;用于利用数码管的小数点来表示秒TA2: MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.3
27、;选通数码管4 MOV P0,A ;显示时钟分的个位部分 LCALL DELAY RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;共阳数码管的不带小数点的时间显示码 DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H;共阳数码管的带小数点的时间显示码 ;/*按键扫描程序*/开关接P3口,判断按键情况KEY: MOV P3,#0FFH MOV A,P3CPL AANL A,#2CHJZ RETK ;无键按下则返回LCALL DELAY ;延时消抖MOV A,P3CPL AANL A,#2CHJZ R
28、ETK ;键盘去抖动MOV R6,A ;将键值存入R6LOOP1:LCALL DISPT;MOV A,P3CPL AANL A,#2CHJNZ LOOP1 ;等待键释放MOV A,R6RETK:RET;/*按键处理子程序*/根据按键情况进行处理CASE:MOV A,R6CLR P1.0 ;发光二极管LED1亮JB ACC.2,SETH ;转调整时JB ACC.3,SETM ;转调整分JB ACC.5,SETR ;转闹铃设置WAITCASE:LCALL DISPT ;无键按下时等待LCALL KEYJZ WAITCASE;/*时间调整程序*/按键调整时间SETT:LCALL DISPTLCALL
29、 KEYJZ SETTMOV A,R6JB ACC.2,SETHJB ACC.3,SETMJB ACC.5,KEYGO ;第二次按为确认离开KEYGO: SETB P1.0 ;发光二极管LED1、LED2灭SETB P1.1RETSETH:MOV A,23H ;调整时钟时,时加1ADD A,#01HDA A ;十进制调整MOV 23H,ACJNE A,#24H,HD ;判断是否到24,不到继续MOV 23H,#00H ;到24时清零HD:LJMP SETTSETM:MOV A,22H ;分加1ADD A,#01HDA A ;十进制调整 MOV 22H,ACJNE A,#60H,MD ;判断是否
30、到1小时,不到继续MOV 22H,#00H ;到1小时则清零MD:LJMP SETT;/*闹铃时间调整按键扫描及处理子程序*/KEYR: MOV P3,#0FFH MOV A,P3CPL AANL A,#2CHJZ RETK ;无键按下则返回LCALL DISPR ;延时消抖MOV A,P3CPL AANL A,#2CHJZ RETK ;键盘去抖动MOV R6,A ;将键值存入R6LJMP LOOPRLOOPR:LCALL DISPRMOV A,P3CPL AANL A,#2CHJNZ LOOPR ;等待键释放MOV A,R6AJMP RETK;/*设置闹铃时间*/SETR:SETB P1.0
31、 ;发光二极管LED1灭CLR P1.1 ;发光二极管LED2亮,改显示状态LCALL DISPRMOV R1,#00H ;设置闹钟时重设R1,用于检测闹铃播放与否MOV 53H,#03H ;重设闹铃次数LCALL KEYR ;闹铃时间调整按键检测JZ SETRMOV A,R6JB ACC.2,SETRHJB ACC.3,SETRMJB ACC.5,KEYGO ;第二次按为确认离开SETRH:MOV A,31H ;闹钟时加1ADD A,#01HDA A ;十进制调整MOV 31H,ACJNE A,#24H,RHD ;判断是否到24,不到继续MOV 31H,#00H ;到24时则清零RHD:LJ
32、MP SETRSETRM:MOV A,30H ;闹钟分加1ADD A,#01HDA A ;十进制调整MOV 30H,ACJNE A,#60H,RMD ;判断是否到1小时,不到继续MOV 30H,#00H ;到1小时则清零RMD:LJMP SETR;/*闹钟设置显示子程序*/DISPR:MOV A,30HANL A,#0FH ;屏蔽高四位MOV 3AH,A ;保留低位送3AHMOV A,30HANL A,#0F0H ;屏蔽低四位 SWAP A ;高四位与第四位交换MOV 3BH,A ;将保留的高4位送3BHMOV A,31HANL A,#0FH MOV 3CH,A ;低位MOV A,31HANL
33、 A,#0F0HSWAP AMOV 3DH,A ;高位LEDR1:SETB P2.3MOV A,3DH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.0MOV P0,ALCALL DELAYLEDR2:SETB P2.0 MOV A,3CH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.1MOV P0,ALCALL DELAYLEDR3:SETB P2.1 MOV A,3BH MOV DPTR,#TAB MOVC A,A+DPTR CLR P2.2MOV P0,ALCALL DELAYLEDR4:SETB P2.2 MOV A,3AH MOV D
34、PTR,#TAB MOVC A,A+DPTR CLR P2.3MOV P0,ALCALL DELAYRET;/*延时子程序*/DELAY:MOV R5,#2 D1:MOV R4,#250D2:DJNZ R4,D2DJNZ R5,D1RET;/*闹铃检测程序*/RING:MOV A,23H ;比较时CJNE A,31H,RETRMOV A,22H ;比较分CJNE A,30H,RETR LCALL SINGRETR:RET;/*定时器T1中断子程序*/INTT1:PUSH PSW ;状态字入栈保护 PUSH ACC ;累加器入栈保护 INC 50H ;中断服务程序,中断计数器加1MOV TH1,
35、#0D8H ;装入计数初值,12M晶振,形成10MS中断 MOV TL1,#0F0H POP ACC POP PSWRETI ;/*响铃子程序*/ SING:CJNE R1,#01H,SING1 ;判断是否已经闹铃过一次 LJMP RETS SING1:SETB ET1 MOV 50H,#00H ;中断计数器清0 MOV 51H,#00H ;音符指针 MOV 52H,#00H ;节拍码指针 MOV 53H,#03H ;设置闹钟不退出响铃次数 GETNOT:MOV A,51H MOV DPTR,#NOTE ;表头地址送DPTR MOVC A,A+DPTR ;查表取音符码 JZ ENDP ;是00
36、H,则结束 MOV R6,A ;存R6 INC 51H CJNE A,#0FFH,GETMET ;不为0FFH,转取节拍码 LJMP PAUSE ;转休止播放 LJMP GETNOT ;取音符码 GETMET:MOV A,52H MOV DPTR,#METRE ;取节拍码首地址 MOVC A,A+DPTR ;取节拍代码送R7 MOV R7,A INC 52H PLAY:SETB TR1 ;启动计数 CPL P2.4 LCALL KEY JNZ RETS MOV A,R6 MOV R3,A ;音符码存R3 LCALL DELAY1 MOV A,R7 ;取节拍码放A与中断计数比较CJNE A,50
37、H,PLAY ;断计数器(50H)=R7否,不等继续循环MOV 50H,#00H ;等于,则取下一代码 LCALL DISPT LCALL DISPT LCALL DISPT LCALL DISPT CLR TR1 LJMP GETNOT RETS:SETB P2.4 ;置位蜂鸣器,否则可能产生啸叫MOV R1,#01H ;表明播放过一次CLR A ;清除A,防止进入按键处理子程序LJMP RETR PAUSE:CLR TR1 ;休止100毫秒 MOV R2,#0DH DELAY2: MOV R3,#0FFH LCALL DELAY1 DJNZ R2,DELAY2RET ENDP:SETB P
38、2.4 MOV R2,#0C7H ;歌曲结束,延时1秒后继续END1M: MOV R3,#00H LCALL DELAY1 DJNZ R2,END1M DJNZ 53H,SING RET DELAY1:NOP ;R3为01H时,DELAY延时为20uSDELAY3: MOV R4,#02H DELAY4: DJNZ R4,DELAY4 DJNZ R3,DELAY3 RETNOTE:DB 7FH,7FH,7FH,60H,65H,72H,72H,72H,7FH,72H DB 60H,72H,60H,72H,60H,72H,7FH,72H,7FH,98H,72H,7FH DB 7FH,7FH,7FH,60H,65H,72H,72H,72H,7FH,72H DB 60H,72H,60H,72H,60H,72H,7FH,72H,7FH,72H,4CH,55H,00HMETRE:DB 80H,20H,20H,20H,20H,20H,20H,20H,20H,80H DB 20H,20H,20H,20H,40H,20H,20H,20H,20H,20H,20H,80HDB 80H,20H,20H,20H,20H,20H,20H,20H,20H,80H DB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人音版九年级音乐上册教学设计:1.1让世界充满爱
- 农业职业经理人考试的复习要点试题及答案
- 2024新员工试用期考核评分表新员工试用期考核工作总结(大全5篇)模板范文
- 2024新学期新征程演讲稿初三(模板19篇)模板范文
- 2024鼎湖听泉课文范文(23篇)模板范文
- 2025年血透管路合作协议书
- 共文化旅游融合发展项目可行性研究报告
- 乡村田园休闲度假区行业跨境出海战略研究报告
- 中国结编织课程行业深度调研及发展战略咨询报告
- 三星级饭店住宿AI应用行业跨境出海战略研究报告
- 地理加权回归分析技术综述
- 自然辩证法智慧树知到期末考试答案章节答案2024年浙江大学
- 养老院新员工安全培训
- DLT 5175-2021 火力发电厂热工开关量和模拟量控制系统设计规程-PDF解密
- 华润啤酒人才测评邀请题库
- 当前国际形势分析
- 手术室运用PDCA循环降低高值耗材收费差错率品管圈QCC成果汇报
- 新教材高中地理必修一学用地形图探究地貌特征课件
- 《阿片类药物》课件
- 实用电工速算口诀
- T-QGCML 1301-2023 智慧空压站设计规范
评论
0/150
提交评论