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

📄 无线电源控制系统接收程序.asm

📁 本系统是用AT89C2051单片机组成的无线电源控制系统
💻 ASM
📖 第 1 页 / 共 3 页
字号:
                  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 + -