?? jxr.asm
字號:
;********************************************************
;*--------------無線電源控制系統(tǒng)接收程序----------------*
;*------------------------------------------------------*
;*-----------------文件名: JXR.ASM----------------------*
;*------------------------------------------------------*
;*------------------設(shè)計人: 黃 科---------------------*
;*------------------------------------------------------*
;*---------------聯(lián)系電話: 135-74839089----------------*
;********************************************************
;*備注: 起始位: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 ;發(fā)送空標志位: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 ;出現(xiàn)定時中斷,重新開始.
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 ;出現(xiàn)高電平,開始計數(shù).
WAIT1: JB PDATA,WAIT1
CLR TR0 ;出現(xiàn)低電平,停止計數(shù).
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 ;出現(xiàn)高電平,停止計數(shù).
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 ;出現(xiàn)低電平,重新計數(shù).
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 ;出現(xiàn)高電平,重新計數(shù).
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 ;出現(xiàn)低電平,重新計數(shù).
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 ;出現(xiàn)高電平,重新計數(shù).
MOV COUNTH,TH0
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -