?? isd_play.asm
字號:
T_INIT EQU 30H ;延時時間的初值
TIME EQU 31H ;調用延時子程序的次數
REC EQU P1.0 ;錄音控制
PLAYL EQU P1.1 ;電平放音控制
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV SP,#60H
PLAY_CYC:
MOV DPTR,#PLAYADDR;查表發音地址
MOV A,#0CH ;總共
MOVC A,@A+DPTR
MOV 40H,A
LCALL PLAY2
MOV A,#08H ;8
MOVC A,@A+DPTR
MOV 40H,A
LCALL PLAY
MOV A,#0AH ;十
MOVC A,@A+DPTR
MOV 40H,A
LCALL PLAY
MOV A,#06H ;6
MOVC A,@A+DPTR
MOV 40H,A
LCALL PLAY
MOV A,#0BH ;分鐘
MOVC A,@A+DPTR
MOV 40H,A
LCALL PLAY2
SJMP PLAY_CYC
PLAY: ;調用放音子程序
PUSH DPH
PUSH DPL
MOV DPTR,#8000H ;74LS273的控制口
MOV A,#0FFH ;送停止錄放音碼
MOVX @DPTR,A
MOV A,40H ;放音控制碼由40H單元送入A
LCALL DELAY20 ;延時20MS
MOVX @DPTR,A
CLR PLAYL
LCALL DELAY500 ; 延時放音時間
MOV A,#0FFH
MOVX @DPTR,A ;停止放音
SETB PLAYL
POP DPL
POP DPH
RET
PLAY2:
PUSH DPH
PUSH DPL
MOV DPTR,#8000H
MOV A,#0FFH ;送停止錄放音碼
MOVX @DPTR,A
MOV A,40H ;放音控制碼由40H單元送入A
LCALL DELAY20 ;延時20MS
MOVX @DPTR,A
CLR PLAYL
LCALL DELAY500 ; 延時放音時間
LCALL DELAY500
MOV A,#0FFH
MOVX @DPTR,A ;停止放音
SETB PLAYL
POP DPL
POP DPH
RET
DELAY:
PUSH TIME ; 延時TIMER1*1 MS FOR 12MHZ
PUSH T_INIT
DELAY1:
MOV T_INIT,#250 ;循環一次需要4個機器周期,時間為4*1ΜS
DELAY2:
NOP ; 1個周期
NOP ; 1個周期
DJNZ T_INIT,DELAY2 ;2個周期
DJNZ TIME,DELAY1
POP T_INIT
POP TIME
RET
DELAY20: ; 延時20 MS
PUSH TIME
MOV TIME,#20
LCALL DELAY
LCALL DELAY
POP TIME
RET
DELAY500: ; 延時500 MS
PUSH TIME
MOV TIME,#250
LCALL DELAY
LCALL DELAY
POP TIME
RET
PLAYADDR:
DB 00H,04H,08H,0CH,10H,14H,18H,1CH,20H,24H,28H,2CH,34H
; 0 1 2 3 4 5 6 7 8 9 十 分鐘 總共
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -