jz do2delay ;stop mov dx,0E820h ;timer0 set mov al,3fH ;high do out dx,al
MOV DX,0E800H ;led show MOV AL,23H OUT DX,AL CALL DELAY
retf
do2delay:
mov dx,0E820h mov al,00H out dx,al
MOV DX,0E800H MOV AL,23H OUT DX,AL
jmp do2
singdo2 endp
singsod proc far sod:
;\;timer0 set ;high do ;led show ;\;音阶低音so的发声及显示子程序 31
mov dx,0e8e0h; in al,dx;
test al,02h ;test stop or not jz soddelay ;stop mov dx,0E820h ;timer0 set mov al,0a4h out dx,al
MOV DX,0E800H MOV AL,0DBH OUT DX,AL CALL DELAY
retf
soddelay: mov dx,0E820h mov al,00h out dx,al
MOV DX,0E800H MOV AL,0D9H OUT DX,AL
jmp sod
singsod endp
;so ;led show ;\ ;timer0 set ;so ;led show ;\32
singmis proc far ;音阶mi的短发声及显示子程序 mis:
mov dx,0e8e0h; in al,dx;
test al,02h jz misdelay mov dx,0E820h mov al,64H out dx,al
MOV DX,0E800H MOV AL,0F1H OUT DX,AL CALL DELAYS
retf
misdelay: mov dx,0E820h mov al,00H out dx,al
MOV DX,0E800H
MOV AL,0F1H ;test stop or not ;stop ;timer0 set ;mi ;led show ;\ ;timer0 set ;mi ;led show ;\
33
OUT DX,AL jmp mis
singmis endp
singfas proc far ;音阶fa的短发声及显示子程序 fas:
mov dx,0e8e0h; in al,dx;
test al,02h jz fasdelay mov dx,0E820h mov al,5EH out dx,al
MOV DX,0E800H MOV AL,39H OUT DX,AL CALL DELAYS
retf
fasdelay: mov dx,0E820h mov al,00H
out dx,al
;test stop or not ;stop ;timer0 set ;fa ;led show ;\ ;timer0 set ;fa 34
MOV DX,0E800H ;led show MOV AL,39H ;\OUT DX,AL jmp fas
singfas endp
;主程序-------------------------------------------------------- START PROC FAR
MOV AX,DATA MOV DS,AX
ini:mov dx,0E823h ;8253初始化
mov al,00010110B ;分频比小于255,mode3,二进制 out dx,al ;8255初始化
MOV DX,0E803H ;A、B口均为方式0输出 MOV AL,80H OUT DX,AL
;数码管显示的准备工作 MOV DX,0E801H ;设置数码管选通信号 MOV AL,01H OUT DX,AL
MOV DX,0E800H ;显示清零 MOV AL,00H
35