已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机课程设计简易电子琴 1、 课设要求所设计简易电子琴能够单曲循环,且能暂停播放,能够实现按键发音功能,能够让点阵LED显示播放声音音调的高低.2、 设计思路首先,本实验主要依靠单片机开发板上的喇叭来发出声音,不同的音调对应不同的频率,喇叭发出声音需要正弦波驱动,由于单片机只能输出方波,所以不能用单片机直接驱动喇叭,但是开发板上有自带的喇叭驱动模块,能够将方波转换成同频率的正弦波,所以本次实验的核心模块是让单片机的两个定时器相互配合,改变单片机输出方波的频率和时间,让喇叭发出不同频率,不同节拍的声音,最后形成一首完整的歌曲.其次,按键发音功能也是靠两定时器相互配合实现,只是加了一个计算键值的模块,将所得键值转换成输出的频率来发声.最后,LED显示音调功能是把歌曲的不同音调转换成点阵不同的行点亮来实现.下面将详细介绍各模块的程序及其功能.三、硬件连接: 本次课设使用上海朗译科技公司的型号为LY-51S单片机开发板,单片机型号为STC89RD541.单片机P1.0口接喇叭输入口(J42B1插针)2.P1.1口接独立按键区K3插针3.P1.2口接独立按键区K4插针4.P3.2口(INT0)接独立按键区K1插针5.P3.3口(INT1)接独立按键区K2插针6.P3.7,P3.6,P3.5分别接于J4的SER(数据输入),SRCLK(移位时钟),RCLK(锁存输出)7.P1.7,P1.6,P1.5分别接于J5的SER(数据输入),SRCLK(移位时钟),RCLK(锁存输出)8.P0口接于J6排针控制共阳极数码管9.P1口接于J24排针控制矩阵键盘四、程序模块:(1)发音模块:将单片机P1.0口接于喇叭的输入口,发音由定时器T0来完成,让定时器T0工作在方式1,每次定时器T0溢出中断时,取反一次P1.0口,这样就可以发出各种频率的方波.程序如下TINT0:PUSH PSW PUSH ACC MOV TH0,40H MOV TL0,41H CPL P1.0 POP ACC POP PSW由于定时器0工作在方式一时不能自动装入初值,所以每次中断发生后需要装入初值,由于方式1是16位定时,所以初值需要两个存储单元,初值放在40H和41H存储单元中,这两个单元中的不同内容对应不同频率,初值对应频率表如下,高位在前,低位在后 1 2 3 DB 0F8H,94h,0F9H,5CH,0FAH,15H, 4 5 6 7 DB 0FAH,68H,0FBH,05H,0FBH,90H,0FCH,0CH 1 2 3 4 DB 0FCH,4AH,0FCH,0AEH,0FDH,0AH,0FDH,34H, 5 6 7 DB 0FDH,82H,0FDH,0C8H,0FEH,06H 12 22 32 DB 0FEH,25H,0FEH,57H,0FEH,85H该表由标准音标频率计算而得.至于在40H和41H中该装入什么初值,在下一个模块中介绍.(2)发音时长模块:发音时长有定时器T1决定,本次实验中播放单曲时单位时长为0.25s,既歌曲谱中每个音调只响0.25s.定时器T1工作在方式2,模块程序如下:TINT1:PUSH PSW PUSH ACC DJNZ R1,REBACK MOV R1,#40 DJNZ R2,REBACK MOV R2,#25 LCALL DISP1 MOV A,#00H CLR C MOV A,43H ADD A,#1 MOV 43H,A MOV A,#00H ADDC A,42H MOV 42H,A MOV A,#00H MOV DPH,42H MOV DPL,43H MOVC A,A+DPTR MOV 44H,A MOV R0,A LCALL DISP CJNE A,#00H,STOP CLR TR0 AJMP REBACK CJNE A,#0FFH,GOON MOV 42H,#1FH MOV 43H,#0FFH AJMP REBACKGOON: SETB TR0 MOV A,44H RL A MOV R7,A MOV DPTR,#PITCH MOVC A,A+DPTR MOV 40H,A INC R7 MOV A,R7 MOVC A,A+DPTR MOV 41H,AREBACK:POP ACC POP PSW RETI程序中第行到第行,保证了执行完这几行程序中,某个音调已经响了0.25s,因为定时器T1每次中断为250us.第三行为点阵显示音调高低子程序,44H存放音调,作为点阵的显示依据.后续将做介绍.第行到第行为读取乐谱中下一个音调部分,42H和43H为音调指针,两者合看作一个16位寄存器,存储待装入DPTR的数据,这里定义为DPTR,在上一个音调响完一个单位时间后,DPTR加1,指向下一个音调,并将DPTR中地址装入DPTR,并在表#SCORE(起始为2000H)中读出下一个音调,并存入44H中.第行到第行作用是,原歌曲中需要停顿的部分,在#score表中均为0,通过看A中内容是否为0,来判断是否需要停顿,如果为0,就停止定时器0,喇叭将不发声.#0FFH是歌曲结束标志,当A中内容为#0FFH时,将DPTR赋值1FFFH,待下一次中断来临时,DPTR 加一后可以回到乐谱#SCORE初始位置2000H,以便实现循环播放.第行到第行是将从#SCORE中读出的真实音调转换成定时器T0所需要的各音调对应的定时器初值.因为在音调-初值表#PITCH中,每个音调占两个字节,所以将A中包含的音调乘了2,发送到R7,R7在这里作为#PITCH表指针,#PITCH表中每个音调的初值高位在前,地位在后,在读取完高位并发送到40H后,R7加1,读取地位,然后将读取的数据发送到41H.在下一个单位时间内鸣响. 行为点阵显示作用,后续将做介绍.(3) 单曲循环初始化模块: 本次课设定为按下P1.1口对应的按键K3时,单片机从主菜单进入单曲循环模式,按键为低电平有效,并且对定时器,外部中断等进行初始化设定,程序如下: SINGCYCLE:NOP JNB P1.1,NEXT LJMP MAINNEXT: LCALL DISPNONE CLR 20H SETB 21H SETB EX1 SETB ET0 SETB ET1 MOV P0,#0F9H MOV TMOD,#21H MOV R1,#40 MOV R2,#25 MOV TH1,#00H MOV TL1,#06H MOV TH0,#0FDH MOV TL0,#0AH MOV 40H,#20H MOV 41H,#00H CLR P1.0SINGCYCLE1:JB 21H,RETURN1 LJMP MAINRETURN1: AJMP SINGCYCLE1其中第行到第行为判断K3键是否按下,按下后则继续执行,未按下则返回主菜单.第行为让点阵不显示程序,因为在主菜单中加入了欢迎界面,所以在这里停止LED的欢迎界面.第行第行为标志位,20H为暂停/播放标志位,用于外部中断1子程序检验和控制,当20H=0时,表示当前单片机正在暂停状态,此时如果外部中断1发生,则会启动定时器T0,定时器T1,如果20H=1的时候,中断1发生,则会停止定时器T0,T1,实现暂停播放功能.第行为置位单曲循环模式标志位,主要是实现返回主菜单功能,在行间循环等待定时器中断时,会检验21H,若21H=0,则会跳出循环,返回主菜单,21H会由外部中断0清零.第-行为开启中断,EX1为暂停/播放中断允许位.行是让共阳极数码管显示1,表示单曲循环模式.第-行依次为设置播放单位时长的定时器初值,设置音调初值,设置乐谱指针初值并启动定时器.执行完成后进入-行循环等待中断. (4)按键发音初始化模块:按键发音的主要原理是:利用开发板的16键矩阵键盘,赋予每个按键一个键值,利用反转法来计算按下的键的键值,既行输出4个1,列输出4个0,且行为高四位,列为低四位,然后读取行,有键按下则行中有1位为0,然后在让行输出0,列输出1,读取列,有间按下时,列中有一位为0,然后这8位二进制数就与16个键一一对应了.然后根据这8位二进制数编码一个对应的音调,就可以实现按键发音了.按键发音模式初始化程序如下:SINGPRESS:NOP JNB P1.3,NEXTA LJMP MAINNEXTA: SETB 22H MOV TMOD,#21H MOV P0,#0A4H SETB ET0SINGPRESS1:LCALL DISPNONE MOV P1,#0F0H NOP MOV A,P2 ANL A,#0F0H MOV 30H,A MOV P2,#0FH NOP MOV A,P2 ANL A,#0FH ORL A,30H MOV 20H,A CJNE A,#0FFH,CALCULATE JB 22H,RETURN2 LJMP MAINCALCULATE:LCALL KEYVALUERETURN2: AJMP SINGPRESS1程序第-行与单曲循环初始化类似,只是标志位改成了22H,然后让共阳极数码管显示2,并且按键发音只用到1个定时器,所以只允许T0中断.第-, 行既反转法检测被按下的按键部分,然后将被按下按键对应的8位二进制数存放入20H单元,因为20H可以位寻址,便于计算键值,好转换成相应的音调,具体程序将在下一模块展示. (5)按键发音KEYVALUE子程序:该子程序主要功能是:计算出被按下按键的键值,寻找键值对应的音调,让后让喇叭播放一定时间该音调,并且在点阵上显示该音调的相对高低.具体程序如下:KEYVALUE: PUSH PSW PUSH ACCMOV R7,#00H JB 00H,PLUS4 MOV A,R7 ADD A,#0 MOV R7,APLUS4: JB 01H,PLUS8 MOV A,R7 ADD A,#4 MOV R7,APLUS8: JB 02H,PLUS12 MOV A,R7 ADD A,#8 MOV R7,APLUS12: JB 03H,PLUS41 MOV A,R7 ADD A,#12 MOV R7,APLUS41: JB 04H,PLUS3 MOV A,R7 ADD A,#4 MOV R7,APLUS3: JB 05H,PLUS2 MOV A,R7 ADD A,#3 MOV R7,APLUS2: JB 06H,PLUS1 MOV A,R7 ADD A,#2 MOV R7,APLUS1: JB 07H,NEXTA MOV A,R7 ADD A,#1 MOV R7,ANEXTA: MOV R0,A RL A MOV R7,A MOV DPTR,#PITCH MOVC A,A+DPTR MOV 40H,A MOV TH0,A INC R7 MOV A,R7 MOVC A,A+DPTR MOV 41H,A MOV TL0,A LCALL DISP MOV R7,#00H SETB TR0 LCALL DELAY_100MS POP ACC POP PSW RET矩阵键盘的行对应20H的0-3位,列对应20H的4-7位-行既计算键值,把2进制代码转换成十进制数,2进制数在20H中,计算结果在R7中,首先检验被按下按键所处行,因为每一行有4个按键,所以被按下按键如果在第一行就在R7中加0,如果在第二行就加4,第三行加8,第四行加12,在确定所处行之后再检验04H-07H位,如果在第1列就加1,第2列加2,第三列加3,第四列加4,最后得到R7中最终的10进制数作为对应按键的键值,既音调.例如,如果20H中数据为10110111B,则R7中为(14)10,表示M14被按下.在这里键值与简谱的对应关系为M1=1=中音C,M2=2=中音D,以此类推.在确定键值后,在PITCH表中找到键值对应的双字节定时器T0的初值,然后把这两个字节数据送到TH0,40H,TL0,41H.同时根据键值的大小决定LED点阵的显示内容,正如-行程序所示.第行决定了键按下后喇叭响的时间,这里设置为100ms.执行完成后返回,同时关闭喇叭.等待下一次按键发生. (7)主菜单程序: MAIN:MOV SP,#54H SETB EA SETB EX0 MOV P0,#0C0H LCALL DISPWELCOME JNB P1.1,MODE1 NOP JNB P1.2,MODE2 NOP LCALL DELAY_100MS AJMP MAINMODE1:LJMP SINGCYCLEMODE2:LJMP SINGPRESS 主菜单循环过程中,加入1延时程序主要是避免点阵LED在显示欢迎界面时刷新过快导致某些LED误点亮. (8)点阵LED欢迎界面程序 LED点阵某个LED点亮的条件是列为高电平,行为低电平,LED点阵列为公共端,由1个595驱动,既对列串行输入8位数据,决定哪几列点亮.因为该点阵是双色的,所以由两个595级联来驱动,一个驱动红色LED,一个驱动绿色LED,所以对行需要串行输入16位数据来决定哪一行哪种颜色点亮.下述程序中,50H存放带点亮列,51H存放绿色带点亮行,52H存放红色带点亮行.因为595具有锁存功能,所以点阵为静态显示,但是下述程序执行一次,改变一次显示内容,最终可以看到一个动态的欢迎界面.DISPWELCOME: PUSH PSW PUSH ACCMOV R2,#00HDISPWELCOME1:JB 2FH,WHICH MOV DPTR,#WELCOME AJMP ROLLWHICH:MOV DPTR,#WELCOME1ROLL: MOV A,R2 MOVC A,A+DPTR MOV 50H,A INC R2 MOV A,R2 MOVC A,A+DPTR MOV 51H,A INC R2 MOV A,R2 MOVC A,A+DPTR MOV 52H,A NOP MOV A,51H NOP MOV R5,#8J510: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J510 MOV R5,#8 MOV A,52H NOPJ520: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J520 NOP SETB P1.5 NOP CLR P1.5 NOP MOV A,50H NOP MOV R5,#8J40: RLC A MOV P3.7,C SETB P3.6 NOP CLR P3.6 DJNZ R5,J40 SETB P3.5 NOP CLR P3.5 NOP INC R2 CJNE R2,#60,RETURN0 MOV R2,#00H CPL 2FHRETURN0: POP ACC POP PSWRET 因为欢迎界面中需要两种不同颜色的LED,所以-行为选择显示的颜色,有2FH作为标志位,当需要显示红色时,从表#welcome中读取数据,红色显示完后,取反2FH,既从#welcome1读取数据. -行为将待显示内容输入寄存器并显示的程序,因为刷新显示时,需要改变50H,51H,52H的值,所以#welcome(或#welcome1)表中从头开始数每三个字节为一个显示画面.R2为数据指针,每运送完行或列就自加1,由于一种颜色的欢迎界面由20个画面组成,所以#welcome(或#welcome1)中有60个字节数据,R2在显示完成后也会为60,因此在-行中判断R2是否为60,为60则表明一种颜色的界面已经完成.取反标志位2FH,进入另一种颜色的欢迎界面. (9)点阵显示音调高低程序:该子程序比欢迎程序要简单,因为只需让所有列都点亮,然后改变点亮行就可以显示音调的相对高低了.所以50H,52H均为高电平.点亮行数据51H的值由R0中存储的简谱决定.在单曲循环发音时长模块既T1中断程序的第行,按键发音KEYVALUE子程序的第行,分别是将乐谱中的简谱或者计算出按键对应的简谱存入R0,在调用该子程序时,以R0为指针,再#DISPPITCH表中找到对应的行寄存器的内容,然后输送给51H.子程序如下:DISP: PUSH PSW PUSH ACC MOV A,R0 MOV DPTR,#DISPPITCH MOVC A,A+DPTR MOV 51H,A MOV 50H,#0FFH MOV 52H,#0FFH NOP MOV R5,#8 MOV A,51HJ51: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J51 MOV R5,#8 MOV A,52HJ52: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J52 NOP SETB P1.5 NOP CLR P1.5 MOV A,50H MOV R5,#8J4: RLC A MOV P3.7,C SETB P3.6 NOP CLR P3.6 DJNZ R5,J4 SETB P3.5 NOP CLR P3.5 POP ACC POP PSW RET-行就是确定51H的值,既哪几行点亮.后续程序与前面相同. (10)熄灭点阵子程序:熄灭程序更为简单,只需要将50H,51H,52H分别赋值0FFH,再输送到3片595,则点阵熄灭,子程序如下:DISPNONE: PUSH PSW PUSH ACCMOV 50H,#0FFH MOV 51H,#0FFH MOV 52H,#0FFH NOP MOV R5,#8 MOV A,51HJ51N: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J51N MOV R5,#8 MOV A,52HJ52N: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J52N NOP SETB P1.5 NOP CLR P1.5 MOV A,50H MOV R5,#8J4N: RLC A MOV P3.7,C SETB P3.6 NOP CLR P3.6 DJNZ 44H,J4N SETB P3.5 NOP CLR P3.5 POP ACC POP PSW RET (11)播放/暂停程序:播放暂停由外部中断1控制,只在单曲循环模式有效,通过检验标志位20H来实现,程序如下:OUTINT1: PUSH PSW PUSH ACC JB 20H,PAUSE SETB 20H SETB TR0 SETB TR1 AJMP RETURNAPAUSE:CLR 20H CLR TR1 CLR TR0RETURNA: POP ACC POP PSW RETI-行既检验喇叭处于播放状态还是停止状态,若20H=0,则会将20H置位,启动定时器T0,T1,开始播放音乐.若20H=1,则会跳转到,置零20 H位,停止T0、T1,喇叭暂停播放,最后返回单曲循环初始化程序部分等待. (12)返回主菜单程序:该功能由外部中断0实现,因为外部中断0在任何时刻都有效,所以只需在外部中断0子程序中清零单曲循环,按键发音的模式标志位21H,22H即可,这样在各自的循环等待定时器中断的过程中检查到21H或22H为0,则会自动返回主菜单.程序如下:OUTINT0:PUSH PSW PUSH ACC CLR 21H CLR 22HCLR TR0CLR TR1POP ACCPOP PSWRETI(13)延时子程序:DELAY_100MS:PUSH PSW PUSH ACC MOV R3,#250 MOV R4,#40MOV R6,#10D_100MS1: DJNZ R3,D_100MS1 MOV R3,#250 DJNZ R4,D_100MS1MOV R4,#40DJNZ R6,D_100MS1MOV R6,#10POP ACCPOP PSWRETDELAY_200MS:PUSH PSW PUSH ACC MOV R3,#250 MOV R4,#40MOV R6,#20D_200MS1: DJNZ R3,D_200MS1 MOV R3,#250 DJNZ R4,D_200MS1MOV R4,#40DJNZ R6,D_200MS1MOV R6,#20POP ACCPOP PSWRET上述13个模块化程序相互配合实现了本次课设要求的功能.附录:完整程序ORG 0000HAJMP MAINORG 0003HLJMP OUTINT0ORG 000BHLJMP TINT0ORG 0013HLJMP OUTINT1ORG 001BHLJMP TINT1ORG 0030HMAIN:MOV SP,#54H SETB EA SETB EX0 CLR ET0 CLR ET1 CLR EX1 CLR TR0 CLR TR1 MOV P0,#0C0H MOV R2,#00HMAIN1:LCALL DISPWELCOME JNB P1.1,MODE1 NOP JNB P1.2,MODE2 NOP LCALL DELAY_100MS AJMP MAIN1MODE1:LJMP SINGCYCLEMODE2:LJMP SINGPRESSSINGCYCLE:NOP JNB P1.1,NEXT LJMP MAINNEXT: LCALL DISPNONE CLR 20H SETB 21H SETB EX1 SETB ET0 SETB ET1 MOV P0,#0F9H MOV TMOD,#21H MOV R1,#40 MOV R2,#25 MOV TH1,#00H MOV TL1,#06H MOV TH0,#0FCH MOV TL0,#0AEH MOV 42H,#20H MOV 43H,#00H CLR P1.0SINGCYCLE1:JB 21H,RETURN1 LJMP MAINRETURN1: AJMP SINGCYCLE1SINGPRESS:NOP JNB P1.2,NEXTA LJMP MAINNEXTA: SETB 22H MOV TMOD,#11H MOV P0,#0A4H SETB ET0SINGPRESS1:LCALL DISPNONE MOV P2,#0F0H NOP MOV A,P2 ANL A,#0F0H MOV 30H,A MOV P2,#0FH NOP MOV A,P2 ANL A,#0FH ORL A,30H MOV 20H,A CJNE A,#0FFH,CALCULATE CLR TR0 JB 22H,RETURN2 LJMP MAINCALCULATE:LCALL KEYVALUERETURN2: AJMP SINGPRESS1KEYVALUE: PUSH PSW PUSH ACC MOV R7,#00H JB 00H,PLUS4 MOV A,R7 ADD A,#0 MOV R7,APLUS4: JB 01H,PLUS8 MOV A,R7 ADD A,#4 MOV R7,APLUS8: JB 02H,PLUS12 MOV A,R7 ADD A,#8 MOV R7,APLUS12: JB 03H,PLUS41 MOV A,R7 ADD A,#12 MOV R7,APLUS41: JB 04H,PLUS3 MOV A,R7 ADD A,#4 MOV R7,APLUS3: JB 05H,PLUS2 MOV A,R7 ADD A,#3 MOV R7,APLUS2: JB 06H,PLUS1 MOV A,R7 ADD A,#2 MOV R7,APLUS1: JB 07H,RETURNB MOV A,R7 ADD A,#1 MOV R7,ARETURNB: MOV R0,A RL A MOV R7,A MOV DPTR,#PITCH MOVC A,A+DPTR MOV 40H,A INC R7 MOV A,R7 MOVC A,A+DPTR MOV 41H,A LCALL DISP MOV R7,#00H SETB TR0 LCALL DELAY_100MS POP ACC POP PSW RETTINT0:PUSH PSW PUSH ACC MOV TH0,40H MOV TL0,41H CPL P1.0 POP ACC POP PSW RETITINT1:PUSH PSW PUSH ACC DJNZ R1,REBACK MOV R1,#40 DJNZ R2,REBACK MOV R2,#25 MOV A,#00H CLR C MOV A,43H ADD A,#1 MOV 43H,A MOV A,#00H ADDC A,42H MOV 42H,A MOV A,#00H MOV DPH,42H MOV DPL,43H MOVC A,A+DPTR MOV 44H,A MOV R0,A LCALL DISP CJNE A,#00H,REPEAT CLR TR0 AJMP REBACKREPEAT:CJNE A,#99H,GOON MOV 42H,#1FH MOV 43H,#0FFH AJMP REBACKGOON: SETB TR0 MOV 44H,A RL A MOV R7,A MOV DPTR,#PITCH MOVC A,A+DPTR MOV 40H,A INC R7 MOV A,R7 MOVC A,A+DPTR MOV 41H,AREBACK:POP ACC POP PSW RETIDISPWELCOME: PUSH PSW PUSH ACCDISPWELCOME1:JB 2FH,WHICH MOV DPTR,#WELCOME AJMP ROLLWHICH:MOV DPTR,#WELCOME1ROLL: MOV A,R2 MOVC A,A+DPTR MOV 50H,A INC R2 MOV A,R2 MOVC A,A+DPTR MOV 51H,A INC R2 MOV A,R2 MOVC A,A+DPTR MOV 52H,A NOP MOV A,51H NOP MOV R5,#8J510: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J510 MOV R5,#8 MOV A,52H NOPJ520: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J520 NOP SETB P1.5 NOP CLR P1.5 NOP MOV A,50H NOP MOV R5,#8J40: RLC A MOV P3.7,C SETB P3.6 NOP CLR P3.6 DJNZ R5,J40 SETB P3.5 NOP CLR P3.5 NOP INC R2 CJNE R2,#60,RETURN0 MOV R2,#00H CPL 2FHRETURN0:POP ACC POP PSW RETDISP: PUSH PSW PUSH ACC MOV A,R0 MOV DPTR,#DISPPITCH MOVC A,A+DPTR MOV 51H,A MOV 50H,#0FFH MOV 52H,#0FFH NOP MOV R5,#8 MOV A,51HJ51: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J51 MOV R5,#8 MOV A,52HJ52: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J52 NOP SETB P1.5 NOP CLR P1.5 MOV A,50H MOV R5,#8J4: RLC A MOV P3.7,C SETB P3.6 NOP CLR P3.6 DJNZ R5,J4 SETB P3.5 NOP CLR P3.5 POP ACC POP PSW RETDISPNONE:PUSH PSW PUSH ACC MOV 50H,#0FFH MOV 51H,#0FFH MOV 52H,#0FFH NOP MOV R5,#8 MOV A,51HJ51N: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J51N MOV R5,#8 MOV A,52HJ52N: RLC A MOV P1.7,C SETB P1.6 NOP CLR P1.6 DJNZ R5,J52N NOP SETB P1.5 NOP CLR P1.5 MOV A,50H MOV R5,#8J4N: RLC A MOV P3.7,C SETB P3.6 NOP CLR P3.6 DJNZ R5,J4N SETB P3.5 NOP CLR P3.5 NOP POP ACC POP PSW RETOUTINT1: PUSH PSW PUSH ACCAAA: DJNZ 30H,AAA JB 20H,PAUSE SETB 20H SETB TR0 SETB TR1 AJMP RETURNAPAUSE:CLR 20H CLR TR1 CLR TR0RETURNA: POP ACC POP PSW RETIOUTINT0:PUSH PSW PUSH ACC CLR 21H CLR 22HCLR TR0CLR TR1POP ACCPOP PSWRETIDELAY_100MS:PUSH PSW PUSH ACC MOV R3,#250 MOV R4,#40MOV R6,#10D_100MS1: DJNZ R3,D_100MS1 MOV R3,#250 DJNZ R4,D_100MS1MOV R4,#40DJNZ R6,D_100MS1MOV R6,#10POP ACCPOP PSWRETDELAY_20MS:PUSH PSW PUSH ACC MOV R3,#250 MOV R4,#40MOV R6,#2D_20MS1: DJNZ R3,D_20MS1 MOV R3,#250 DJNZ R4,D_20MS1MOV R4,#40DJNZ R6,D_20MS1MOV R6,#2POP ACCPOP PSWRETDELAY_500MS:PUSH PSW PUSH ACC MOV R3,#250 MOV R4,#40MOV R6,#50D_500MS1: DJNZ R3,D_500MS1 MOV R3,#250 DJNZ R4,D_500MS1MOV R4,#40DJNZ R6,D_500MS1MOV R6,#50POP ACCPOP PSWRETORG 1000HPITCH:DB 0F8H,94H,0F8H,94h,0F9H,5CH,0FAH,15H,0FAH,68H,0FBH,05H,0FBH,90H,0FCH,0CH DB 0FCH,4AH,0FCH,0AEH,0FDH,0AH,0FDH,34H,0FDH,82H,0FDH,0C8H,0FEH,06H DB 0FEH,25H,0FEH,57H,0FEH,85HORG 2000HSCORE: DB 10,9,8,9,6,6,6,8,9,10,12,13,9,9,10,9,8,9,6,6,6,3,3,5,6,6,6,0 DB 10,9,8,9,6,6,6,8,9,10,12,13,9,9,10,9,8,9,6,6,6,3,3,5,6,6,9,9,8,8,0,0 DB 9,9,8,8,0 DB 10,9,8,9,6,6,6,8,9,10,12,13,9,9,10,9,8,9,6,6,6,3,3,5,6,6,6,0 DB 10,9,8,9,6,6,6,8,9,10,12,13,9,9,10,9,8,9,6,8,8,3,3,5,6,6,6,9,9,8,0 DB 0,0,0,0 DB 10,10,12,12,13,13,13,0 DB 10,12,13,9,9,8,0 DB 10,12,13,9,9,8,8,6,6,13,13,8,12,0,0 DB 10,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年国际足球赛事场地租赁合同
- 2024年建筑施工劳务承包简约合同样本
- 2024桩基础工程专业分包合同模板
- 2024代理合同样式
- 2024技术参股合作协议书
- 2024版药品代理合同
- 二手房交易合同
- 店面承租协议书范本
- 2024项目开发全过程专项法律服务合同
- 2024常用合作合同范本
- 2023~2024学年第一学期高一期中考试数学试题含答案
- 2023年全国中学生英语能力竞赛初三年级组试题及答案
- (完整版)青年就业创业见习基地汇报材料(完整版)
- 月光(羽泉)原版五线谱钢琴谱正谱乐谱.docx
- 660MW机组空预器声波吹灰器可行性研究报告最新(精华版)
- 控制柜安装施工方案
- 动车组火灾检测(报警)系统
- 水面垃圾自动打捞船的设计 (全套图纸)
- 烟草企业安全生产标准化 规范
- 装饰施工技术标准及要求
- 2018秋七年级虎外考试卷英语试卷
评论
0/150
提交评论