




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
P1口作为8个按键输入,其中P1.0-1.6作为七个音。P1.7是播放/弹奏切换按键。P3.3是喇叭输出。P2口连接七断数码管用于显示播放功能时的播放歌曲所在位置。;R5音调延时值;R6从内存中读到的数据 ;9H-TABLE111数据;20H-TL1初值;21H-TH1初值;22H-修正后的按键值;30H-TABLE111地址计数器 ;0AH-弹奏音调延时值;0BH-内存地址;0CH-读写到内存的数据;0DH-按键值;0EH-内存器件地址 PORT1 EQU P1PORT2 EQU P2SCK BIT P3.0SDA BIT P3.1 ORG 0H SJMP MAIN ORG 0BH LJMP TIME0 ORG 1BH LJMP TIME1 ORG 30H;-MAIN: CLR TR0 CLR TR1 MOV SP,#4FH MOV R0,#100 CLR P3.4 LCALL DELAY5 MOV 9H,#0 MOV 0AH,#0 MOV 0BH,#0 MOV 0CH,#0 MOV TMOD,#11H MOV IE,#8AH MOV 0DH,#88H;-扫描放歌和弹奏建-XIAN: JB P3.2,QT1 ;没按下放歌建跳qt1 SETB P3.4 ;按下放歌建LED发光 LCALL DELAY1 LCALL DELAY1 JNB P3.2,$ ;放歌建没释放原地等待 LCALL DELAY1 LCALL DELAY1Q1: LCALL SAO CJNE R0,#0,Q11 SJMP Q1Q11: LCALL TRANF JZ MAIN MOV 0DH,A ;0DH=按键值 LJMP SING0QT1: JB P3.3,QT4 ;没按弹奏建跳QT3 SETB P3.4 LCALL DELAY1 LCALL DELAY1 JNB P3.3,$ ;弹奏键没释放原地等待 LCALL DELAY1 LCALL DELAY1QT2: LCALL SAO CJNE R0,#0,QT3 SJMP QT2QT3: LCALL TRANF CJNE A,#0BH,QT11 ;若按键值=11转(B键)MAIN;!=11键转QT11 LJMP MAINQT11: JC MAIN ;若按键值11继续 CJNE A,#0CH,M4 ;若按键值!=12转M1;=12(C键)继续 ;即C键没按下转M1 MOV PORT1,#11101111B JNB P1.3,$ ;若C键没释放原地等待 MOV 0BH,#0 LJMP LOOP ;输入乐曲存储并演奏 M4: LCALL DELAY1 LCALL DELAY1 LCALL RWX80 ;擦写内存数据;全部为1 LJMP MAINQT4: LJMP XIAN ;返回重新扫描放歌和弹奏建;-RWX80: CJNE A,#0DH,MM2 ;A!=13(D键)转M2;若为D键继续;D键没按下转M2 MOV 0EH,#0A2H ;0EH=162=10100010B;0EH为24c16页地址 SJMP MMMM2: CJNE A,#0EH,MM3 ;A!=14(E键)转M3;E键没按下转M3 MOV 0EH,#0A4H ;0EH=164=10100100B SJMP MMMM3: MOV 0EH,#0A6H ;F键按下;0EH=166=10100110BMM: MOV 0BH,#0 MOV 0CH,#0HRWX801: LCALL RKX02 LCALL WKX02 INC 0BH INC 0BH INC 0BH INC 0BH MOV A,0BH CJNE A,#0FFH,MM4 MOV 0BH,#0MM4: INC 0CH INC 0CH INC 0CH INC 0CH CJNE A,#0H,RWX801 RET;-读数据-RKX02: LCALL START MOV A,#0A0H ;24C16寻址10100000写 LCALL WRBYT LCALL TACK MOV A,0BH ;发送24c16子地址 LCALL WRBYT LCALL TACK LCALL START MOV A,#0A1H ;24C16寻址10100001读 LCALL WRBYT LCALL TACK ;LCALL WRBYT ;LCALL TACK MOV 10H,R6 LCALL RDBYT LCALL NOTACK ;LCALL WRBYT ;LCALL TACK MOV 11H,R6 LCALL RDBYT LCALL NOTACK ;LCALL WRBYT ;LCALL TACK MOV 12H,R6 LCALL RDBYT LCALL TACK MOV 13H,R6 LCALL NOTACK LCALL STOP RET;-写数据-WKX02: MOV R1,#10H LCALL START MOV A,#0A0H LCALL WRBYT LCALL TACK MOV A,0BH LCALL WRBYT LCALL TACK MOV A,0CH LCALL WRBYT LCALL TACK MOV R0,#4WKX021: MOV A,R1 LCALL WRBYT LCALL TACK INC R1 DJNZ R0,WKX021 LCALL STOP LCALL DELAY5 LCALL DELAY5 RET;-输入乐曲存储并演奏-LOOP: CLR TR0 CLR TR1AAA: JB P3.3,LOOP4 ;弹奏键按下 向下执行存储乐曲并演奏 否则转LOOP4继续输入乐曲 LCALL DELAY1 LCALL DELAY1 MOV 0CH,#0 LCALL WBAY ;存00结束乐谱 LCALL DELAY1 MOV 0DH,#12 LJMP SING0 ;播放弹奏的乐曲 LOOP4: LCALL SAO CJNE R0,#0,KEYIN LJMP LOOPKEYIN: LCALL TRANF SWAP A MOV 09H,A SWAP A CJNE A,#0,ZZZ ;非0键转ZZZ CLR TR1 CLR TR0 LJMP ZZZZ ;0键转ZZZZZZZ: DEC A ;A为按键值;因从1键值音调序号对应TABLE频率表0位置;故减1 MOV 22H,A ;22H存修正后(A=A-1)的按键值 CLR C RLC A ;A*2因TABLE一个单元为2字节(1字),指向该单元的第1个字节 MOV DPTR,#TABLE MOVC A,A+DPTR MOV TH1,A ;TH1赋初值 MOV 21H,A ;TH1初值存21H MOV A,22H CLR C RLC A ;A*2因TABLE一个单元为2字节(1字) INC A ;指向该单元的第2个字节 MOVC A,A+DPTR MOV TL1,A ;TL1赋初值 MOV 20H,A ;TL1初值存20H MOV TH0,#0C2H MOV TL0,#0F6H SETB TR0 SETB TR1ZZZZ: MOV A,PORT1 ORL A,#0F0H CJNE A,#0FFH,ZZZZ CLR TR0 CLR TR1 MOV A,0AH ;弹奏乐谱频率延迟值赋A CLR C RRC A CLR C RRC A CLR C RRC A ;弹奏乐谱频率延迟值/8 CJNE A,#0FH,NODE SJMP DDDNODE: JC DDD MOV A,#0FH ;弹奏乐谱频率延迟值/8后;若15则=15DDD: ORL 09H,A ; MOV 0AH,#0WWW: MOV A,09H MOV 0CH,A LCALL WBAY LCALL DELAY5 INC 0BH LJMP LOOP;-频率延时-DELAY: MOV R7,#125DLY2: MOV R4,#02DLY3: MOV R3,#248 DJNZ R3,$ DJNZ R4,DLY3 DJNZ R7,DLY2 DJNZ R5,DELAY RET;-延时-DELAY1: MOV R7,#30 MOV R6,#0S1: DJNZ R6,$ DJNZ R7,S1 RETDELAY5: MOV R7,#10 MOV R6,#0S5: DJNZ R6,$ DJNZ R7,S5 RET;-扫描按键子程序-SAO: MOV R0,#4 MOV R3,#11101111B MOV R2,#11111111BNLINE1: MOV A,R3 MOV PORT1,A MOV A,PORT1 ORL A,#0F0H CJNE A,#0FFH,KEYIN1 MOV A,R3 RL A MOV R3,A DJNZ R0,NLINE1 RETKEYIN1: LCALL DELAY1 LCALL DELAY1 LCALL DELAY1 LCALL NOPEN RET;-按键延时-NOPEN: MOV A,PORT1 MOV R2,A ORL A,#0F0H CJNE A,#0FFH,NOPEN1 SJMP NOPENNOPEN1: LCALL DELAY1 LCALL DELAY1 RET;-键盘码转换为按键值-TRANF: MOV B,#0 MOV A,R2 C1: RRC A JNC C2 ;C=0跳C2 INC B INC B INC B INC B ;B=B+4 LJMP C1C2: MOV A,R2 RR A RR A RR A RR AC3: RRC A JNC C4 INC B LJMP C3C4: MOV A,B ;B为按键值 RET;-按键值散转表-SING0: MOV 30H,#00H ;30H为TABLE111地址计数器NEXT: MOV A,0DH CJNE A,#1,NN1 MOV DPTR,#TABLE1 LJMP WWNN1: CJNE A,#2,NN2 MOV DPTR,#TABLE2 LJMP WWNN2: CJNE A,#3,NN3 MOV DPTR,#TABLE3 LJMP WWNN3: CJNE A,#4,NN4 MOV DPTR,#TABLE4 LJMP WWNN4: CJNE A,#5,NN5 MOV DPTR,#TABLE5 LJMP WWNN5: CJNE A,#6,NN6 MOV DPTR,#TABLE6 LJMP WWNN6: CJNE A,#7,NN7 MOV DPTR,#TABLE7 LJMP WWNN7: CJNE A,#8,NN8 MOV DPTR,#TABLE8 LJMP WWNN8: CJNE A,#9,NN9 MOV DPTR,#TABLE9 LJMP WWNN9: CJNE A,#10,NN10 MOV DPTR,#TABLE10 LJMP WWNN10: CJNE A,#11,NN11 MOV DPTR,#TABLE11 LJMP WWNN11: CJNE A,#12,NN12 MOV 0EH,#0A1H MOV 0BH,#0 LJMP NNNN12: CJNE A,#13,NN13 ;MOV 0EH,#0A3H ;MOV 0BH,#0H LJMP MAINNN13: CJNE A,#14,NN14 ;MOV 0EH,#0A5H ;MOV 0BH,#0H LJMP MAINNN14: CJNE A,#15,NN ;MOV 0EH,#0A7H ;MOV 0BH,#00H LJMP MAIN;-NN: LCALL RBAY ;读内存 NNT: MOV A,R6 ;R6为从内存中读到的数据 LJMP IIC;-奏乐-WW: MOV A,30H JZ WW0 MOVC A,A+DPTR SJMP IICWW0: MOVC A,A+DPTR MOV 30H,#1 MOV 31H,A SJMP WWIIC: MOV R2,A JZ ENDF ;A=00 结束标志跳ENDF程序重新开始 ANL A,#0FH ;低4位为延时值 MOV R5,A ;R5延时值;频率延时(DELAY)程序用 MOV A,R2 SWAP A ANL A,#0FH ;高4位为音调序号若 JNZ SING ;为0则 CLR TR1 ;为休止符 SJMP DLY1SING: DEC A ;频率表从0位置开始,音调序号表从1位置开始,0位置数据是解密数据 PUSH ACC MOV A,0DH CJNE A,#11,BD ;若11(B)键,即为CF键转BD0;若=11(B)键转DE,音调序号+31H POP ACC SJMP DEBD: POP ACC JNC BD0DE: ADD A,31HBD0: MOV 22H,A RL A MOV DPTR,#TABLE MOVC A,A+DPTR MOV TH1,A MOV 21H,A MOV A,22H RL A INC A MOVC A,A+DPTR MOV TL1,A MOV 20H,A SETB TR1DLY1: INC R5 ACALL DELAY INC 30H INC 0BH MOV A,0DH ;取按键值;判断是读内存键还是读乐谱序号键 CJNE A,#0BH,NNBD ;若按键值11取下1个乐谱;若按键值为1215(CF)转NNBD读内存 NEXT1: LJMP NEXTNNBD: JC NEXT1 LJMP NN ;读内存 ;-程序重新开始-ENDF: CLR TR1 LJMP MAIN;-T0中断服务弹奏频率延迟时间-TIME0: INC 0AH ;弹奏乐谱频率延迟值 MOV TH0,#0C2H MOV TL0,#0F6H ;定时初值 =49910 计数次数为 216(65536)-49910=15626=16ms RETI;-T1中断服务发声-TIME1: PUSH ACC PUSH PSW MOV TL1,20H MOV TH1,21H CPL P3.7 POP PSW POP ACC RETI;-读数据-RBAY: LCALL START MOV A,#0A0H LCALL WRBYT LCALL TACK MOV A,0BH LCALL WRBYT LCALL TACK LCALL START MOV A,0EH LCALL WRBYT LCALL TACK LCALL RDBYT LCALL NOTACK LCALL STOP RET;-写数据-WBAY: LCALL START MOV A,#0A0H LCALL WRBYT LCALL TACK MOV A,0BH LCALL WRBYT LCALL TACK MOV A,0CH LCALL WRBYT LCALL TACK LCALL STOP RET;-写数据-;WKX03: MOV R1,#10H ;LCALL START ;MOV A,#0A2H ;LCALL WRBYT ;LCALL TACK ;MOV A,0CH ;LCALL WRBYT ;LCALL TACK ;MOV R0,#4;WKX031: MOV A,R1 ;LCALL WRBYT ;LCALL TACK ;INC R1 ;DJNZ R0,WKX031 ;LCALL STOP ;LCALL DELAY1 ;LCALL DELAY1 ;RET;-启动24C16读写时序-START: SETB SDA NOP NOP NOP NOP SETB SCK NOP NOP NOP NOP CLR SDA NOP NOP NOP NOP CLR SCK NOP NOP NOP NOP RET;-停止信号-STOP: CLR SDA NOP NOP NOP NOP SETB SCK NOP NOP NOP NOP SETB SDA NOP NOP NOP NOP ;CLR SCK ;NOP ;NOP ;NOP ;NOP RET;-应答信号-TACK: SETB SDA ;CLR SDA NOP NOP NOP NOP SETB SCK NOP NOP NOP NOP CLR SCK NOP NOP NOP NOP ;SETB SDA ;NOP ;NOP ;NOP ;NOP RET;-CHACK: SETB SDA NOP NOP NOP NOP SETB SCK NOP NOP NOP NOP MOV C,SDA CLR SCK NOP NOP NOP NOP RET;-NOTACK: ;NOP SETB SDA NOP NOP NOP NOP SETB SCK NOP NOP NOP NOP CLR SCK NOP NOP NOP NOP RET ;-读IIC-24C16-RDBYT: MOV R7,#8 SETB SDA NOP NOP NOP NOPRDBYT1: SETB SCK NOP NOP NOP NOP NOP NOP MOV C,SDA MOV A,R6 RLC A MOV R6,A CLR SCK NOP NOP NOP NOP NOP NOP DJNZ R7,RDBYT1 RET;-写IIC-24C16-WRBYT: MOV R7,#8WRBYT1: RLC A MOV SDA,C ;JC WRBYT2 ;CLR SDA ;NOP ;NOP ;NOP ;NOP SETB SCK NOP NOP NOP NOP NOP NOP CLR SCK NOP NOP NOP NOP NOP NOP DJNZ R7,WRBYT1 RET;WRBYT2: SETB SDA ;NOP ;NOP ;NOP ;NOP ;SETB SCK ;NOP ;NOP ;NOP ;NOP ;CLR SCK ;NOP ;NOP ;NOP ;NOP ;CLR SDA ;NOP ;NOP ;NOP ;NOP ;DJNZ R7,WRBYT1 RET;-;TABLE为频率值 -TABLE: DW 0F88CH,0F95BH,0FA15H,0FA67H,0FB04H,0FB90H,0FC0CH ;低音17 DW 0FC44H,0FCACH,0FD09H,0FD34H,0FD82H,0FDC8H,0FE06H ;中音17 DW 0FE22H,0FE56H,0FE85H,0FE9AH,0FEC1H,0FEE4H,0FF03H ;高音17;-TABLE111为音调序号和音调延时表调;数据高4位是-;-音调序号;低4位是音调延时值-;-;兰花草-TABLE1: DB 02H,42H,82H,82H,82H,84H,02H,72H,62H,72H,62H DB 52H,48H,0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H DB 12H,0A2H,0D2H,92H,88H,82H,0B2H,0B2H,0A2H,84H DB 02H,72H,62H,72H,62H,52H,44H,02H,12H,12H,62H DB 62H,52H,44H,02H,82H,72H,62H,52H,32H,48H,00;-;哈巴-TABLE2: DB 04H,42H,42H,42H,52H,64H,04H,62H,62H,62H,72H,84H,04H DB 92H,92H,82H,72H,64H,04H,82H,82H,52H,62H,44H,04H DB 42H,42H,42H,52H,64H,04H,62H,62H,62H,72H,84H,04H DB 92H,92H,82H,72H,64H,04H,82H,82H,52H,62H,44H,04H,00H;-;生日快乐-TABLE3: DB 04H,82H,01H,81H,94H,84H,0B4H,0A4H,04H DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,0F4H,0D4H,0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00H;-;不倒翁-TABLE4: DB 04H,84H,94H,88H,64H,54H,68H,84H,64H DB 54H,44H,62H,82H,42H,62H,58H;1 DB 84H,94H,88H,64H,54H,68H,84H,64H;2 DB 54H,44H,52H,42H,52H,62H,48H,00;-;妹妹背着洋娃娃-TABLE5: DB 04H,84H,02H,82H,64H,54H,64H,54H,48H,64H DB 02H,52H,44H,24H,14H,24H,18H;1 DB 24H,02H,22H,42H,24H,44H,54H,68H,54H;2 DB 02H,52H,84H,84H,54H,64H,48H,00;-;两只老虎-TABLE6: DB 04H,44H,54H,64H,44H,44H,54H,64H,44H,64H,74H,88H,64H,74H,88H;1 DB 82H,92H,82H,72H,64H,44H,82H,92H,82H DB 72H,64H,44H,44H,84H,48H,44H,14H,48H,00;-;三只小猫-TABLE7: DB 04H,62H,82H,82H,62H,98H,92H,0B2H,0B2H,82H,98H DB 2H,82H,82H,52H,68H,92H,0B2H,0B2H,82H,98H DB 62H,82H,82H,62H,92H,92H,94H DB 92H,0B2H,0B2H,92H,84H,94H,0B8H,0B4H,04H,00;-;绿-TABLE8: DB 02H,42H,82H,82H,82H,84H,02H,72H,62H,72H,62H,52H,48H DB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H DB 12H,0A2H,0D2H,92H,88H,82H,0B2H,0B2H,0A2H,84H DB 02H,72H,62H,72H,62H,52H,44H,02H,12H DB 12H,62H,62H,52H,44H,02H,82H,72H,62H,52H,32H,48H,00;-;绿岛小夜曲-TABLE9: DB 00H,0C2H,0D2H,0F2H,0D2H,0C4H,0D2H,0F2H DB 0D2H,0C2H,0A2H,92H,0A8H DB 92H,0A2H,0C2H,0A2H,92H,82H,62H,82H,58H,58H DB 0C4H,22H,0D2H,0C4H,0A4H,92H,0A2H,92H,82H,92H,0A4H,092H DB 84H,82H,32H,54H,22H,62H,052H,058H DB 64H,22H,52H,64H,84H,92H,0A2H,92H,82H,92H,0A4H,0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民航电报基础知识培训课件
- DBJT15-156-2019 内河沉管隧道管养技术规范
- 发动机活塞环拆装课件
- 发动机气门拆装课件
- 农业灌溉用水高效利用技术:2025年农业节水灌溉技术培训报告
- 内科护理(中级)练习题AB卷附答案详解
- 难点解析-沪科版9年级下册期末试卷【预热题】附答案详解
- 在线客服理论知识培训课件
- 3-m-Hydroxyphenyl-propanoyl-CoA-3-m-Hydroxyphenyl-propanoyl-coenzyme-A-生命科学试剂-MCE
- 在校学生防灾知识培训课件
- (完整版)韩国商法
- 去骨瓣减压术的护理
- 慈善机构的财务管理
- 《武汉大学分析化学》课件
- 医学影像学与辅助检查
- 电力工程竣工验收报告
- 双J管健康宣教
- 如何提高美术课堂教学的有效性
- 水电站新ppt课件 第一章 水轮机的类型构造及工作原理
- 护理查对制度课件
- 市政工程占道施工方案
评论
0/150
提交评论