📄 du_追加.dt
字号:
jbc p6,key2
call key2_low
jbc p6,key3
call key3_low
ret
nop
nop
jmp MAIN_LOOP
key1_low:
jbc flag,one_end_low
ret
call delay_1ms
jbs p6,key1
ret
bc p5,led1
bc LIGHT,F_LIGHT1
bc flag,one_end_hight
bs flag,one_end_low
bs flag2,key1_flag
;bc flag2,open_set_key
bs flag3,have_an_key
ret
key2_low:
jbc flag2,two_end_low
ret
call delay_1ms
jbs p6,key2
ret
bc p5,led2
bc LIGHT,F_LIGHT2
bc flag2,two_end_hight
bs flag2,two_end_low
bs flag2,key2_flag
;bc flag2,open_set_key
bs flag3,have_an_key
clr key2_add_t
clr add_delay_time
call delay_200ms
ret
nop
nop
jmp MAIN_LOOP
key3_low:
jbc flag3,three_end_low
ret
call delay_1ms
jbs p6,key3
ret
bc p5,led3
bc LIGHT,F_LIGHT3
bc flag3,three_end_hight
bs flag3,three_end_low
bs flag3,key3_flag
; bc flag2,open_set_key
bs flag3,have_an_key
clr key3_add_t
clr add_delay_time
call delay_200ms
ret
;+++++++++++++++++++++++++++++hight+++++++++++++++
WORKING_hight:
MOV A,@0B10111111 ; P60:IRIN,P63:SETTING
IOW P6
jbs P6,key1 ;+++++++++高电平灯光,设键
call key1_hight
jbs P6,key2
call key2_hight
jbs P6,key3
call key3_hight
ret
nop
nop
jmp MAIN_LOOP
key1_hight:
jbc flag,one_end_hight
ret
call delay_1ms
jbc p6,key1
ret
bs p5,led1
bs LIGHT,F_LIGHT1
bc flag,one_end_low
bs flag,one_end_hight
bs flag2,key1_flag
;bc flag2,open_set_key
bs flag3,have_an_key
ret
nop
nop
jmp MAIN_LOOP
key2_hight:
jbc flag2,two_end_hight
ret
call delay_1ms
jbc p6,key2
ret
bc LIGHT, yao_key2_flag
bc flag2,two_end_low
bs flag2,two_end_hight
; bc flag2,open_set_key
bs flag3,have_an_key
jbs flag3,open_close_key2 ;/*/*/*/*/*/
ret
bs LIGHT,F_LIGHT2
bs p5,led2
bs flag2,key2_flag
ret
key3_hight:
jbc flag3,three_end_hight
ret
call delay_1ms
jbc p6,key3
ret
bc LIGHT, yao_key3_flag
bc flag3,three_end_low
bs flag3,three_end_hight
; bc flag2,open_set_key
bs flag3,have_an_key
jbs flag3,open_close_key3 ;/*/*/*/*/*/
ret
bs LIGHT,F_LIGHT3
bs p5,led3
bs flag3,key3_flag
ret
nop
nop
jmp MAIN_LOOP
;+++++++++++++++++++++++++++++++++++++++++++++++++++++
;+++end++按键++++++
;+++++++++++++++++++++start read24c02++++++++++++++++++
read24c02:
jbs flag2,set_key_one
jmp read_ma2
nop
nop
MOV A,@0x10
MOV add_nop,A
CALL RDBYTE
MOV A,TMEP_CI
mov ma1_one,a
call delay_1ms
nop
nop
MOV A,@0x11
MOV add_nop,A
CALL RDBYTE
MOV A,TMEP_CI
mov ma1_two,a
call delay_1ms
nop
nop
MOV A,@0x12
MOV add_nop,A
CALL RDBYTE
MOV A,TMEP_CI
mov ma1_three,a
clr add_nop
call delay_1ms
read_ma2:
jbs flag2,set_key_two
jmp read_ma3
nop
nop ;ma2
MOV A,@0x13
MOV add_nop,A
CALL RDBYTE
MOV A,TMEP_CI
mov ma2_one,a
call delay_1ms
nop
nop
MOV A,@0x14
MOV add_nop,A
CALL RDBYTE
MOV A,TMEP_CI
mov ma2_two,a
call delay_1ms
nop
nop
MOV A,@0x15
MOV add_nop,A
CALL RDBYTE
MOV A,TMEP_CI
mov ma2_three,a
call delay_1ms
clr add_nop
read_ma3:
jbs flag3,set_key_three
ret ;ma3
nop
nop
MOV A,@0x16
MOV add_nop,A
CALL RDBYTE
MOV A,TMEP_CI
mov ma3_one,a
call delay_1ms
nop
nop
MOV A,@0x17
MOV add_nop,A
CALL RDBYTE
MOV A,TMEP_CI
mov ma3_two,a
call delay_1ms
nop
nop
MOV A,@0x18
MOV add_nop,A
CALL RDBYTE
MOV A,TMEP_CI
mov ma3_three,a
clr add_nop
call delay_1ms
ret
;+++++++++++++++++****按键相应处理程序+++++++++++++++++++++++++
;++++++++++++++++++
IR_KEY_DEAL:
jbc flag2,open_set_key
ret
JBS FLAG,F_HAVE_KEY
RET ; 没遥控建按下则推出
BC FLAG,F_HAVE_KEY ; 清除按键标志 ; 在开关子程序中清0
mov a,ma1_one ; 判断是否为第一个按键
XOR A,REC_DATA0
JBS PSW,Z
jmp check_key2_yao
; 判断是否为第一个按键
mov a,ma1_two
XOR A,REC_DATA1
JBS PSW,Z
jmp check_key2_yao
mov a,ma1_three
XOR A,REC_DATA2
JBS PSW,Z
jmp check_key2_yao
call LIGHT1_STATE
nop
nop
check_key2_yao:
jbs flag3,open_close_key2 ;/*/*/*/*/*/
jmp check_key3_yao
; 判断是否为第一个按键
mov a,ma2_one
XOR A,REC_DATA0
JBS PSW,Z
jmp check_key3_yao
mov a,ma2_two ; 判断是否为第一个按键
XOR A,REC_DATA1
JBS PSW,Z
jmp check_key3_yao
mov a,ma2_three ; 判断是否为第一个按键
XOR A,REC_DATA2
JBS PSW,Z
jmp check_key3_yao ; 判断是否为第二个按键
call LIGHT2_STATE
nop
nop
check_key3_yao:
jbs flag3,open_close_key3 ;/*/*/*/*/*/
ret
mov a,ma3_one ; 判断是否为第一个按键
XOR A,REC_DATA0
JBS PSW,Z
ret
nop
nop
mov a,ma3_two ; 判断是否为第一个按键
XOR A,REC_DATA1
JBS PSW,Z
ret
; 判断是否为第一个按键
mov a,ma3_three
XOR A,REC_DATA2
JBS PSW,Z
ret ; 判断是否为第二个按键
call LIGHT3_STATE
ret
;*****LIGHT1********
LIGHT1_STATE:
JBS LIGHT,F_LIGHT1
JMP LIGHT1_ON
BC LIGHT,F_LIGHT1 ; 关灯
BC P5,led1
ret
LIGHT1_ON:
BS LIGHT,F_LIGHT1
BS P5,led1
ret
;*****LIGHT2********
LIGHT2_STATE:
JBS LIGHT,F_LIGHT2
JMP LIGHT2_ON
BC LIGHT,F_LIGHT2 ; 关灯
BC P5,led2
bc LIGHT, yao_key2_flag
clr add_delay_time
clr key2_add_t
call delay_200ms
ret
LIGHT2_ON:
BS LIGHT,F_LIGHT2
BS P5,led2
bs LIGHT,yao_key2_flag
ret
;*****LIGHT3********
LIGHT3_STATE:
JBS LIGHT,F_LIGHT3
JMP LIGHT3_ON
BC LIGHT,F_LIGHT3 ; 关灯
BC P5,led3
bc LIGHT, yao_key3_flag
clr add_delay_time
clr key3_add_t
call delay_200ms
RET
LIGHT3_ON:
BS LIGHT,F_LIGHT3
BS P5,led3
bs LIGHT, yao_key3_flag
RET
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+++++++++++end++键相应处理程序结束+++++++++++++
;+++++++++++++++++解码主流程++++++++++++++++++++++++
;+++++++++++++++
RECEIVE_IR_KEY:
call tong_bu_ma ;预读码
call jie_ma ;程序码
call check_double
ret
;++++++++++++++++++++++++++++++++++++++++++
;+++++end++解码主流程+++++++++++++++++
;+++++++++++++++++++++++++++++++++++同步码++++++++++++++++++++++++++
tong_bu_ma:
MOV A,@0B10111111 ; P60:IRIN,P63:SETTING
IOW P6
clr REC_BUF
clr ADD_TIME
check:
jbc p6,IRIN ;辨别 L,H +++++是否大于110a,大于pass
jmp hight
call delay_1a
mov a,@84 ;;;110a 67
bc psw,c
sub a,REC_BUF ;大于110a
jbs psw,c
jmp check ;少于重检口
jmp go_on_tong_bu
hight:
call delay_1a
mov a,REC_BUF ;+++++++++是否大于250a,大于退出
bc psw,c
add ADD_TIME,a ;累加时间
jbc psw,c
jmp exit_tong_bu
mov a,@200 ;230
bc psw,c
sub a,ADD_TIME ;;;;250 148
jbc psw,c
jmp exit_tong_bu ;大于退出
mov a,@0 ;少于清0
mov REC_BUF,a
jmp check ;没有
go_on_tong_bu:
clr REC_BUF ;是否大于130a,大于退出。电平变化pass
keep_low:
jbc p6,IRIN
jmp pass_tong_bu
call delay_1a
bc psw,c
mov a,@60 ;130a 95
sub a,REC_BUF
jbs psw,c
jmp keep_low
jmp exit_tong_bu
pass_tong_bu:
bs flag,F_HAVE_KEY
ret
exit_tong_bu:
bc flag,F_HAVE_KEY
ret
;++++++++++++++++++++++++++++++++++++++++++++++++
;++++++++++同步码++++++++++
;+++++++++++++++++++++++++++解码主程序++++++++++++++++++++++++++++
jie_ma:
jbs flag,F_HAVE_KEY ;
jmp exit_jie_ma ;+++++++一字节重复八次du_ma_cheng_xu
mov a,@0 ;+++++++共3字节24码
mov tmep_code,a
mov a,@8 ;重复8次
mov tmep_ci,a
bc flag,erro
ma_one:
call du_ma_cheng_xu ;叫解码程序
mov a,tmep_code
mov REC_DATA0,a
jbc flag,erro ;;;;;;;;;;;;;;;;
jmp exit_jie_ma ;;;;;;;;;;;;;;;;;
djz tmep_ci
jmp ma_one
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mov a,@0
mov tmep_code,a
mov a,@8 ;重复8次
mov tmep_ci,a
ma_two:
call du_ma_cheng_xu ;叫解码程序
mov a,tmep_code
mov REC_DATA1,a
jbc flag,erro ;;;;;;;;;;;;;
jmp exit_jie_ma ;;;;;;;;;;;;;;;;;
djz tmep_ci
jmp ma_two
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mov a,@0
mov tmep_code,a
mov a,@8 ;重复8次
mov tmep_ci,a
ma_there:
call du_ma_cheng_xu ;叫解码程序
mov a,tmep_code
mov REC_DATA2,a
jbc flag,erro ;;;;;;;;;;;;;;;;;
jmp exit_jie_ma ;;;;;;;;;;;;;;;;;
djz tmep_ci
jmp ma_there
bs flag,F_HAVE_KEY
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -