1、音调1234567频率131147165175196220247XF242F3C1F517F5B6F6D0F7D1F8B6中音节262294330349392440494F921F9E1FA8CFAD8FB68FBE9FC5B高音节523587659698784880988FC8FFCEFFD45FD6CFDB4FDF4FE2D注:频率以HZ为单位每个音节相应的定时器初值x可按下法计算。 即: 其中,f是音调频率,晶振fosc=11.0592Mhz。(2)定时器的使用及时间延迟首先对定时器进行初始化设置TMOD(工作方式)寄存器GATAC/TM1M0定时器1定时器0GATE:门控位GATE0,
2、TR=1启动计数(软件启动);GATE1,TR=1 且 INT=1启动计数(硬件启动)。C/T: 定时或计数方式选择位。C/T0,定时工作方式;C/T1,计数工作方式。M1M0:工作方式选择位。M1M000,方式0:13位计数(TL0-4、TH0-7)M1M001,方式1:16位计数(TL0-7、TH0-7)M1M010,方式2:8位计数,有自动装入功能。M1M011,方式3:T0分为两个8位计数器,TL0可工作为定时或计数方式,TH0只能工作为定时方式。设置TCON(控制)寄存器:TF1TR1TF0TR0IE1IT1IE0IT0TR0/TR1:启动计数。为1启动计数;为0停止计数。TF0/T
3、F1:计数溢出。当加”1”计数结束时为1。 本实验采用定时器T0,工作在方式1 (16位计数),无自动装入功能。其节拍的延时为:曲调值DELAY调4/4125ms调3/4187ms调2/4250ms四、实验程序流程图:1、音调发声部分: 无输入 K4&K5&K6=1 有输入且K4&K6=0 否 是五、实验程序源代码: ;*DATA SEGMENT msg DB 0DH,0AH, 1 2 3 4 5 6 7 DB 0DH,0AH, q w e r t y u _9: EXIT,$;*音调*后面用到-1判断音乐播是否放完 sound_0 DW -1 sound_11 DW 441,-1 sound
4、_12 DW 495,-1 sound_13 DW 556,-1 sound_14 DW 589,-1 sound_15 DW 661,-1 sound_16 DW 742,-1 sound_17 DW 833,-1 sound_1 DW 882,-1 sound_2 DW 990,-1 sound_3 DW 1112,-1 sound_4 DW 1178,-1 sound_5 DW 1322,-1 sound_6 DW 1484,-1 sound_7 DW 1655,-1 time DW 25DATA ENDS STACK SEGMENT Db 200 DUP (STACK) STACK E
5、NDS *CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX MOV aH,0 MOV AL,00 INT 10H*定义一个宏* SHOW MACRO b LEA DX,b MOV AH,9 INT 21H ENDM*一个声音宏*onesound macro soundis,jumpis,letteris CMP AL,letteris JNZ jumpis LEA SI,soundis LEA BP,DS:time CALL MUSIC JMP input show msgINPUT: MOV A
6、H,01H CMP AL,9 jnz go mov ah,4ch int 21hgo: onesound sound_11,a0,qa0: onesound sound_12,b0,wb0: onesound sound_13,c0,ec0: onesound sound_14,d0,rd0: onesound sound_15,e0,te0: onesound sound_16,f0,yf0: onesound sound_17,g0,ug0: onesound sound_1,h0,1h0: onesound sound_2,i0,2i0: onesound sound_3,j0,3j0:
7、 onesound sound_4,k0,4k0: onesound sound_5,l0,5l0: onesound sound_6,m0,6m0: onesound sound_7,n0,7n0: onesound sound_0,o0,alo0: jmp input*发声GENSOUND PROC NEAR -PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI -MOV AL,0B6H OUT 43H,AL MOV DX,12H MOV AX,348ch DIV DI OUT 42H,AL MOV AL,AH IN AL,61H MOV AH,AL OR AL
8、,3 OUT 61H,ALWAIT1: MOV CX,3314 call waitf DELAY1: DEC BX JNZ WAIT1 -POP DI POP DX POP CX POP BX POP AX -RET GENSOUND ENDP*waitf proc near push ax waitf1:in al,61h and al,10h cmp al,ah je waitf1 mov ah,al loop waitf1 pop ax ret waitf endpMUSIC PROC NEAR PUSH DS SUB AX,AX FREG: MOV DI,SICMP DI,-1;音乐是否放完?JE END_MUSMOV BX,DS:BP CALL GENSOUND ADD SI,2 ADD BP,2 JMP FREG END_MUS:MUSIC ENDP CODE ENDS *END START六、调试界面实验电路图大体如下:
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2