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

📄 发射.asm

📁 这是一个用于单工无线呼叫系统中完成语音和数据发送的程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
            MOV     5EH,#"O"
            MOV     5DH,#"N"
            MOV     5CH,#"M"
            MOV     5BH,#"6"
            LCALL   LCDXSH
PROCE061:   LJMP    PROCE_END


PROCE072:   mov    addr,#7
            MOV    5BH,#"7"
            ljmp   PROCE012a

PROCE07:    jb     GNBZ,PROCE072
            JB      KEYMARK,PROCE071
            SETB    KEYMARK
            MOV     5FH,#"S"
            MOV     5EH,#"R"
            MOV     5DH,#"Q"
            MOV     5CH,#"P"
            MOV     5BH,#"7"
            LCALL   LCDXSH
PROCE071:   LJMP    PROCE_END

PROCE082:   mov    addr,#8
            MOV    5BH,#"8"
            ljmp   PROCE012a

PROCE08:    jb     GNBZ,PROCE082
            JB      KEYMARK,PROCE081
            SETB    KEYMARK
            MOV     5FH,#20H
            MOV     5EH,#"V"
            MOV     5DH,#"U"
            MOV     5CH,#"T"
            MOV     5BH,#"8"
            LCALL   LCDXSH
PROCE081:   LJMP    PROCE_END


PROCE092:   MOV     5FH,#" "
            MOV     5EH,#" "
            MOV     5DH,#"F"
            MOV     5CH,#"F"
            MOV     5BH,#"O"
            LCALL   LCDXSH
            LCALL   SENDYY_END
            clr     gnbz
            LJMP    PROCE_END

PROCE09:    jb     GNBZ,PROCE092

            JB      KEYMARK,PROCE091
            SETB    KEYMARK
            MOV     5FH,#"Z"
            MOV     5EH,#"Y"
            MOV     5DH,#"X"
            MOV     5CH,#"W"
            MOV     5BH,#"9"
            LCALL   LCDXSH
PROCE091:   LJMP    PROCE_END


PROCE102:   mov    addr,#0
            MOV    5BH,#"0"
            ljmp   PROCE012a

PROCE10:    jb     GNBZ,PROCE102
            JB      KEYMARK,PROCE101
            SETB    KEYMARK
            MOV     5FH,#20H
            MOV     5EH,#"&"
            MOV     5DH,#"!"
            MOV     5CH,#"?"
            MOV     5BH,#"0"
            LCALL   LCDXSH
PROCE101:   LJMP    PROCE_END

PROCE11:    ;11---表示功能,语音与数据之间撤换

            setb    GNBZ

            CPL     FUNCMARK                ;
            CLR     KEYMARK
            JB      FUNCMARK,PROCE111

            ;LCALL   SENDSJ
            MOV     50H,#20H
            MOV     51H,#20H
            MOV     52H,#20H
            MOV     53H,#20H
            MOV     54H,#20H
            MOV     55H,#"D"
            MOV     56H,#"a"
            MOV     57H,#"t"
            MOV     58H,#"a"
            MOV     59H,#20H
            LCALL   CLEARH
            LCALL   LCDXSL
            MOV     A,#0CH    ;显示方式:关光标,开显示,不闪烁
            ACALL   WAIT
            LCALL   CLEARBUFF               ;清空数据区内容
            LJMP    PROCE_END

PROCE111:
            ;LCALL   SENDYY
            MOV     50H,#20H
            MOV     51H,#20H
            MOV     52H,#20H
            MOV     53H,#"S"
            MOV     54H,#"p"
            MOV     55H,#"e"
            MOV     56H,#"k"
            MOV     57H,#"i"
            MOV     58H,#"n"
            MOV     59H,#"g"
            LCALL   CLEARH
            LCALL   LCDXSL
            MOV     A,#0CH    ;显示方式:关光标,开显示,不闪烁
            ACALL   WAIT
            LCALL   CLEARBUFF               ;清空数据区内容
            LJMP    PROCE_END

PROCE12:   ;12---向前翻屏
            CLR     KEYMARK
            MOV     A,DISPBEG
            CLR     C
            CJNE    A,#3AH,PROCE121
PROCE121:   JC      PROCE122
            SUBB    A,#10
            MOV     DISPBEG,A
            LCALL   TO_BUFF
            LCALL   CLEARH
            LCALL   LCDXSL
PROCE122:   LJMP    PROCE_END

PROCE13:    ; 撤消
            LCALL   CLEARBUFF
            LCALL   CLEARH
            LCALL   CLEARL
            MOV     A,#02h          ;光标归位
            LCALL   WAIT
            LJMP    PROCE_END

PROCE14:    ;14---向后翻屏
            CLR     KEYMARK
            MOV     A,DISPBEG
            CLR     C
            CJNE    A,#4EH,PROCE141
PROCE141:   JNC     PROCE142
            ADD     A,#10
            MOV     DISPBEG,A
            LCALL   TO_BUFF
            LCALL   CLEARH
            LCALL   LCDXSL
PROCE142:   LJMP    PROCE_END


PROCE15:    CLR     KEYMARK                ;15---表示确认
            LCALL   SENDSJ
            CLR     SOUND
            SETB    MODEM
            clr     p3.4
            LCALL   D100MS
            LCALL   D100MS
            LCALL   D100MS
            LCALL   D100MS
            LCALL   TRANSDATA               ;发送数据
            setb    p3.4
            LCALL   D100MS
            LCALL   D100MS
            LCALL   D100MS
            LCALL   D100MS
            CLR     MODEM
            LCALL   SENDSJ_END
            LCALL   CLEARBUFF               ;清空数据区内容
PROCE_END:  MOV     KEYDATA,#99H
            MOV     KEYTMP,#99H
            MOV     KEYTMP1,#99H
            POP     07H
            POP     00H
            POP     ACC
            RET
;*******************************
;向MODEM发送数据
TRANSDATA:
            MOV     R7,#32
            MOV     R0,#30H
            CLR     REN             ;不允许接收
            MOV     A,#2            ;发短信起始符
            MOV     SBUF,A
            JNB     TI,$
            CLR     TI
TRANSDATA1: MOV     A,@R0
            CJNE    A,#99H,TRANSDATA2
            AJMP    TRANSDATA3
TRANSDATA2:
            MOV     SBUF,A
            JNB     TI,$
            CLR     TI
            INC     R0
            DJNZ    R7,TRANSDATA1
TRANSDATA3:
            MOV     A,#3            ;发短信结束符
            MOV     SBUF,A
            JNB     TI,$
            CLR     TI
            SETB    REN             ;允许接收
            CLR     RI
            RET
;*******************************
;清空数据区内容
CLEARBUFF:
           MOV      R7,#32
           MOV      R0,#CZRDATA
           MOV      A,#99H
CLEARBUFF1:
           MOV      @R0,A
           INC      R0
           DJNZ     R7,CLEARBUFF1
           MOV      CZRCOUNT,#CZRDATA
           MOV      DISPBEG,#CZRDATA
           CLR      KEYMARK
           RET
;*******************************
;计算新页首地址,并更新显示区内容
TO_BUFF1:
            MOV     A,CZRCOUNT
            SUBB    A,#30H
            MOV     B,#10
            DIV     AB
            MOV     B,#10
            MUL     AB
            ADD     A,#30H
            MOV     DISPBEG,A
            LCALL   TO_BUFF
            RET
;***********************************
;更新显示区内容
TO_BUFF:
            MOV     A,DISPBEG
            MOV     R0,A
            MOV     A,@R0
            MOV     50H,A
            INC     R0
            MOV     A,@R0
            MOV     51H,A
            INC     R0
            MOV     A,@R0
            MOV     52H,A
            INC     R0
            MOV     A,@R0
            MOV     53H,A
            INC     R0
            MOV     A,@R0
            MOV     54H,A
            INC     R0
            MOV     A,@R0
            MOV     55H,A
            INC     R0
            MOV     A,@R0
            MOV     56H,A
            INC     R0
            MOV     A,@R0
            MOV     57H,A
            INC     R0
            MOV     A,@R0
            MOV     58H,A
            INC     R0
            MOV     A,@R0
            MOV     59H,A
            RET
;****************************************
;转换为语音状态,关MODEM,开语音
SENDYY:     CLR    SOUND
            CLR    MODEM
            LCALL  DELAY2MS
            LCALL  DELAY2MS

            MOV     A,#11                   ;*
            LCALL   SEND8880
            MOV     A,#1                    ;1
            LCALL   SEND8880
            MOV     A,#12                   ;#
            LCALL   SEND8880
            MOV     A,ADDR                  ;分机号码
            LCALL   SEND8880
            MOV     A,ADDR                  ;分机号码
            LCALL   SEND8880
            MOV     A,ADDR                  ;分机号码
            LCALL   SEND8880
            CLR     MODEM
            SETB    SOUND
            RET
;****************************************
;转换为数据状态,关语音,开MODEM
SENDSJ:     CLR    SOUND
            CLR    MODEM
            LCALL  DELAY2MS
            LCALL  DELAY2MS

            MOV     A,#11                   ;*
            LCALL   SEND8880
            MOV     A,#10                   ;0
            LCALL   SEND8880
            MOV     A,#12                   ;#
            LCALL   SEND8880
            MOV     A,ADDR                  ;分机号码
            LCALL   SEND8880
            MOV     A,ADDR                  ;分机号码
            LCALL   SEND8880
            MOV     A,ADDR                  ;分机号码
            LCALL   SEND8880
            CLR     SOUND
            SETB    MODEM
            RET
;****************************************
;数据传输结束,关语音,关MODEM
SENDSJ_END: CLR    SOUND
            CLR    MODEM
            LCALL  DELAY2MS
            LCALL  DELAY2MS

            MOV     A,#11                   ;*
            LCALL   SEND8880
            MOV     A,#2                    ;2
            LCALL   SEND8880
            MOV     A,#12                   ;#
            LCALL   SEND8880
            MOV     A,ADDR                  ;分机号码
            LCALL   SEND8880
            MOV     A,ADDR                  ;分机号码
            LCALL   SEND8880
            MOV     A,ADDR                  ;分机号码
            LCALL   SEND8880
            CLR     MODEM
            clr    SOUND
            RET
;****************************************
;语音传输结束,关语音,关MODEM
SENDYY_END: CLR    SOUND
            CLR    MODEM
            LCALL  DELAY2MS
            LCALL  DELAY2MS

⌨️ 快捷键说明

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