📄 无线电源控制系统发射程序.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 + -