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

📄 无线电源控制系统发射程序.asm

📁 本系统是用AT89C2051单片机组成的无线电源控制系统
💻 ASM
字号:


;*备注:   起始位:600US高电平+200us低电平
;*        00:    200us高电平+200us低电平
;*        01:    200us高电平+400us低电平
;*        10:    400us高电平+200us低电平
;*        11:    400us高电平+400us低电平

DOGOUT         EQU  0B7H      ;P3.7

DATAOUT        EQU  0B5H      ;P3.5

REG            EQU  2FH
REGH           EQU  79H
REGL           EQU  78H

ADDREG         EQU  2CH
ADD6           EQU  65H
ADD5           EQU  64H
ADD4           EQU  63H
ADD3           EQU  62H
ADD2           EQU  61H
ADD1           EQU  60H

NUMREG         EQU  2DH
NUM8           EQU  6FH
NUM7           EQU  6EH
NUM6           EQU  6DH
NUM5           EQU  6CH
NUM4           EQU  6BH
NUM3           EQU  6AH
NUM2           EQU  69H
NUM1           EQU  68H

DATAREG        EQU  2EH
DATA2          EQU  71H
DATA1          EQU  70H

ADDBIT3        EQU  30H
ADDBIT2        EQU  31H
ADDBIT1        EQU  32H

NUMBIT4        EQU  33H
NUMBIT3        EQU  34H
NUMBIT2        EQU  35H
NUMBIT1        EQU  36H

DATABIT        EQU  37H

DEL            EQU  38H
DEL1           EQU  39H



                 ORG  0000H
MAIN:          MOV    SP,#08H

               MOV    P1,#0FFH
               MOV    P3,#0FFH

               MOV    TMOD,#00100000B    ;T1为方式2(8位).
               MOV    SCON,#50H          ;设置串口方式1,允许接收.
               MOV    TH1,#0F3H          ;设置波特率:2400bit/s(晶振12MHz)
               MOV    TL1,#0F3H
               SETB   TR1

;-------------------------------------------------------------------------
;接收起始码(10101010B)
START:         ACALL  WATCHDOG           ;调看门狗喂狗子程序.
               JNB    RI,START
               CLR    RI
               MOV    A,SBUF
               CJNE   A,#0AAH,START

;------------------------------------------------------------------------
;接收地址码:(1-63)
RLOOP1:        JNB    RI,RLOOP1
               CLR    RI
               MOV    A,SBUF
               MOV    ADDREG,A

;------------------------------------------------------------------------
;接收用户码:(1-255)
RLOOP2:        JNB    RI,RLOOP2
               CLR    RI
               MOV    A,SBUF
               MOV    NUMREG,A

;-------------------------------------------------------------------------
;接收功能码:(1-2)
RLOOP3:        JNB    RI,RLOOP3
               CLR    RI
               MOV    A,SBUF
               MOV    DATAREG,A


               ACALL  WATCHDOG           ;调看门狗喂狗子程序.
               MOV    REG,#00H
               MOV    C,ADD6
               MOV    REGH,C
               MOV    C,ADD5
               MOV    REGL,C
               MOV    ADDBIT3,REG

               MOV    REG,#00H
               MOV    C,ADD4
               MOV    REGH,C
               MOV    C,ADD3
               MOV    REGL,C
               MOV    ADDBIT2,REG

               MOV    REG,#00H
               MOV    C,ADD2
               MOV    REGH,C
               MOV    C,ADD1
               MOV    REGL,C
               MOV    ADDBIT1,REG

               ACALL  WATCHDOG           ;调看门狗喂狗子程序.
               MOV    REG,#00H
               MOV    C,NUM8
               MOV    REGH,C
               MOV    C,NUM7
               MOV    REGL,C
               MOV    NUMBIT4,REG

               MOV    REG,#00H
               MOV    C,NUM6
               MOV    REGH,C
               MOV    C,NUM5
               MOV    REGL,C
               MOV    NUMBIT3,REG

               MOV    REG,#00H
               MOV    C,NUM4
               MOV    REGH,C
               MOV    C,NUM3
               MOV    REGL,C
               MOV    NUMBIT2,REG

               MOV    REG,#00H
               MOV    C,NUM2
               MOV    REGH,C
               MOV    C,NUM1
               MOV    REGL,C
               MOV    NUMBIT1,REG

               ACALL  WATCHDOG           ;调看门狗喂狗子程序.
               MOV    REG,#00H
               MOV    C,DATA2
               MOV    REGH,C
               MOV    C,DATA1
               MOV    REGL,C
               MOV    DATABIT,REG


BEGIN:         MOV    R6,#3

;------------------------------------------------------------------------------
;发送起始位.
LOP:           CLR    DATAOUT
               ACALL  DELAY600US
               SETB   DATAOUT
               ACALL  DELAY200US

;-----------------------------------------------------------------------------
;发送地址码(6位).
NEXTADD1:      MOV    A,ADDBIT3
NEXTADD14:     CJNE   A,#00H,NEXTADD11
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTADD2
NEXTADD11:     CJNE   A,#01H,NEXTADD12
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY400US
               SJMP   NEXTADD2
NEXTADD12:     CJNE   A,#02H,NEXTADD13
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTADD2
NEXTADD13:     CJNE   A,#03H,NEXTADD14
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY400US

NEXTADD2:      MOV    A,ADDBIT2
NEXTADD24:     CJNE   A,#00H,NEXTADD21
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTADD3
NEXTADD21:     CJNE   A,#01H,NEXTADD22
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY400US
               SJMP   NEXTADD3
NEXTADD22:     CJNE   A,#02H,NEXTADD23
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTADD3
NEXTADD23:     CJNE   A,#03H,NEXTADD24
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY400US

NEXTADD3:      MOV    A,ADDBIT1
NEXTADD34:     CJNE   A,#00H,NEXTADD31
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTNUM1
NEXTADD31:     CJNE   A,#01H,NEXTADD32
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY400US
               SJMP   NEXTNUM1
NEXTADD32:     CJNE   A,#02H,NEXTADD33
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTNUM1
NEXTADD33:     CJNE   A,#03H,NEXTADD34
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY400US



;------------------------------------------------------------------------
;发送用户码(8位).
NEXTNUM1:      MOV    A,NUMBIT4
NEXTNUM14:     CJNE   A,#00H,NEXTNUM11
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTNUM2
NEXTNUM11:     CJNE   A,#01H,NEXTNUM12
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY400US
               SJMP   NEXTNUM2
NEXTNUM12:     CJNE   A,#02H,NEXTNUM13
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTNUM2
NEXTNUM13:     CJNE   A,#03H,NEXTNUM14
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY400US

NEXTNUM2:      MOV    A,NUMBIT3
NEXTNUM24:     CJNE   A,#00H,NEXTNUM21
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTNUM3
NEXTNUM21:     CJNE   A,#01H,NEXTNUM22
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY400US
               SJMP   NEXTNUM3
NEXTNUM22:     CJNE   A,#02H,NEXTNUM23
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTNUM3
NEXTNUM23:     CJNE   A,#03H,NEXTNUM24
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY400US

NEXTNUM3:      MOV    A,NUMBIT2
NEXTNUM34:     CJNE   A,#00H,NEXTNUM31
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTNUM4
NEXTNUM31:     CJNE   A,#01H,NEXTNUM32
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY400US
               SJMP   NEXTNUM4
NEXTNUM32:     CJNE   A,#02H,NEXTNUM33
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTNUM4
NEXTNUM33:     CJNE   A,#03H,NEXTNUM34
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY400US



NEXTNUM4:      MOV    A,NUMBIT1
NEXTNUM44:     CJNE   A,#00H,NEXTNUM41
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTDATA1
NEXTNUM41:     CJNE   A,#01H,NEXTNUM42
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY400US
               SJMP   NEXTDATA1
NEXTNUM42:     CJNE   A,#02H,NEXTNUM43
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTDATA1
NEXTNUM43:     CJNE   A,#03H,NEXTNUM44
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY400US

;-----------------------------------------------------------------------------
;发送功能码(1位).
NEXTDATA1:     MOV    A,DATABIT
NEXTDATA14:    CJNE   A,#00H,NEXTDATA11
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTDATA2
NEXTDATA11:    CJNE   A,#01H,NEXTDATA12
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               ACALL  DELAY400US
               SJMP   NEXTDATA2
NEXTDATA12:    CJNE   A,#02H,NEXTDATA13
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY200US
               SJMP   NEXTDATA2
NEXTDATA13:    CJNE   A,#03H,NEXTDATA14
               CLR    DATAOUT
               ACALL  DELAY400US
               SETB   DATAOUT
               ACALL  DELAY400US

NEXTDATA2:     DJNZ   R6,CONTINU
               CLR    DATAOUT
               ACALL  DELAY200US
               SETB   DATAOUT
               AJMP   START
CONTINU:       AJMP   LOP


;---------------------------------------------------------------------
;看门狗喂狗子程序.
WATCHDOG:      SETB   DOGOUT
               NOP
               NOP
               NOP
               NOP
               CLR    DOGOUT
               RET




DELAY200US:    MOV    R2,#9
DELAY200US1:   MOV    R3,#9
DELAY200US2:   DJNZ   03H,DELAY200US2
               DJNZ   02H,DELAY200US1
               NOP
               NOP
               NOP
               NOP
               RET

DELAY400US:    MOV    R4,#10
DELAY400US1:   MOV    R5,#18
DELAY400US2:   DJNZ   05H,DELAY400US2
               DJNZ   04H,DELAY400US1
               NOP
               NOP
               NOP
               RET

DELAY600US:    MOV    R0,#19
DELAY600US1:   MOV    R1,#14
DELAY600US2:   DJNZ   01H,DELAY600US2
               DJNZ   00H,DELAY600US1
               NOP
               NOP
               NOP
               NOP
               NOP
               RET

DELAY100US:    MOV    DEL,#47
DELAY100US1:   DJNZ   DEL,DELAY100US1
               RET

DELAY20MS:     MOV    DEL1,#4
DELAY20MS1:    PUSH   DEL1
DELAY20MS2:    PUSH   DEL1
DELAY20MS3:    DJNZ   DEL1,DELAY20MS3
               POP    DEL1
               DJNZ   DEL1,DELAY20MS2
               POP    DEL1
               DJNZ   DEL1,DELAY20MS1
               RET




⌨️ 快捷键说明

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