📄 tx.asm
字号:
;--------------------------------
;TMRO EQU 1
;-------------------------------------------
;发射电路主程序区
;------------------------------------------
ORG 0
MOVLW 0xAA ;设码1
MOVWF 30
MOVLW 0xAA ;设码2
MOVWF 29
MOVLW 0x00 ;输出同步码0 732us
MOVWF 6
TCK MOVLW 0xCD ;设定狗
OPTION
MOVLW 0xF3 ;设I\O口
TRIS 6
MOVF 30,0 ;F30到F27
MOVWF 27
MOVF 29,0 ;F29到F26
MOVWF 11
MOVLW 0x8 ;设码1 次数
MOVWF 28
MOVLW 0x8 ;设码2 次数
MOVWF 25
MOVLW 0x04 ;输出同步码1 1ms
MOVWF 6
CLRWDT ;狗清0
MOVLW 0xCD ;设定狗
OPTION
NOP
NOP
MOVLW 0x00 ;输出同步码0 1Ms
MOVWF 6
CLRWDT ;狗清0
MOVLW 0xCD ;设定狗
OPTION
NOP
NOP
MOVLW 0x04 ;输出同步码1 1ms
MOVWF 6
CLRWDT ;狗清0
MOVLW 0xCD ;设定狗
OPTION
NOP
NOP
MOVLW 0x00 ;输出同步码0 1000us
MOVWF 6
CLRWDT ;狗清0
MOVLW 0xCD ;设定狗
OPTION
NOP
NOP
NOP
LA2 MOVLW 0x00 ;输出同步码0 1000us
MOVWF 6
CLRWDT ;狗清0
MOVLW 0xCD ;设定狗
OPTION
NOP
NOP
NOP
MOVLW 0x04 ;输出同步码1 5ms
MOVWF 6
MOVLW 0xE
MOVWF 12
LA3 DECFSZ 12,1 ;减1等于零就跳
GOTO LA3
MOVLW 0x00 ;输出同步码0 500us
MOVWF 6
BTFSC 27,0 ;DO 既F27第一位=0 就跳
GOTO LKB
NOP
CALL ABL ;调用输出0
GOTO LKA ;
LKB CALL ABH ;调用输出1
NOP
NOP
LKA RRF 27,1 ;右移
DECFSZ 28,1 ;减1等于零就跳
GOTO LA2
NOP
LC2 MOVLW 0x00 ;输出同步码0 1000us
MOVWF 6
CLRWDT ;狗清0
MOVLW 0xCD ;设定狗
OPTION
NOP
NOP
NOP
NOP
MOVLW 0x04 ;输出同步码1 5ms
MOVWF 6
MOVLW 0xE
MOVWF 12
LC3 DECFSZ 12,1 ;减1等于零就跳
GOTO LC3
MOVLW 0x00 ;输出同步码0 500us
MOVWF 6
LKD BTFSC 11,0 ;F26 D9 等于0就跳
GOTO LBK
NOP
CALL ABL ;调用输出0 2074us
GOTO KK1
LBK CALL ABH ;调用输出1 2074us
NOP
NOP
KK1 RRF 11,1 ;右移动
DECFSZ 25,1 ;减1为0就跳
GOTO LC2 ;末结束
NOP
NOP
NOP
NOP
NOP
NOP
MOVLW 0x00 ;输出码0
MOVWF 6
CALL LD3 ;定时800ms
MOVLW 0xF3 ;设I\O口
TRIS 6
GOTO TCK ;已结束
;---------------------------
;子程序区
;-----------------------------
ABH MOVLW 0x04 ;输出1
MOVWF 6
MOVLW 0xD ;输出1 5ms
MOVWF 20
LB1 DECFSZ 20,1 ;减1为0就跳
GOTO LB1
CLRWDT ;狗清0
MOVLW 0xCD ;设定狗
OPTION
MOVLW 0x00 ;输出0
MOVWF 6
RETLW 0x00
ABL MOVLW 0x04 ;输出1
MOVWF 6
MOVLW 0x5 ;输出0 2.5ms
MOVWF 19
LB2 DECFSZ 19,1 ;减1为0就跳
GOTO LB2
MOVLW 0x00 ;输出0
MOVWF 6
MOVLW 0x5 ;输出0 2.5ms
MOVWF 19
LB3 DECFSZ 19,1 ;减1为0就跳
GOTO LB3
CLRWDT ;狗清0
MOVLW 0xCD ;设定狗
OPTION
RETLW 0x00
;------------------------------
;定时程序
;------------------------------
LD3 CLRF 1 ;定时器清零
MOVLW 0x87 ;设狗 1:256
OPTION
LS3 MOVLW 0xF0 ;定时时 800ms
CLRWDT ;狗清0
SUBWF 1,0 ;F减W
BTFSS 3,2 ;Z=1 既结果相等 就跳
BTFSC 3,0 ;C=0 即结果为负 就跳
RETLW 0x00 ;时间到
GOTO LS3 ;时间末到
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -