📄 ir_tx.asm
字号:
$MOD51
ORG 00H
AJMP START
ORG 1BH
CPL P1.0
RETI
START: MOV TMOD,#00100000B
MOV TH1,#244
MOV IE,#10001000B
SETB TR1
CLR P1.1
STB: MOV A,P2 ; WAITING FOR SEND BUTTON SIGNAL
MOV B,A
JNB P1.2, TX_D
AJMP STB
TX_D: ACALL ST
MOV R5,#2
MOV R4,#8
NEXT: NOP
NOP
NOP
NOP
NOP
NEXT1: CLR C
RLC A
JC BIT_1
AJMP BIT_0
NEXTB: DJNZ R4,NEXT
MOV R4,#8
MOV A,B
CPL A
DJNZ R5,NEXT1
ACALL ED
AJMP STB
ST: ;START BIT PATTERN
SETB P1.1 ;_________8mS_________
MOV R6,#80 ; |____4mS____
D1: ACALL DEL0_1 ; DELAY 8mS
DJNZ R6,D1
CLR P1.1
MOV R6,#40
D2: ACALL DEL0_1 ; DELAY 4mS
DJNZ R6,D2
RET
BIT_1:
NOP
NOP ;1 BIT PATTERN
SETB P1.1 ;_0.8mS_
MOV R6,#8 ; |_______1.6mS_______
D3: ACALL DEL0_1 ; DELAY 0.8mS
DJNZ R6,D3
CLR P1.1
MOV R6,#16
D4: ACALL DEL0_1 ; DELAY 1.6mS
DJNZ R6,D4
AJMP NEXTB
BIT_0: ;0 BIT PATTERN
SETB P1.1 ;_0.8mS_
MOV R6,#8 |_0.4mS_
D5: ACALL DEL0_1 ; DELAY 0.8mS
DJNZ R6,D5
CLR P1.1
MOV R6,#4
D6: ACALL DEL0_1 ; DELAY 0.4mS
DJNZ R6,D6
AJMP NEXTB
ED: ;END BIT PATTERN
SETB P1.1 ;______4mS______
MOV R6,#40 ; |_2mS_
D7: ACALL DEL0_1
DJNZ R6,D7
CLR P1.1
MOV R6,#20
D8: ACALL DEL0_1
DJNZ R6,D8
RET
DEL0_1: MOV R7, #23 ; 23 decimal
DL: NOP ; inserted NOPs to cause delay
NOP
DJNZ R7, DL ; decrement R7, if not zero loop back
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -