⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yuying8.6.txt

📁 is4004&89c51的编译程序代码,可以进行语音的录放.很实用的.
💻 TXT
📖 第 1 页 / 共 2 页
字号:


            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 + -