1、虫儿飞曲谱PIC汇编程序;*;*;*; * 程序名称 : chongerfei.hex ; * 功能描述 :没按按键时显示:音; 按下按键后播放虫儿飞单音 ; * 芯片型号 :PIC16F74; * 时钟频率 :外部4.0MHz (1us) ;*硬件说明*; RE0 用于播放 ; RD7 用于按键;*硬件说明*; RC0-RC7 +上8位; RD0-RD6 +下7位; RB0-RB7 -左8位; RA0-RA5,RE1,RE2 -右8位;* ;音 /黑体; seg-;负扫描方式,正送信号; - B0 B1 B2 B3 B4 B5 B6 B7 A0 A1 A2 A3 A4 A5 E1 E2; ;
2、+RC0= 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0x7F,0X3E,0x06;+RC1= 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0x03,0X00,0x06;+RC2= 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0x03,0X00,0x06;+RC3= 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0xCF,0X33,0x06;+RC4= 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0x9F,0X39,0x06;+RC5= 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3、 1 0x01,0X00,0x04;+RC6= 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0x01,0X00,0x04;+RC7= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0xFF,0X3F,0x06;+RD0= 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0x07,0X20,0x06;+RD1= 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0xE7,0X27,0x06;+RD2= 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0x07,0X20,0x06;+RD3= 1 1 1 0 0 1
4、 1 1 1 1 1 0 0 1 1 1 0xE7,0X27,0x06;+RD4= 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0x07,0X20,0x06;+RD5= 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0x07,0X20,0x06;+RD6= 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0xE7,0X27,0x06; 开始编写#INCLUDE _CONFIG _CP_OFF&_WDT_OFF&_BODEN_OFF&_PWRTE_OFF&_XT_OSCXIANSHI_CHONG EQU 70H ;用于循环显示延时 ORG 0
5、X000 GOTO MAIN NOP NOP;*主函数*MAIN NOP CALL initmcu ;mcu初始化 NOP CALL quanxian ;全显函数 CALL anjian ;按键函数 NOP CALL xianshichong ;显示虫函数 GOTO MAIN;*;全显函数;* quanxian MOVLW 0XFF MOVWF PORTC MOVWF PORTD CLRF PORTA CLRF PORTB CLRF PORTE CALL DELAY0.5S ;全显 CALL initmcu ;初始化 CALL DELAY0.5S RETURN ;*;按键函数;*anjian
6、NOP BTFSS PORTD,7 GOTO AJ2C ;没按下就延时再次检测 CALL bofang ;按键按下就调用播放函数AJ2C CALL DELAY10MS BTFSC PORTD,7 CALL bofang ;按键按下就调用播放函数 NOP RETURN ;*;显示字函数;*xianshichong BCF STATUS,Z ;Z标志位清0 MOVLW 0XFF ;显示慢了可以0XFF MOVWF XIANSHI_CHONG ;用于循环显示0X50次 XSL1 CALL xianshidao2 ;2级堆栈,调用显示子函数 CALL initmcu ;初始化 CALL anjian
7、;扫描按键 DECF XIANSHI_CHONG,F ;循环减1 BTFSS STATUS,Z GOTO XSL1 RETURN ;*;显示字子函数;*;扫描显示第1行xianshidao2 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTC,0 ;负扫描送数据 MOVLW 0X7F MOVWF PORTB MOVLW 0X3E MOVWF PORTA MOVLW 0X06 MOVWF PORTE CALL DELAY10MS ;扫描延时;扫描显示第2行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTC,1 ;负扫描送数据 MOVLW 0X03 MOV
8、WF PORTB MOVLW 0X00 MOVWF PORTA MOVLW 0X06 MOVWF PORTE CALL DELAY10MS ;扫描延时;扫描显示第3行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTC,2 ;负扫描送数据 MOVLW 0X03 MOVWF PORTB MOVLW 0X00 MOVWF PORTA MOVLW 0X06 MOVWF PORTE CALL DELAY10MS ;扫描延时;扫描显示第4行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTC,3 ;负扫描送数据 MOVLW 0XCF MOVWF PORTB MOV
9、LW 0X33 MOVWF PORTA MOVLW 0X06 MOVWF PORTE CALL DELAY10MS ;扫描延时;扫描显示第5行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTC,4 ;负扫描送数据 MOVLW 0X9F MOVWF PORTB MOVLW 0X39 MOVWF PORTA MOVLW 0X06 MOVWF PORTE CALL DELAY10MS ;扫描延时;扫描显示第6行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTC,5 ;负扫描送数据 MOVLW 0X01 MOVWF PORTB MOVLW 0X00 MOVW
10、F PORTA MOVLW 0X04 MOVWF PORTE CALL DELAY10MS ;扫描延时;扫描显示第7行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTC,6 ;负扫描送数据 MOVLW 0X01 MOVWF PORTB MOVLW 0X00 MOVWF PORTA MOVLW 0X04 MOVWF PORTE CALL DELAY10MS ;扫描延时;扫描显示第8行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTC,7 ;负扫描送数据 MOVLW 0XFF MOVWF PORTB MOVLW 0X3F MOVWF PORTA MOVL
11、W 0X06 MOVWF PORTE CALL DELAY10MS ;扫描延时;扫描显示第9行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTD,0 ;负扫描送数据 MOVLW 0X07 MOVWF PORTB MOVLW 0X20 MOVWF PORTA MOVLW 0X06 MOVWF PORTE CALL DELAY10MS ;扫描延时;扫描显示第10行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTD,1 ;负扫描送数据 MOVLW 0XE7 MOVWF PORTB MOVLW 0X27 MOVWF PORTA MOVLW 0X06 MOVW
12、F PORTE CALL DELAY10MS ;扫描延时;扫描显示第11行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTD,2 ;负扫描送数据 MOVLW 0X07 MOVWF PORTB MOVLW 0X20 MOVWF PORTA MOVLW 0X06 MOVWF PORTE CALL DELAY10MS ;扫描延时;扫描显示第12行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTD,3 ;负扫描送数据 MOVLW 0XE7 MOVWF PORTB MOVLW 0X27 MOVWF PORTA MOVLW 0X06 MOVWF PORTE CA
13、LL DELAY10MS ;扫描延时 ;扫描显示第13行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTD,4 ;负扫描送数据 MOVLW 0X07 MOVWF PORTB MOVLW 0X20 MOVWF PORTA MOVLW 0X06 MOVWF PORTE CALL DELAY10MS ;扫描延时;扫描显示第14行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTD,5 ;负扫描送数据 MOVLW 0X07 MOVWF PORTB MOVLW 0X20 MOVWF PORTA MOVLW 0X06 MOVWF PORTE CALL DELAY1
14、0MS ;扫描延时;扫描显示第15行 CALL initmcu ;3级堆栈,mcu初始化 BSF PORTD,6 ;负扫描送数据 MOVLW 0XE7 MOVWF PORTB MOVLW 0X27 MOVWF PORTA MOVLW 0X06 MOVWF PORTE CALL DELAY10MS ;扫描延时 RETURN ;*;播放函数 ;*bofang NOP ;开始;播放3 1/2拍函数 黑 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放3 1/4拍函数 黑 CALL bo3_4fengzhi1 CALL DELAY10MS;
15、播放3 1/4拍函数 的 CALL bo3_4fengzhi1 CALL DELAY10MS;播放4 1/2拍函数 天 CALL bo4_4fengzhi1 CALL bo4_4fengzhi1 CALL DELAY10MS;播放5 1/2拍函数 空 CALL bo5_4fengzhi1 CALL bo5_4fengzhi1 CALL DELAY10MS;播放3 1拍函数 低 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放2 1拍函数 垂 CALL bo2
16、_4fengzhi1 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL DELAY10MS;-;播放1 1/2拍函数 亮 CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL DELAY10MS;播放1 1/4拍函数 亮 CALL bo1_4fengzhi1 CALL DELAY10MS;播放1 1/4拍函数 的 CALL bo1_4fengzhi1 CALL DELAY10MS;播放2 1/2拍函数 繁 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL
17、 DELAY10MS;播放3 1/2拍函数 星 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放3 1拍函数 相 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放7 1拍函数 随 CALL bo7_4fengzhi1 CALL bo7_4fengzhi1 CALL bo7_4fengzhi1 CALL bo7_4fengzhi1 CALL DELAY10MS;-;播放6 1/2拍函数 虫 CALL
18、 bo6_4fengzhi1 CALL bo6_4fengzhi1 CALL DELAY10MS;播放3 1/2拍函数 儿 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放2 1拍函数 飞 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL DELAY10MS;播放6 1/2拍函数 虫 CALL bo6_4fengzhi1 CALL bo6_4fengzhi1 CALL DELAY10MS;播放3 1/2拍函数 儿 CALL
19、 bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放2 1拍函数 飞 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL DELAY10MS;- ;播放6 1/2拍函数 你 CALL bo6_4fengzhi1 CALL bo6_4fengzhi1 CALL DELAY10MS;播放3 1/2拍函数 在 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放2 3/4拍函数 思 C
20、ALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL DELAY10MS;播放1 1/4拍函数 恋 CALL bo1_4fengzhi1 CALL DELAY10MS;播放1 1拍函数 谁 CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL DELAY10MS;播放1 1拍函数 - CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL bo1_4fe
21、ngzhi1 CALL DELAY10MS;- ;播放1 1拍函数 - CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL DELAY10MS;播放1 1拍函数 - CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL DELAY10MS;2S延时休止符号 CALL DELAY0.5S ;扫描延时 CALL DELAY0.5S ;扫描延时 CALL DELAY0.5S ;扫描延时
22、 CALL DELAY0.5S ;扫描延时1S CALL DELAY0.5S ;扫描延时 CALL DELAY0.5S ;扫描延时 CALL DELAY0.5S ;扫描延时 CALL DELAY0.5S ;扫描延时1S;-;-1小节完-;-;播放3 1/2拍函数 天 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放3 1/4拍函数 上 CALL bo3_4fengzhi1 CALL DELAY10MS;播放3 1/4拍函数 的 CALL bo3_4fengzhi1 CALL DELAY10MS;播放4 1/2拍函数 星 CALL b
23、o4_4fengzhi1 CALL bo4_4fengzhi1 CALL DELAY10MS;播放5 1/2拍函数 星 CALL bo5_4fengzhi1 CALL bo5_4fengzhi1 CALL DELAY10MS;播放3 1拍函数 流 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放2 1拍函数 泪 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL bo2_4fengzhi
24、1 CALL DELAY10MS;-;播放1 1/2拍函数 地 CALL bo1_4fengzhi1 CALL bo1_4fengzhi1 CALL DELAY10MS;播放1 1/4拍函数 上 CALL bo1_4fengzhi1 CALL DELAY10MS;播放1 1/4拍函数 的 CALL bo1_4fengzhi1 CALL DELAY10MS;播放2 1/2拍函数 玫 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL DELAY10MS;播放3 1/2拍函数 瑰 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL
25、 DELAY10MS;播放3 1拍函数 枯 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放7 1拍函数 萎 CALL bo7_4fengzhi1 CALL bo7_4fengzhi1 CALL bo7_4fengzhi1 CALL bo7_4fengzhi1 CALL DELAY10MS;-;播放6 1/2拍函数 冷 CALL bo6_4fengzhi1 CALL bo6_4fengzhi1 CALL DELAY10MS;播放3 1/2拍函数 风 CALL
26、 bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放2 1拍函数 吹 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1 CALL DELAY10MS;播放6 1/2拍函数 冷 CALL bo6_4fengzhi1 CALL bo6_4fengzhi1 CALL DELAY10MS;播放3 1/2拍函数 风 CALL bo3_4fengzhi1 CALL bo3_4fengzhi1 CALL DELAY10MS;播放2 1拍函数 吹 CALL bo2_4fengzhi1 CALL bo2_4fengzhi1