|
- ;****************************************************
- ;OTP語(yǔ)音芯片串行三線(xiàn)模式測(cè)試程序
- ;主芯片:MPC82L52(1T)
- ;工作頻率:6MHz
- ;適用型號(hào):SC3010,SC3020,SC3040,SC3060,SC3080,SC5020,SC5040,SC5060,SC5080,SC5B01
- ;億矽特科技 400-160-3880
- ;****************************************************
- include "REG_MPC82L52.H"
- sbit SC_DATA=P3^1; ;P3.1是脈沖數(shù)據(jù)腳
- sbit SC_BUSY=P3^2; ;P3.2是放音BUSY腳
- SP0 DATA 20H ;組合第1語(yǔ)音
- SP1 DATA 21H ;組合第2語(yǔ)音
- SP2 DATA 22H ;組合第3語(yǔ)音
- ORG 0000H
- MOV P3M1,#00000100B ;設(shè)置P3.1為輸出,P3.2為輸入
- MOV P3M0,#11111011B ;其他為默認(rèn)的
- CLR A
- MOV SP1,A ;清第1語(yǔ)音數(shù)據(jù)
- MOV SP2,A ;清第2語(yǔ)音數(shù)據(jù)
- MOV SP3,A ;清第3語(yǔ)音數(shù)據(jù)
- LOOP:
- MOV SP1,#05H
- MOV SP2,#08H
- MOV SP3,#02H ;組合放5,8,2地址段語(yǔ)音
- LCALL SPEECHS ;調(diào)用組合語(yǔ)音放音子程序
- ; LCALL Delay5S ;延時(shí)5秒等聲音放完
- SJMP LOOP
- ;**************************************
- ;組合語(yǔ)音放音
- ;入口參數(shù):SP0,SP1,SP2
- ;出口參數(shù):無(wú)
- ;**************************************
- SPEECHS:
- MOV R0,SP1 ;發(fā)第1語(yǔ)音數(shù)據(jù)
- LCALL SCDATA ;調(diào)用放音子程序
- LCALL Delay15MS ;調(diào)節(jié)放音間隔
- LCALL BUSYWAIT ;等待放音BUSY信號(hào)變高電平
- MOV R0,SP2 ;發(fā)第2語(yǔ)音數(shù)據(jù)
- LCALL SCDATA ;調(diào)用放音子程序
- LCALL Delay15MS ;調(diào)節(jié)放音段間隔
- LCALL BUSYWAIT ;等待放音BUSY信號(hào)變高電平
- MOV R0,SP3 ;發(fā)第3語(yǔ)音數(shù)據(jù)
- LCALL SCDATA ;調(diào)用放音子程序
- CLR A
- MOV SP1,A ;清第1語(yǔ)音數(shù)據(jù)
- MOV SP2,A ;清第2語(yǔ)音數(shù)據(jù)
- MOV SP3,A ;清第3語(yǔ)音數(shù)據(jù)
- RET
- ;**************************************
- ;等待放音BUSY信號(hào)變高電平
- ;入口參數(shù):無(wú)
- ;出口參數(shù):無(wú)
- ;**************************************
- BUSYWAIT:
- MOV R3,#200
- LCALL Delay15MS
- LCALL Delay15MS
- DJNZ R3,BOUT ;等待時(shí)間超過(guò)6秒BUSY腳信號(hào)沒(méi)變高自動(dòng)退出
- JBC SC_BUSY,BUSYWAIT ;等待BUSY腳信號(hào)變高
- BOUT: RET
- ;**************************************
- ;控制放音子程序
- ;入口參數(shù):R0
- ;出口參數(shù):無(wú)
- ;**************************************
- SCDATA:
- CLR SC_RST ;復(fù)位低電平
- LCALL Delay5MS: ;延時(shí)5MS
- MOV R1,#08H ;發(fā)送8BIT數(shù)據(jù)低位先發(fā)
- MOV A,R0
- CLR C
- LOOP0:
- RRC A
- JC DATA1
- DATA0:
- SETB SC_DATA ;高電平
- LCALL Delay500US ;延時(shí)500uS,
- CLR SC_DATA ;低電平
- LCALL Delay1500US ;延時(shí)1500uS
- JMP LOOPDATA:
- DATA1:
- SETB SC_DATA ;高電平
- LCALL Delay1500US ;延時(shí)15000uS
- CLR SC_DATA ;低電平
- LCALL Delay500US ;延時(shí)500uS
- LOOPDATA:
- DJNZ R1,LOOP0
- SETB SC_DATA ;高電平
- LCALL Delay100US: ;延時(shí)100US
- RET
- ;**************************************
- ;延時(shí)100微秒
- ;不同的工作環(huán)境,需要調(diào)整此函數(shù)
- ;入口參數(shù):無(wú)
- ;出口參數(shù):無(wú)
- ;**************************************
- Delay100US: ;延時(shí)100uS
- MOV R5,#150
- DJNZ R5,$
- RET
- ;**************************************
- ;延時(shí)400微秒
- ;不同的工作環(huán)境,需要調(diào)整此函數(shù)
- ;入口參數(shù):無(wú)
- ;出口參數(shù):無(wú)
- ;**************************************
- Delay400US:
- MOV R4,#4 ;延時(shí)400US
- L4: LCALL Delay100US
- DJNZ R4,L4
- RET
- ;**************************************
- ;延時(shí)1200微秒
- ;不同的工作環(huán)境,需要調(diào)整此函數(shù)
- ;入口參數(shù):無(wú)
- ;出口參數(shù):無(wú)
- ;**************************************
- Delay1200US:
- MOV R4,#120 ;延時(shí)1200US
- L12: LCALL Delay100US
- DJNZ R4,L12
- RET
- ;**************************************
- ;延時(shí)15毫秒
- ;不同的工作環(huán)境,需要調(diào)整此函數(shù)
- ;入口參數(shù):無(wú)
- ;出口參數(shù):無(wú)
- ;**************************************
- Delay15MS:
- MOV R4,#150 ;延時(shí)15MS
- L150: LCALL Delay100US
- DJNZ R4,L150
- RET
- ;**************************************
- ;延時(shí)3毫秒
- ;不同的工作環(huán)境,需要調(diào)整此函數(shù)
- ;入口參數(shù):無(wú)
- ;出口參數(shù):無(wú)
- ;**************************************
- Delay3MS:
- MOV R4,#30 ;延時(shí)3MS
- L30: LCALL Delay100US
- DJNZ R4,L30
- RET
- ;延時(shí)5秒
- ;不同的工作環(huán)境,需要調(diào)整此函數(shù)
- ;入口參數(shù):無(wú)
- ;出口參數(shù):無(wú)
- ;**************************************
- Delay5S: ;延時(shí)5秒鐘
- MOV R3,#200
- D3: MOV R4,#250 ;25MS
- D5: MOV R5,#150
- DJNZ R5,$
- DJNZ R4,D5
- DJNZ R3,D3
- RET
- ;--------------------------------
- END
復(fù)制代碼 |
|