📄 无线电源控制系统接收程序.asm
字号:
SUBB A,COUNTL
MOV A,#N400HH
SUBB A,COUNTH
JC ADDERRE3 ;低电平宽度大于400US,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N400LL
MOV A,COUNTH
SUBB A,#N400LH
JC ADDRESS31
SETB ADDIBIT3 ;电平宽度为400us,addibit3=1
SJMP ADDRESS2
ADDRESS31: MOV A,#N200HL
CLR C
SUBB A,COUNTL
MOV A,#N200HH
SUBB A,COUNTH
JC ADDERRE3 ;低电平宽度大于200us,小于400us,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N200LL
MOV A,COUNTH
SUBB A,#N200LH
JC ADDERRE3 ;高电平宽度小于200us,错误,返回.
CLR ADDIBIT3 ;电平宽度为200us,addibit3=0
SJMP ADDRESS2
ADDERRE3: AJMP START
ADDRESS2: JB PDATA,ADDRESS2
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 ADDERRE2 ;高电平宽度大于400US,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N400LL
MOV A,COUNTH
SUBB A,#N400LH
JC ADDRESS21
SETB ADDIBIT2 ;电平宽度为400us,addibit2=1
SJMP ADDRESS1
ADDRESS21: MOV A,#N200HL
CLR C
SUBB A,COUNTL
MOV A,#N200HH
SUBB A,COUNTH
JC ADDERRE2 ;高电平宽度大于200us,小于400us,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N200LL
MOV A,COUNTH
SUBB A,#N200LH
JC ADDERRE2 ;高电平宽度小于200us,错误,返回.
CLR ADDIBIT2 ;电平宽度为200us,addibit2=0
SJMP ADDRESS1
ADDERRE2: AJMP START
ADDRESS1: JNB PDATA,ADDRESS1
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 ADDERRE1 ;低电平宽度大于400US,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N400LL
MOV A,COUNTH
SUBB A,#N400LH
JC ADDRESS11
SETB ADDIBIT1 ;电平宽度为400us,addibit1=1
SJMP ADDOK
ADDRESS11: MOV A,#N200HL
CLR C
SUBB A,COUNTL
MOV A,#N200HH
SUBB A,COUNTH
JC ADDERRE1 ;低电平宽度大于200us,小于400us,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N200LL
MOV A,COUNTH
SUBB A,#N200LH
JC ADDERRE1 ;高电平宽度小于200us,错误,返回.
CLR ADDIBIT1 ;电平宽度为200us,addibit1=0
SJMP ADDOK
ADDERRE1: AJMP START
ADDOK: ACALL ADDPRG
MOV A,ADDLI
CJNE A,ADDR,ADDERRE
SJMP NUM
ADDERRE: AJMP START
;----------------------------------------------------------------------------
;判断(8位)编号
NUM: MOV NUMI,#00H
NUM8: JB PDATA,NUM8
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 NUMERRE8 ;高电平宽度大于400US,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N400LL
MOV A,COUNTH
SUBB A,#N400LH
JC NUM81
SETB NUMIBIT8 ;电平宽度为400us,numibit6=1
SJMP NUM7
NUM81: MOV A,#N200HL
CLR C
SUBB A,COUNTL
MOV A,#N200HH
SUBB A,COUNTH
JC NUMERRE8 ;高电平宽度大于200us,小于400us,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N200LL
MOV A,COUNTH
SUBB A,#N200LH
JC NUMERRE8 ;高电平宽度小于200us,错误,返回.
CLR NUMIBIT8 ;电平宽度为200us,NUMIBIT6=0
SJMP NUM7
NUMERRE8: AJMP START
NUM7: JNB PDATA,NUM7
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 NUMERRE7 ;低电平宽度大于400US,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N400LL
MOV A,COUNTH
SUBB A,#N400LH
JC NUM71
SETB NUMIBIT7 ;电平宽度为400us,numibit5=1
SJMP NUM6
NUM71: MOV A,#N200HL
CLR C
SUBB A,COUNTL
MOV A,#N200HH
SUBB A,COUNTH
JC NUMERRE7 ;低电平宽度大于200us,小于400us,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N200LL
MOV A,COUNTH
SUBB A,#N200LH
JC NUMERRE7 ;高电平宽度小于200us,错误,返回.
CLR NUMIBIT7 ;电平宽度为200us,numibit5=0
SJMP NUM6
NUMERRE7: AJMP START
NUM6: JB PDATA,NUM6
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 NUMERRE6 ;高电平宽度大于400US,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N400LL
MOV A,COUNTH
SUBB A,#N400LH
JC NUM61
SETB NUMIBIT6 ;电平宽度为400us,numibit6=1
SJMP NUM5
NUM61: MOV A,#N200HL
CLR C
SUBB A,COUNTL
MOV A,#N200HH
SUBB A,COUNTH
JC NUMERRE6 ;高电平宽度大于200us,小于400us,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N200LL
MOV A,COUNTH
SUBB A,#N200LH
JC NUMERRE6 ;高电平宽度小于200us,错误,返回.
CLR NUMIBIT6 ;电平宽度为200us,NUMIBIT6=0
SJMP NUM5
NUMERRE6: AJMP START
NUM5: JNB PDATA,NUM5
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 NUMERRE5 ;低电平宽度大于400US,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N400LL
MOV A,COUNTH
SUBB A,#N400LH
JC NUM51
SETB NUMIBIT5 ;电平宽度为400us,numibit5=1
SJMP NUM4
NUM51: MOV A,#N200HL
CLR C
SUBB A,COUNTL
MOV A,#N200HH
SUBB A,COUNTH
JC NUMERRE5 ;低电平宽度大于200us,小于400us,错误,返回
MOV A,COUNTL
CLR C
SUBB A,#N200LL
MOV A,COUNTH
SUBB A,#N200LH
JC NUMERRE5 ;高电平宽度小于200us,错误,返回.
CLR NUMIBIT5 ;电平宽度为200us,numibit5=0
SJMP NUM4
NUMERRE5: AJMP START
NUM4: JB PDATA,NUM4
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 NUMERRE4 ;高电平宽度大于400US,错误,返回
MOV A,COUNTL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -