📄 无线电源控制系统接收程序.asm
字号:
;*备注: 起始位:600US高电平+200us低电平
;* 00: 200us高电平+200us低电平
;* 01: 200us高电平+400us低电平
;* 10: 400us高电平+200us低电平
;* 11: 400us高电平+400us低电平
PDATA EQU 0B2H ;P3.2
NDATA EQU 0B3H ;P3.3
ADDR EQU 20H ;本机地址.
ADD2 EQU 0B1H ;P3.1
ADD1 EQU 0B0H ;P3.0
ADDLI EQU 22H ;输入地址.
ADDIBIT6 EQU 15H
ADDIBIT5 EQU 14H
ADDIBIT4 EQU 13H
ADDIBIT3 EQU 12H
ADDIBIT2 EQU 11H
ADDIBIT1 EQU 10H
COUNTH EQU 30H
COUNTL EQU 31H
N200HH EQU 00H ;240US
N200HL EQU 0F0H
N200LH EQU 00H ;160US
N200LL EQU 0A0H
N400HH EQU 01H ;440US
N400HL EQU 0B8H
N400LH EQU 01H ;360US
N400LL EQU 68H
N600HH EQU 02H ;640US
N600HL EQU 80H
N600LH EQU 02H ;560US
N600LL EQU 30H
NUMR EQU 21H ;本机编号.
NUMI EQU 24H ;编号
NUMIBIT8 EQU 27H
NUMIBIT7 EQU 26H
NUMIBIT6 EQU 25H
NUMIBIT5 EQU 24H
NUMIBIT4 EQU 23H
NUMIBIT3 EQU 22H
NUMIBIT2 EQU 21H
NUMIBIT1 EQU 20H
DATAI EQU 25H
DATABIT2 EQU 29H
DATABIT1 EQU 28H
TIFLAG EQU 7FH ;发送空标志位:1=未空,0=空
TIREG1 EQU 32H
TIREG2 EQU 33H
DATAOUTk EQU 0B4H ;P3.4
dataoutg equ 0b5h ;p3.5
DOGOUT EQU 0B7H ;P3.7
del equ 40h
ORG 0000H
AJMP MAIN
ORG 000BH
NOP
NOP
CLR TR0
MOV A,SP ;出现定时中断,重新开始.
NOP
CLR C
SUBB A,#2
MOV SP,A
MOV DPTR,#START
PUSH DPL
PUSH DPH
RETI
ORG 0040H
MAIN: NOP
NOP
MOV SP,#50H
NOP
NOP
MOV P3,#0FFH
MOV P1,#0FFH
SETB DATAOUTk
SETB DATAOUTG
MOV TMOD,#01H
SETB EA
SETB ET0
;-----------------------------------------------------------------------------
;判断起始位: 600US高电平,200US低电平.
START: NOP
NOP
ACALL WATCHDOG
NOP
NOP
JNB PDATA,START
MOV TH0,#00H
MOV TL0,#00H
SETB TR0 ;出现高电平,开始计数.
WAIT1: JB PDATA,WAIT1
CLR TR0 ;出现低电平,停止计数.
MOV COUNTH,TH0
MOV COUNTL,TL0
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
MOV A,COUNTH
CJNE A,#N600HH,START
MOV A,COUNTL
CLR C
SUBB A,#N600LL
JC START ;高电平宽度小于530US,则返回.
MOV A,#N600HL
CLR C
SUBB A,COUNTL
JC START ;高电平宽度大于670US,则返回.
WAIT2: JNB PDATA,WAIT2
CLR TR0 ;出现高电平,停止计数.
MOV COUNTH,TH0
MOV COUNTL,TL0
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
MOV A,COUNTL
CLR C
SUBB A,#N200LL
MOV A,COUNTH
SUBB A,#N200LH
JC START ;低电平宽度小于130US,则返回.
MOV A,#N200HL
CLR C
SUBB A,COUNTL
MOV A,#N200HH
SUBB A,COUNTH
JC START ;低电平宽度大于270US,则返回.
;--------------------------------------------------------------------------
;判断(6位)地址位.
ADDRESS: MOV ADDLI,#00H
ADDRESS6: JB PDATA,ADDRESS6
CLR TR0 ;出现低电平,重新计数.
MOV COUNTH,TH0
MOV COUNTL,TL0
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
MOV A,#N400HL
CLR C
SUBB A,COUNTL
MOV A,#N400HH
SUBB A,COUNTH
JC ADDERRE6 ;高电平宽度大于400US,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N400LL
MOV A,COUNTH
SUBB A,#N400LH
JC ADDRESS61
SETB ADDIBIT6 ;电平宽度为400us,addibit6=1
SJMP ADDRESS5
ADDRESS61: MOV A,#N200HL
CLR C
SUBB A,COUNTL
MOV A,#N200HH
SUBB A,COUNTH
JC ADDERRE6 ;高电平宽度大于200us,小于400us,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N200LL
MOV A,COUNTH
SUBB A,#N200LH
JC ADDERRE6 ;高电平宽度小于200us,错误,返回.
CLR ADDIBIT6 ;电平宽度为200us,addibit6=0
SJMP ADDRESS5
ADDERRE6: AJMP START
ADDRESS5: JNB PDATA,ADDRESS5
CLR TR0 ;出现高电平,重新计数.
MOV COUNTH,TH0
MOV COUNTL,TL0
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
MOV A,#N400HL
CLR C
SUBB A,COUNTL
MOV A,#N400HH
SUBB A,COUNTH
JC ADDERRE5 ;低电平宽度大于400US,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N400LL
MOV A,COUNTH
SUBB A,#N400LH
JC ADDRESS51
SETB ADDIBIT5 ;电平宽度为400us,addibit5=1
SJMP ADDRESS4
ADDRESS51: MOV A,#N200HL
CLR C
SUBB A,COUNTL
MOV A,#N200HH
SUBB A,COUNTH
JC ADDERRE5 ;低电平宽度大于200us,小于400us,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N200LL
MOV A,COUNTH
SUBB A,#N200LH
JC ADDERRE5 ;高电平宽度小于200us,错误,返回.
CLR ADDIBIT5 ;电平宽度为200us,addibit5=0
SJMP ADDRESS4
ADDERRE5: AJMP START
ADDRESS4: JB PDATA,ADDRESS4
CLR TR0 ;出现低电平,重新计数.
MOV COUNTH,TH0
MOV COUNTL,TL0
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
MOV A,#N400HL
CLR C
SUBB A,COUNTL
MOV A,#N400HH
SUBB A,COUNTH
JC ADDERRE4 ;高电平宽度大于400US,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N400LL
MOV A,COUNTH
SUBB A,#N400LH
JC ADDRESS41
SETB ADDIBIT4 ;电平宽度为400us,addibit4=1
SJMP ADDRESS3
ADDRESS41: MOV A,#N200HL
CLR C
SUBB A,COUNTL
MOV A,#N200HH
SUBB A,COUNTH
JC ADDERRE4 ;高电平宽度大于200us,小于400us,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N200LL
MOV A,COUNTH
SUBB A,#N200LH
JC ADDERRE4 ;高电平宽度小于200us,错误,返回.
CLR ADDIBIT4 ;电平宽度为200us,addibit4=0
SJMP ADDRESS3
ADDERRE4: AJMP START
ADDRESS3: JNB PDATA,ADDRESS3
CLR TR0 ;出现高电平,重新计数.
MOV COUNTH,TH0
MOV COUNTL,TL0
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
MOV A,#N400HL
CLR C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -