松翰 SONIX 中断红外遥控器解码有时失灵
松翰单片机,利用外部中断1进行红外遥控器解码,现在是可以解码出来的,而且解码的结果页对,但是唯一不爽的是,有时解码功能失灵(即当解码成功后,要等一会才可以继续使用遥控器解码),程序没有死机,遥控器解码失灵时,使用按键程序运行也很正常,望高人指点,程序如下芯片:SN8F27E65
晶振:4MHZ
外部中断1,下降沿
用T0作为定时器,
T0M=256分频
PEDGE = 0x08; //下降沿触发
FP01IEN = 1;
程序开始:
L_Ir_Rev:
//b0xch a,_rAccBuf
//b0mov a,PFLAG
//b0mov _rPflagBuf,a
bts1 fp01irq
jmp L_int_sev90
bclr fp01irq
mov a,_rIr_State
b0add pcl,a
jmp ir_00
jmp ir_10
jmp ir_20
jmp L_int_sev90
;------------------------------------------------
ir_00: ; 准备接收
clr t0c
bset ft0enb
mov a,#1
mov _rIr_State,a
jmp L_int_sev90
;------------------------------------------------
;---------------引导码前部分---------------------
ir_10: ; 接收9ms+4.5ms引导码
mov a,t0c //rwk1 -> rDataCodeCT
mov _rDataCodeCT,a
clr t0c
mov a,_rDataCodeCT
sub a,#188 ; 64*170=10880 9+4.5ms min
bts1 fc
jmp L_check_err
mov a,_rDataCodeCT
sub a,#234 ; 64*234=14976 9+4.5ms max
bts0 fc
jmp L_check_err
mov a,#2
mov _rIr_State,a
jmp L_int_sev90
;------------------------------------------------
; ---------------------get data code 4 byte---------------------
ir_20:
mov a,t0c
mov _rDataCodeCT,a
clr t0c
mov a,_rDataCodeCT
sub a,#15 ; 64*15=960
bts1 fc
jmp L_check_err
mov a,_rDataCodeCT
sub a,#19 ; 64*19=1216
bts0 fc
jmp ir_21
jmp ir_bit0
ir_21: //接收bit1
mov a,_rDataCodeCT
sub a,#30
bts1 fc
jmp L_check_err
mov a,_rDataCodeCT
sub a,#38
bts0 fc
jmp L_check_err
ir_bit1:
bset fc
jmp ir_bit
ir_bit0:
bclr fc
ir_bit:
rrcm _rDataCodeL
rrcm _rDataCodeH
rrcm _rUserCodeL
rrcm _rUserCodeH
incms _rRcv_bit
mov a,_rRcv_bit
cmprs a,#32
jmp L_int_sev90
ir_data_check:
bclr ft0enb
clr T0C
clr _rIr_State
clr _rRcv_bit
mov a,_rUserCodeH
cmprs a,#IR_USER
jmp L_check_err
mov a,_rUserCodeL
cmprs a,#IR_USER_SHIFT
jmp L_check_err
mov a,_rDataCodeL
xor a,#0xff
cmprs a,_rDataCodeH
jmp L_check_err
bset _bIR_OK
MOV A,#60
MOV _rIrCntCA,A
jmp L_int_sev90
;------------------------------------------------
L_check_err:
bclr ft0enb
clr _rIr_State
clr _rRcv_bit
bclr _bIR_OK
L_int_sev90:
reti 没有出来遥控按键弹起吧 raxb 发表于 2012-4-24 11:24 static/image/common/back.gif
没有出来遥控按键弹起吧
有的, bset _bIR_OK
MOV A,#60
MOV _rIrCntCA,A
这个就是,每2ms扫描一次,如果rIrCntCA这个大于0就开始渐渐,等于0就复位啊 mzh1668 发表于 2012-9-5 21:58 static/image/common/back.gif
千瑞科技 松翰IC一級代理 快速开发软硬件
主要专业于各类智能小家电及闪灯,LED控制器,移动电源,充电器, ...
千瑞科技 松翰IC
你真讨厌,看到那里都是你的广告,好多人都认识千瑞科技的,你不发太多垃圾广告了,你是技术还是业务,,甘做法,好多搞技术的难怪单价做得、压得那么低,搞得市场也跟着烂!公平竞才好! mzh1668[/quote
见一次扇一次
页:
[1]