📄 yuying8.6.txt
字号:
X23: LCALL UP
MOV B,#00H
LCALL ISDWR
MOV B,#0A0H
LCALL ISDWR
SETB SS
MOV B,#00H
LCALL ISDWR
MOV B,#0B0H
LCALL ISDWR
SETB SS
X24: JNB P1.0,X24;?????????p1.5-p1.0??????????????????????????
LCALL DELAY50MS
JNB P1.0,X24;??????????????????????????????????
LCALL DSTOP
;自制留言后将0FDH单元写0FEH,0FFH单元写进定时器0的内容
X25: LCALL STOP
CLR C
LCALL START
MOV A,#0A0H
LCALL WBYTE
JC X25
MOV A,#0FDH
LCALL WBYTE
JC X25
MOV A,#1
LCALL WBYTE
JC X25
MOV A,TL0
LCALL WBYTE ;未验证过的语句???????????
JC X25
MOV A,TH0
LCALL WBYTE ;未验证过的语句?????????????
JC X25
;将00H,01H单元写进定时器0的内容
X26: LCALL STOP
CLR C
LCALL START
MOV A,#0A0H
LCALL WBYTE
JC X26
MOV A,#00H
LCALL WBYTE
JC X26
MOV A,TL0
LCALL WBYTE
JC X26
MOV A,TH0
LCALL WBYTE
JC X26 ;未经验证过的语句??????????
LCALL STOP
; AJMP X0
;附加的测试些数据是否正确的代码段
MOV R2,TH0
MOV R3,TL0
CH1: LCALL STOP
CLR C
LCALL START
MOV A,#0A0H
LCALL WBYTE
JC CH1
MOV A,#00H
LCALL WBYTE
JC CH1
LCALL START
MOV A,#0A1H
LCALL WBYTE
JC CH1
LCALL RBYTE
MOV R0,A
LCALL RBYTE
MOV R1,A
AJMP X0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;重播自制留言
CLR IE0
X27: LCALL UP
MOV B,#00H
LCALL ISDWR
MOV B,#0E0H
LCALL ISDWR
SETB SS
MOV B,#00H
LCALL ISDWR
MOV B,#0F0H
LCALL ISDWR
SETB SS
X28: JNB IE0,X28
CLR IE0
LCALL DSTOP
AJMP X1
;播放电话留言
;首先要取出0FDH单元中的留言条数
X29: LCALL STOP
CLR C
LCALL START
MOV A,#0A0H
LCALL WBYTE
JC X29
MOV A,#0FDH
LCALL WBYTE
JC X29
LCALL START
MOV A,#0A1H
LCALL WBYTE
JC X29
LCALL RBYTE
lcall stop
; MOV 51H,A
SUBB A,#1
JNZ X30
AJMP X1
X30: MOV R7,A
X31: MOV A,R7
SUBB A,#1
MOV B,#2
MUL AB
MOV 51H,A
X32: LCALL STOP
CLR C
LCALL START
MOV A,0A0H
LCALL WBYTE
JC X32
MOV A,51H
LCALL WBYTE
JC X32
LCALL START
MOV A,#0A1H
LCALL WBYTE
JC X32
LCALL RBYTE
MOV 52H,A
LCALL RBYTE
; ORL A,#0E0H
MOV 53H,A
LCALL STOP
mov a,52h
add a,#1
mov 52h,a
mov a,53h
addc a,#0
orl a,#0e0h
mov 53h,a
LCALL UP
MOV B,52H
LCALL ISDWR
MOV B,53H
LCALL ISDWR
SETB SS
MOV B,#00H
LCALL ISDWR
MOV B,#0F0H
LCALL ISDWR
SETB SS
X33: JNB IE0,X33
CLR IE0
LCALL DSTOP
MOV R0,#50
X34: MOV R1,#250
X35: MOV R2,#100
X36: JNB P1.3,X37
DJNZ R2,X36
DJNZ R1,X35
DJNZ R0,X34
AJMP X1
X37: LCALL DELAY50MS ;50MS子程序中必须修改当前寄存器组!!!!!!!!
JB P1.3,X36
DJNZ R7,h0
ajmp h1
h0: ajmp x31
h1: AJMP X1
;子程序功能模块
;1:语音芯片停止当前操作进入掉电模式子程序
DSTOP: MOV B,#00H
LCALL ISDWR
MOV B,#10H
LCALL ISDWR
SETB SS
RET
;按键去抖延时50毫秒模块
DELAY50MS: SETB RS0
MOV R0,#100
X38: MOV R1,#250
X39: DJNZ R1,X39
DJNZ R0,X38
CLR RS0
RET
;停止IIC存储器24C02操作
STOP: CLR SCK
NOP
CLR SDA
NOP
SETB SCK
NOP
SETB SDA
NOP
CLR SCK
RET
;启动IIC存储器24C02操作
START: CLR SCK
NOP
SETB SDA
NOP
SETB SCK
NOP
CLR SDA
NOP
CLR SCK
RET
;IIC的写操作
WBYTE: MOV R7,#08H
X40: CLR SCK
RLC A
MOV SDA,C
NOP
SETB SCK
NOP
DJNZ R7,X40
CLR SCK
NOP
SETB SDA
NOP
SETB SCK
NOP
MOV C,SDA
NOP
CLR SCK
RET
;IIC的读操作
RBYTE: MOV R7,#08H
Y1: CLR SCK
NOP
SETB SCK
NOP
MOV C,SDA
RLC A
NOP
DJNZ R7,Y1
CLR SCK
CLR SDA
SETB SCK
RET
;振铃检测中的延时等待1秒子程序
DELAY1S: SETB RS0
MOV R0,#100
X41: MOV R1,#100
X42: MOV R2,#50
X43: DJNZ R2,X43
DJNZ R1,X42
DJNZ R0,X41
CLR RS0
RET
;振铃检测中的5秒延时子程序
DELAY5S: SETB RS0
MOV R0,#100
X44: MOV R1,#50
X45: MOV R2,#250
X46: JB TF1,X47
DJNZ R2,X46
DJNZ R1,X45
DJNZ R0,X44
X47: CLR RS0
RET
;语音芯片上电操作
UP: MOV B,#00H
LCALL ISDWR
MOV B,#20H
LCALL ISDWR
SETB SS
ACALL DELAY50MS
RET
;语音芯片写操作
ISDWR: MOV R6,#8
MOV R7,#0
CLR SCLK
CLR SS
X48: MOV A,B
MOV C,ACC.0
MOV MOSI,C
RR A
SETB SCLK
MOV B,A
MOV A,R7
CLR SCLK
MOV C,MISO
MOV ACC.7,C
RL A
MOV R7,A
DJNZ R6,X48
RET
;挂机检测中用到的判断锁相环输出的有效电平的延时0.7秒子程序?????????0.7s?
DELAY07S: SETB RS0
MOV R0,#100
X49: MOV R1,#100
X50: MOV R2,#5
X51: DJNZ R2,X51
DJNZ R1,X50
DJNZ R0,X49
CLR RS0
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -