8255的51单片机电子琴设计.doc_第1页
8255的51单片机电子琴设计.doc_第2页
8255的51单片机电子琴设计.doc_第3页
8255的51单片机电子琴设计.doc_第4页
8255的51单片机电子琴设计.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

BUZZ EQU P1.0 ORG 0000H LJMP START ORG 000BH LJMP INT_T0 ORG 0100HSTART: CLR EA MOV TMOD,#01H ;设置定时器0为工作模式1 SETB ET0 ;开定时器0中断 SETB EA ;开总中断 CLR TR0 ;关闭定时器0 MOV R1,#0FFHKE: LCALL KEY CJNE R1,#0FFH,KE2 ; 无键按下,返回start CLR TR0 SJMP STARTKE2: CJNE R1,#1FH,KE1 ;MON键按下,音乐 LJMP START0KE1: LCALL KEY CJNE R1,#09H,KEY2 ;K0键按下 MOV 30H,#0FEH ;设置音阶7 MOV 31H,#06H LJMP SET_TIMER KEY2: CJNE R1,#08H,KEY3 ;K1键按下 MOV 30H,#0FEH ;设置音阶1 MOV 31H,#022H LJMP SET_TIMER KEY3: CJNE R1,#0AH,KEY4 ;K2键按下 MOV 30H,#0FEH ;设置音阶#1 MOV 31H,#03DH LJMP SET_TIMER KEY4: CJNE R1,#0CH,KEY5 ;K3键按下 MOV 30H,#0FEH ;设置音阶2 MOV 31H,#056H LJMP SET_TIMER KEY5: CJNE R1,#01H,KEY6 ;K4键按下 MOV 30H,#0FEH ;设置音阶#2 MOV 31H,#06EH LJMP SET_TIMER KEY6: CJNE R1,#03H,KEY7 ;K5键按下 MOV 30H,#0FEH ;设置音阶3 MOV 31H,#085H LJMP SET_TIMERKEY7: CJNE R1,#05H,KEY8 ;K6键按下 MOV 30H,#0FEH ;设置音阶4 MOV 31H,#09AH LJMP SET_TIMER KEY8: CJNE R1,#00H,KEY9 ;K7键按下 MOV 30H,#0FEH ;设置音阶#4 MOV 31H,#0AEH LJMP SET_TIMERKEY9: CJNE R1,#02H,KEY10 ;K8键按下 MOV 30H,#0FEH ;设置音阶5 MOV 31H,#0C1H LJMP SET_TIMERKEY10: CJNE R1,#04H,KEY11 ;K9键按下 MOV 30H,#0FEH ;设置音阶#5 MOV 31H,#0D3H LJMP SET_TIMERKEY11: CJNE R1,#06H,KEY12 ;KA键按下 MOV 30H,#0FEH ;设置音阶6 MOV 31H,#0E4H LJMP SET_TIMER KEY12:CJNE R1,#07H,KEY13 ;KB键按下 MOV 30H,#0FEH ;设置音阶#6 MOV 31H,#0F4H LJMP SET_TIMERKEY13: CJNE R1,#0EH,KEY14 ;KC键按下 MOV 30H,#0FFH ;设置音阶7 MOV 31H,#03H LJMP SET_TIMERKEY14: CJNE R1,#0FH,KEY15 ;KD键按下 MOV 30H,#0FFH ;设置音阶1 MOV 31H,#011H LJMP SET_TIMERKEY15: CJNE R1,#0DH,KEY16 ;KE键按下 MOV 30H,#0FFH ;设置音阶#1 MOV 31H,#1FH LJMP SET_TIMERKEY16: CJNE R1,#0BH,KEY17 ;KF按下 MOV 30H,#0FFH ;设置音阶2 MOV 31H,#2BH LJMP SET_TIMER KEY17: CJNE R1,#10H,KEY18 ;TV/ME按下,停止 LJMP STARTKEY18: CJNE R1,#12H,KEY19 ;EG/DL按下 MOV 30H,#0FCH ;设置音阶低#1 MOV 31H,#79H LJMP SET_TIMERKEY19: CJNE R1,#14H,KEY20 ;CLB键按下 MOV 30H,#0FCH ;设置音阶低2 MOV 31H,#0ADH LJMP SET_TIMER KEY20:CJNE R1,#16H,KEY21 ;EXEC键按下 MOV 30H,#0FCH ;设置音阶低#2 MOV 31H,#0DCH LJMP SET_TIMERKEY21: CJNE R1,#11H,KEY22 ;RG/FS键按下 MOV 30H,#0FDH ;设置音阶低3 MOV 31H,#0AH LJMP SET_TIMERKEY22: CJNE R1,#13H,KEY23 ;RW/IS键按下 MOV 30H,#0FDH ;设置音阶低4 MOV 31H,#33H LJMP SET_TIMERKEY23: CJNE R1,#15H,KEY24 ;COMP键按下 MOV 30H,#0FDH ;设置音阶低#4 MOV 31H,#5CH LJMP SET_TIMERKEY24: CJNE R1,#17H,KEY25 ;SCAL按下 MOV 30H,#0FDH ;设置音阶低5 MOV 31H,#82H LJMP SET_TIMER KEY25: CJNE R1,#18H,KEY26 ;FI/LS按下 MOV 30H,#0FDH ;设置音阶低#5 MOV 31H,#0A5H LJMP SET_TIMERKEY26: CJNE R1,#1AH,KEY27 ;EV/UN按下 MOV 30H,#0FDH ;设置音阶低6 MOV 31H,#0C7H LJMP SET_TIMERKEY27: CJNE R1,#1CH,KEY28 ;MOVE键按下 MOV 30H,#0FDH ;设置音阶低#6 MOV 31H,#0E7H LJMP SET_TIMER KEY28:CJNE R1,#1EH,KEY29 ;STEP键按下 MOV 30H,#0FFH ;设置音阶高5 MOV 31H,#60H LJMP SET_TIMERKEY29: CJNE R1,#19H,KEY30 ;F2/NX键按下 MOV 30H,#0FFH ;设置音阶高#2 MOV 31H,#37H LJMP SET_TIMERKEY30: CJNE R1,#1BH,KEY31 ;EC/EP键按下 MOV 30H,#0FFH ;设置音阶高3 MOV 31H,#042H LJMP SET_TIMERKEY31: CJNE R1,#1DH,NOKEY ;SRB键按下 MOV 30H,#0FFH ;设置音阶高4 MOV 31H,#4DH LJMP SET_TIMER SET_TIMER: SETB TR0 ;发声 LJMP KENOKEY: CLR TR0 ;无键按下 LJMP KESTART0: MOV 40H,#00HNEXT0: MOV A,40H MOV DPTR,#TABLE MOVC A,A+DPTR ;查表取音调和节拍 MOV R2,A JZ END0 ;为零,返回start ANL A,#0FH MOV R5,A ;将节拍存入R5 MOV A,R2 SWAP A ANL A,#0FH JNZ SING ;根据音调决定是否演奏. CLR TR0 JMP D1SING: DEC A MOV 22H,A ;将音调存入22H. RL A MOV DPTR,#TABLE1 MOVC A,A+DPTR ;根据音调决定定时器初值. MOV TH0,A ;放入TH0 MOV 21H,A MOV A,22H RL A INC A MOVC A,A+DPTR MOV TL0,A ;放入TL0 MOV 20H,A SETB TR0 ;启动定时 D1 :LCALL KEY CJNE R1,#0FFH,D9 LJMP START D9: CALL DELAY CJNE R1,#10H,D8 LJMP START D8: INC 40H JMP NEXT0END0: CLR TR0 JMP STARTINT_T0: ;T0中断服务程序 CJNE R1,#1FH,D6 PUSH ACC PUSH PSW MOV TL0,20H ;重赋初值. MOV TH0,21H CPL P1.0 POP PSW POP ACC SJMP D7 D6:MOV TH0,30H ;定时器赋初值 MOV TL0,31H CPL BUZZ ;输出方波 D7:RETI KEY:MOV A,#81H MOV DPTR,#0FFFFH MOVX DPTR,A KEY1:ACALL KS JNZ LK1 ACALL DEL AJMP ALS LK1:ACALL DEL ACALL KS JNZ LK2 AJMP ALS LK2:MOV R3,#0FEH MOV R4,#00H LK:MOV DPTR,#0FFFDH MOV A,R3 MOVX DPTR,A INC DPTR MOVX A,DPTR JB ACC.0,LONE MOV A,#00H AJMP LKP LONE:JB ACC.1,LTWO MOV A,#08H AJMP LKP LTWO:JB ACC.2,LTHE MOV A,#10H AJMP LKP LTHE:JB ACC.3,NEXT MOV A,#18H AJMP LKP LKP:ADD A,R4 PUSH ACC LK4:ACALL DEL ACALL KS JNZ LK4 POP ACC MOV R1,A KEND:RET NEXT:INC R4 MOV A,R3 JNB ACC.7,ALS RL A MOV R3,A AJMP LK ALS: MOV A,#0FFH AJMP KEND DEL:MOV R7,#01H DEL1:MOV R6

温馨提示

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

评论

0/150

提交评论