




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PIC单片机实现音乐播放以下程序要用二个定时器资源,凡是有二个定时器的PIC单片机均可实现,该范例需要的MCU是MICROCHIP PIC16C62,INCLUDE D:PICP16XX.EQU ;该文件在MICROCHIP光盘中可找到;*#define BeepOut RC,4;*W_TEMP EQU 0X20 ;(0XA0)STATUS_TEMP EQU 0X21 BeepCnt equ 30hTmrBak equ 31hBeepMode equ 32hSflag equ 33h;*CSTIME100MS equ .8;*;SflagFg_100ms equ 0FgBeep equ 1 ;* ORG 000H; GOTO MAIN ; Skip over interrupt vecter ORG 04H ; Interrupt Vector GOTO INTZ;*OkTab: movf BeepCnt,w addwf PCL,f retlw .255-.130;0xf6 ;1 ; retlw .255-.126;0xfa ;2 ; retlw .255-.119; 0xfd ;3 ; retlw 0;*WhisleTab: movf BeepCnt,w addwf PCL,f retlw .255-.239;523Hz ;0 ; retlw .255-.179;698Hz ;1 ; retlw .255-.159;784Hz ;2 ; retlw .255-.119;1046Hz ;3 ; retlw .0;*HangTab: movf BeepCnt,w addwf PCL,f retlw .255-.159; 784Hz ;0 ; retlw .255-.119; 1046Hz ;1 ; retlw .255-.150; 830Hz ;2 ; retlw .255-.112 ;1109Hz ;3 ; retlw .255-.142 ;880Hz ;4 ; retlw .255-.106;1174Hz ;5 ; retlw .255-.134;932Hz ;6 ; retlw .255-.100;1244Hz ;7 retlw .255-.126;988Hz ;8; retlw .255-.94;1318Hz ;9; retlw .255-.119;1046Hz ;10 ; retlw .255-.89;1397Hz ;11 ; retlw .0;*WelcomTab: movf BeepCnt,w addwf PCL,f retlw .255-.89;1397Hz ;11 ; retlw .255-.119;1046Hz ;10 ; retlw .255-.94;1318Hz ;9; retlw .255-.126;988Hz ;8; retlw .255-.100;1244Hz ;7 retlw .255-.134;932Hz ;6 ; retlw .255-.106;1174Hz ;5 ; retlw .255-.142 ;880Hz ;4 ; retlw .255-.112 ;1109Hz ;3 ; retlw .255-.150; 830Hz ;2 ; retlw .255-.119; 1046Hz ;1 ; retlw .255-.159; 784Hz ;0 ; retlw .0;* BeepModeJmp: addwf PCL,f b psWhisle ;0 b psOk ;1 b psHang ;2 b psWelcom ;3;*IO_SET: BANK1_ MOVLW B11001011 MOVWF TRISA MOVLW B00001100 movwf TRISB MOVLW B00000011 movwf TRISC ; Set Port_C to all outputs BANK0_ RETURN;*SYS_SET: BANK1_ MOVLW B00000111 ; 1:256 TMR0分频 MOVWF OPTION_R BSF PIE1,TMR2IE ;TMR2中断允许 BANK0_ MOVLW B00000001 ;开TMR1 MOVWF T1CON bsf INTCON,TOIE ;TMR0中断允许 BSF INTCON,PEIE ;允许所有未被屏蔽之外围接口中断 RETURN;*MAIN: ; Main rotation CALL IO_SET MOVLW B00000000 ;关所有中断 MOVWF INTCON;* CALL SYS_SET;* call PlayPsWelcom ;上电提示音MAINLOOP: bsf INTCON,GIE ;开所有中断 CLRWDT ; Clear WDT call BeepFor B MAINLOOP;*INTZ: PUSH ; Push ;中断服务程序 BTFSC PIR1,TMR2IF ;测试TMR2中断标志位 b INT_TMR2 ; BTFSC INTCON,TOIF ;测试TMR0中断标志位 GOTO INT_TMR0IntRet: POP ; Pop RETFIE;* INT_TMR2: BCF PIR1,TMR2IF ;清TMR2中断标志位 movf TmrBak,w movwf TMR2 CPL BeepOutBeeperEnd: b IntRet;*INT_TMR0: ;定时0中断 BCF INTCON,TOIF ; clear INTF MOVLW .255-.38 ;10ms MOVWF TMR0 ;= decfsz T100ms,f b int_tmr0_ret movlw CSTIME100MS movwf T100ms bsf Sflag,Fg_100ms ;=int_tmr0_ret: b IntRet;*PlayPsWhisle: bsf Fg,FgBeep clrf BeepCnt movlw .0 movwf BeepMode movlw CSTIME100MS movwf T100ms retlw 0;*PlayPsOk: bsf Fg,FgBeep clrf BeepCnt movlw .1 movwf BeepMode movlw CSTIME100MS movwf T100ms retlw 0;*PlayPsHang: bsf Fg,FgBeep clrf BeepCnt movlw .2 movwf BeepMode movlw CSTIME100MS movwf T100ms retlw 0;*PlayPsWelcom: bsf Fg,FgBeep clrf BeepCnt movlw .3 movwf BeepMode movlw CSTIME100MS movwf T100ms retlw 0;*;音乐播放程序;BeepMode=0 : psWhisle;BeepMode=1 : psOk;BeepMode=2 : psHang;BeepMode=3 : psWelcom;*BeepFor: btfss Sflag,Fg_100ms b BeepForEnd bcf Sflag,Fg_100ms btfss Sflag,FgBeep b BeepForEnd MOVLW B00000101 ;开TMR2 1:4分频 MOVWF T2CON movf BeepMode,w b BeepModeJmppsWhisle: call WhisleTab b BeepPlaypsOk: call OkTab b BeepPlaypsHang: call HangTab b BeepPlaypsWelcom: call WelcomTab b BeepPlayBeepPlay: incf BeepCnt,f movwf TmrBak movf TmrBak,f btfsc status,z b BeepOff movlw .1 xorwf TmrBak,w btfsc status,z b BeepStop b BeepForEndBeepOff: clrf BeepCnt bcf Sflag,FgBeep bcf BeepOut bcf T2CON,TMR2ON b BeepForEndBeepStop: bcf T2CON,TMR2ON ;stop bcf BeepOut BeepForEnd: retlw 0;*END以下程序要用二个定时器资源,凡是有二个定时器的PIC单片机均可实现,该范例需要的MCU是MICROCHIP PIC16C62,INCLUDE D:PICP16XX.EQU ;该文件在MICROCHIP光盘中可找到;*#define BeepOut RC,4;*W_TEMP EQU 0X20 ;(0XA0)STATUS_TEMP EQU 0X21 BeepCnt equ 30hTmrBak equ 31hBeepMode equ 32hSflag equ 33h;*CSTIME100MS equ .8;*;SflagFg_100ms equ 0FgBeep equ 1 ;* ORG 000H; GOTO MAIN ; Skip over interrupt vecter ORG 04H ; Interrupt Vector GOTO INTZ;*OkTab: movf BeepCnt,w addwf PCL,f retlw .255-.130;0xf6 ;1 ; retlw .255-.126;0xfa ;2 ; retlw .255-.119; 0xfd ;3 ; retlw 0;*WhisleTab: movf BeepCnt,w addwf PCL,f retlw .255-.239;523Hz ;0 ; retlw .255-.179;698Hz ;1 ; retlw .255-.159;784Hz ;2 ; retlw .255-.119;1046Hz ;3 ; retlw .0;*HangTab: movf BeepCnt,w addwf PCL,f retlw .255-.159; 784Hz ;0 ; retlw .255-.119; 1046Hz ;1 ; retlw .255-.150; 830Hz ;2 ; retlw .255-.112 ;1109Hz ;3 ; retlw .255-.142 ;880Hz ;4 ; retlw .255-.106;1174Hz ;5 ; retlw .255-.134;932Hz ;6 ; retlw .255-.100;1244Hz ;7 retlw .255-.126;988Hz ;8; retlw .255-.94;1318Hz ;9; retlw .255-.119;1046Hz ;10 ; retlw .255-.89;1397Hz ;11 ; retlw .0;*WelcomTab: movf BeepCnt,w addwf PCL,f retlw .255-.89;1397Hz ;11 ; retlw .255-.119;1046Hz ;10 ; retlw .255-.94;1318Hz ;9; retlw .255-.126;988Hz ;8; retlw .255-.100;1244Hz ;7 retlw .255-.134;932Hz ;6 ; retlw .255-.106;1174Hz ;5 ; retlw .255-.142 ;880Hz ;4 ; retlw .255-.112 ;1109Hz ;3 ; retlw .255-.150; 830Hz ;2 ; retlw .255-.119; 1046Hz ;1 ; retlw .255-.159; 784Hz ;0 ; retlw .0;* BeepModeJmp: addwf PCL,f b psWhisle ;0 b psOk ;1 b psHang ;2 b psWelcom ;3;*IO_SET: BANK1_ MOVLW B11001011 MOVWF TRISA MOVLW B00001100 movwf TRISB MOVLW B00000011 movwf TRISC ; Set Port_C to all outputs BANK0_ RETURN;*SYS_SET: BANK1_ MOVLW B00000111 ; 1:256 TMR0分频 MOVWF OPTION_R BSF PIE1,TMR2IE ;TMR2中断允许 BANK0_ MOVLW B00000001 ;开TMR1 MOVWF T1CON bsf INTCON,TOIE ;TMR0中断允许 BSF INTCON,PEIE ;允许所有未被屏蔽之外围接口中断 RETURN;*MAIN: ; Main rotation CALL IO_SET MOVLW B00000000 ;关所有中断 MOVWF INTCON;* CALL SYS_SET;* call PlayPsWelcom ;上电提示音MAINLOOP: bsf INTCON,GIE ;开所有中断 CLRWDT ; Clear WDT call BeepFor B MAINLOOP;*INTZ: PUSH ; Push ;中断服务程序 BTFSC PIR1,TMR2IF ;测试TMR2中断标志位 b INT_TMR2 ; BTFSC INTCON,TOIF ;测试TMR0中断标志位 GOTO INT_TMR0IntRet: POP ; Pop RETFIE;* INT_TMR2: BCF PIR1,TMR2IF ;清TMR2中断标志位 movf TmrBak,w movwf TMR2 CPL BeepOutBeeperEnd: b IntRet;*INT_TMR0: ;定时0中断 BCF INTCON,TOIF ; clear INTF MOVLW .255-.38 ;10ms MOVWF TMR0 ;= decfsz T100ms,f b int_tmr0_ret movlw CSTIME100MS movwf T100ms bsf Sflag,Fg_100ms ;=int_tmr0_ret: b IntRet;*PlayPsWhisle: bsf Fg,FgBeep clrf BeepCnt movlw .0 movwf BeepMode movlw CSTIME100MS movwf T100ms retlw 0;*PlayPsOk: bsf Fg,FgBeep clrf BeepCnt movlw .1 movwf BeepMode movlw CSTIME100MS movwf T100ms retlw 0;*PlayPsHang: bsf Fg,FgBeep clrf BeepCnt movlw .2 movwf BeepMode movlw CSTIME100MS movwf T100ms retlw 0;*PlayPsWelcom: bsf Fg,FgBeep clrf BeepCnt movlw .3 movwf BeepMode movlw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课件模板色彩搭配图表
- 生态谷物教程课件
- 贫血患者诊疗与健康教育
- 高处跌落应急培训
- 星级酒店管理培训
- 小学石头画课件
- 课件显示重新插入磁盘
- 历史考试题及答案大全
- 课件显示屏文字竖向显示
- 快门高压考试题及答案
- 医务人员培训手卫生规范课件爱国卫生月
- 电脑耗材实施方案、供货方案、售后服务方案
- 水利工程专家协议书
- 肝硬化伴胃底静脉曲张的护理查房
- 2024年低压电工考试题库低压电工证考试内容
- 5 国行公祭为佑世界和平
- 食堂员工防鼠知识培训
- 工程伦理 课件全套 李正风 第1-9章 工程与伦理、如何理解伦理- 全球化视野下的工程伦理
- 和大人一起读
- 2023届高考统编版历史三轮冲刺复习:中国赋税制度的演变-选择题刷题练习题(含答案解析)
- 婴幼儿发展高职全套教学课件
评论
0/150
提交评论