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

📄 参考例子_收发asm-2.txt

📁 参考例子_收发ASM-2
💻 TXT
字号:
主程序中有:
    LCALL IC_MT8880_RST

;----------------------------------------------------------------
--
FORINT0:             ;摘机。
    MOV A,#01H       ;摘机鸣叫一声
    LCALL BEEP_ACC   ;鸣叫次数在ACC中。
    LCALL SELECT_SET
    LCALL DELAY1S
FORINT0_1:
    LCALL IC_MT8880_REC;结果这段程序有问题,请见相应部分。
    LCALL RING_ACC   ;将DTMF数据通过鸣叫次数的方法报告出来,
                     ;实际没有按下按键也鸣叫十多次。
    LCALL DELAY5S    
    LJMP FORINT0_1   ;正在测试MY8880,所以做了个循环。
    RETI
;----------------------------------------------------------------
;---------IC_MT8880_BEGIN----------------------------------------
;IC_MT8880的收发程序(8051系列) 
; DO-D3=P0.0-P0.3(数据总线)

IC_MT8880_WR    BIT P0.4
IC_MT8880_CS    BIT P0.5
IC_MT8880_RS    BIT P0.6
IC_MT8880_CP    BIT P0.7
IC_MT8880_DATA    EQU P0

;----------------写数据子程序-----------------------
IC_MT8880_W:
    ORL A,#0F0H
    MOV IC_MT8880_DATA,A
    NOP
    CLR IC_MT8880_CS
    CLR IC_MT8880_WR
    CLR IC_MT8880_CP
    NOP
    SETB IC_MT8880_CP
    NOP
    SETB IC_MT8880_WR
    NOP
    SETB IC_MT8880_CS
    RET
;------------------读数据子程序----------------------
IC_MT8880_R:
    CLR IC_MT8880_CS
    SETB IC_MT8880_WR
    CLR IC_MT8880_CP
    NOP
    SETB IC_MT8880_CP
    NOP
    MOV A,IC_MT8880_DATA
    CLR IC_MT8880_WR
    NOP
    SETB IC_MT8880_CS
    ANL A,#0FH
    RET
;----------------读状态寄存器子程序-------------------------
IC_MT8880_RC:
    SETB IC_MT8880_RS
    LCALL IC_MT8880_R
    RET
;---------------读接收数据寄存器子程序------------------------
IC_MT8880_RD:
    CLR IC_MT8880_RS
    LCALL IC_MT8880_R
    RET
;---------------写数据寄存器子程序------------------------
IC_MT8880_WD:
    CLR IC_MT8880_RS
    LCALL IC_MT8880_W
    RET
;--------------写控制寄存器子程序-------------------------
IC_MT8880_WC:
    SETB IC_MT8880_RS
    LCALL IC_MT8880_W
    RET
;-------------------IC_MT8880初始化子程序----------------------------
IC_MT8880_RST:
    MOV A,#00H
    LCALL IC_MT8880_WC    ;写8880CRA
    LCALL IC_MT8880_WC    ;写8880CRA
    MOV A,#08H
    LCALL IC_MT8880_WC    ;写8880CRA
    MOV A,#00H
    LCALL IC_MT8880_WC    ;写8880CRB
    MOV A,#04H
    LCALL IC_MT8880_WC    ;写8880CRA,至8880模式 1 为 DTMF,IRQ
    RET

;----------------收码程序-------------------
IC_MT8880_REC:
IC_MT8880_REC_1:
    MOV A,#0FFH
    ;MOV IC_MT8880_DATA,A;???这句加了,哪怕我没按下按键,也始终说我收到
    ;了,没加就循环死机了
    LCALL IC_MT8880_RC        ;读 8880 状态寄存器
    JNB ACC.3,IC_MT8880_REC_1    ;===ACC.X都不行=========这儿问题特大!!
    LCALL IC_MT8880_RD        ;读 8880 接收数据寄存器
    RET
;----------------发码程序-------------------
IC_MT8880_SEN:            ;这个程序还没有开始检查。
    PUSH ACC
    MOV A,#0DH
    LCALL IC_MT8880_WC    ;写8880CRA
    MOV A,#02H
    LCALL IC_MT8880_WC    ;写8880CRB,8880 模式2为TONE,DTMF,IRQ,BURST
    
    POP ACC            ;SEND DATA!!!!
    LCALL IC_MT8880_WD    ;发送数据
IC_MT8880_SEN_2:
    MOV A,#0FFH
    LCALL IC_MT8880_RC    ;读 8880 状态寄存器
    JNB ACC.1,IC_MT8880_SEN_2    
    RET

;---------IC_MT8880_END-----------------------------------------------

补充:
;************************
                    ;延时程序 600MS       随便延时,有一定长度就行
                    DL1:MOV R3,#0FFH
                  DL12:MOV R4,#0FFH
                    DL:NOP
                       NOP
                       NOP
                       NOP
                       NOP
                       NOP
                       NOP
                       DJNZ R4,DL
                       DJNZ R3,DL12
                       RET
                    ;*************************


             ;播号程序
                    BH:CLR RSO
                       CLR LED
                       MOV A,#08H
                       MOV P1,A
                       SETB CLK
                       ACALL DL1
                       ACALL DL1
                       ACALL DL1
                       CLR CLK
                       ACALL DL1
                       ACALL DL1
                       ACALL DL1
                       SETB RSO
                       SETB RW
                       MOV A,#6FH
                       MOV P1,A
                       SETB CLK
                       ACALL DL1
                LOOP0: MOV A,P1
                       JNB ACC.1,LOOP0
                       CLR CLK
                       ACALL DL1
                       SETB  LED
                       ACALL DL1
                       ACALL DL1
                       ACALL DL1           ;播号码#8

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -