📄 yuying8.6.txt
字号:
SS EQU P2.2
SCLK EQU P2.3
MOSI EQU P1.6
MISO EQU P1.7
INT EQU P3.2
SCK EQU P1.5 ;;;??????????6 scl????
SDA EQU P1.4 ;???????????5 sda?????????
JK EQU P3.7
NE567 EQU P3.3
ORG 0000H
AJMP SHA
ORG 0030H
;BB: MOV SP,#60H
; CLR JK
; LCALL DELAY1S
; LCALL DELAY1S
; SETB JK
; LCALL DELAY1S
; LCALL DELAY1S
; AJMP BB
SHA: mov sp,#60h
clr ea
CLR SCK
MOV TMOD,#55H ;T0.T1工作在16位计数模式下
MOV TCON,#55H ;启动定时器0.1????????????
LCALL DSTOP ;(((((((((((((((((((((((((((
X0: MOV TH1,#0FFH
MOV TL1,#0F0H
MOV TH0,#0
; clr p2.1
MOV TL0,#0
;振铃检测
X1: JNB TF1,X2
AJMP X9
;录制自留言
X2: JB P1.0,X3
LCALL DELAY50MS ;((((((((((((((((((((
JB P1.0,X3
AJMP X23
;重播自制留言
X3: JB P1.1,X4
LCALL DELAY50MS
JB P1.1,X4
AJMP X27
;放外来用户留言
X4: JB P1.2,X5
LCALL DELAY50MS
JB P1.2,X5
AJMP X29
;删除外来用户留言
X5: JB P1.3,X1
LCALL DELAY50MS
JB P1.3,X1
;删除所有留言
;将倒数第三字节内容清0
X6: LCALL STOP ;(((((((((((((((((((((
CLR C
LCALL START ;(((((((((((((((
MOV A,#0A0H
LCALL WBYTE ;((((((((((((((((((((((
JC X6
MOV A,#0FDH
LCALL WBYTE
JC X6
MOV A,#1
LCALL WBYTE
JC X6
;读出00H,01H单元中的内容,存储在21H,22H单元中
X7: LCALL STOP
CLR C
LCALL START
MOV A,#0A0H
LCALL WBYTE
JC X7
MOV A,#00H
LCALL WBYTE
JC X7
LCALL START
MOV A,#0A1H
LCALL WBYTE
JC X7
LCALL RBYTE ;(((((((((((((((((((((((((((
MOV 21H,A
LCALL RBYTE
MOV 22H,A
;将00H,01H单元中的内容写到0FEH,0FFH单元中
X8: LCALL STOP
CLR C
LCALL START
MOV A,#0A0H
LCALL WBYTE
JC X8
MOV A,#0FEH
LCALL WBYTE
JC X8
MOV A,21H
LCALL WBYTE
JC X8
MOV A,22H ;未经验证的代码???????????
LCALL WBYTE
JC X8
LCALL STOP
AJMP X1
;振铃检测自动摘机部分
X9: CLR TF1
MOV R7,#1
X10: LCALL DELAY1S ;((((((((((((((((((((
MOV TH1,#0FFH
MOV TL1,#0EEH
LCALL DELAY5S ;(((((((((((((((((
JBC TF1,X11
AJMP X0
X11: DJNZ R7,X10
CLR JK ;驱动继电器吸合
;读出要进行录音的其始地址
X12: LCALL STOP
CLR C
LCALL START
MOV A,#0A0H
LCALL WBYTE
JC X12
MOV A,#0FEH
LCALL WBYTE
JC X12
LCALL START
MOV A,#0A1H
LCALL WBYTE
JC X12
LCALL RBYTE
MOV 21H,A
LCALL RBYTE
MOV 22H,A
LCALL STOP
;执行电话语音提示操作
CLR IE0
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
X13: JNB IE0,X13
CLR IE0
lcall dstop
LCALL DSTOP
LCALL DELAY1S
mov th0,#0
mov tl0,#0
;//实验录音代码段
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
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL DELAY1S
LCALL DSTOP
LCALL DELAY1S
SETB JK
LCALL DELAY1S
AJMP X0
;//录音测试代码段结束
;执行录音操作
MOV A,21H
INC A
MOV B,A
lcall up
LCALL ISDWR
MOV A,#0A0H
ORL A,22H
MOV B,A
LCALL ISDWR
SETB SS
MOV B,#0
LCALL ISDWR
MOV B,#0B0H
LCALL ISDWR
SETB SS
; lcall delay1s
; lcall delay1s
; lcall delay1s
; lcall delay1s
;lcall delay1s
; lcall dstop
;忙音检测功能模块
X14: MOV R7,#2
X15: MOV R0,#50
X16: MOV R1,#250
X17: MOV R2,#100
X18: JNB NE567,X19
DJNZ R2,X18
DJNZ R1,X17
DJNZ R0,X16
X19: JB NE567,X14
LCALL DELAY07S ;(((((((((((((((((((((
JB NE567,X14
DJNZ R7,X15
;检测到挂机信号后停止当前的录音操作
LCALL DSTOP
setb jk
;将下一次的录音其始地址写到IIC的最后两字节,并将后数第三字节自加1
MOV A,21H
ADD A,TL0
MOV 21H,A
MOV A,22H
ADDC A,TH0
MOV 22H,A
mov a,21h
add a,#1
mov 21h,a
mov a,22h
addc a,#0
mov 22h,a
X20: LCALL STOP
CLR C
LCALL START
MOV A,#0A0H
LCALL WBYTE
JC X20
MOV A,#0FEH
LCALL WBYTE
JC X20
MOV A,21H
LCALL WBYTE
JC X20
MOV A,22H
LCALL WBYTE ;未经验证过的程序语句???????????
JC X20
;读出0FD单元的内容
X21: LCALL STOP
CLR C
LCALL START
MOV A,#0A0H
LCALL WBYTE
JC X21
MOV A,#0FDH
LCALL WBYTE
JC X21
LCALL START
MOV A,#0A1H
LCALL WBYTE
JC X21
LCALL RBYTE
MOV 23H,A
MOV B,#2
MUL AB
MOV 24H,A
MOV A,23H
INC A
MOV B,A
;将0FDH单元内容加1后写回去
X22: LCALL STOP
CLR C
LCALL START
MOV A,#0A0H
LCALL WBYTE
JC X22
MOV A,#0FDH
LCALL WBYTE
JC X22
MOV A,B
LCALL WBYTE
JC X22
;将对应的存储字节上写上对应的存储地址
Y0: LCALL STOP
CLR C
LCALL START
MOV A,#0A0H
LCALL WBYTE
JC Y0
MOV A,24H
LCALL WBYTE
JC Y0
MOV A,21H
LCALL WBYTE
JC Y0
MOV A,22H
LCALL WBYTE
JC Y0
LCALL STOP
; SETB JK
AJMP X0
;执行自留言操作,该键一直按下时执行留言操作
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -