[求助]一个关于红外解码不稳定的问题求教大家
本帖最后由 lxa0 于 2014-7-6 17:43 编辑本人用的是50462芯片红外遥控手柄
解码过程没问题
问题是:
当按下某个键后解码成功
这时候再换一个键按下后
有时候会出现上次那个键的动作
就是说出现了误动作
检查代码没找出问题所在
困扰我很久
无奈在此求助大家
看这个问题怎么解决
不胜感激
下面是我写的原代码:
;tt1 T1读红外代码子程序<占用区2 >*******************************
org 0290h
tt1:push dph ;保护现场
push dpl
push acc
push psw
jb 01h,t3
jb 02h,t3 ;全部动作未完成则返回
jb 00h,t2 ;如果收到遥控引导码则进入接收识别模式
mov th1,#00h ;清T1,为接收做准备
mov tl1,#00h
setb 00h ;设接收遥控波头准备好标志位
setb tr1 ;开T1中断
sjmp t3
t2:setb psw.4 ;进入区2
clr psw.3
mov a,th1 ;将收到的第一个遥控波头存到30h单元
mov @r0,a
mov th1,#00h ;清T1,准备读下一位
mov tl1,#00h
inc r0
djnz r1,t3 ;全部信号接收完闭否?
mov 10h,#30h ;接收完,则恢复10h、11h单元初值
mov 11h,#2fh
clr tr1 ;关T1中断
clr ex1 ;关外部中断1
mov 20h,#00h ;恢复接收标致位
setb 01h ;设读取完成标志并允许转换标志位
t3:pop psw
pop acc
pop dpl
pop dph
reti
;zh转换子程序<占用区1>*********************************************
org 0300h
zh: push dph ;将识别后的遥控信号转换成16位动作代码
push dpl
push acc
push psw
setb psw.3 ;进入区i
clr psw.4
mov r0,#2fh
mov r1,#07h ;8位一小组
jb 00h,h01
jb 02h,h01
jb 01h,h0
h00:setb ex1
mov 20h,#00h ;清除上次的标志
mov 21h,#00h ;清除上次的动作指令
h01:mov 08h,#2fh
mov 09h,#07h
pop psw
pop acc
pop dph
pop dpl
ret
h0: inc r0 ;取第一组第一位
cjne r0,#51h,h1 ;是否干扰?
sjmp h00 ;是则返回
h1: jc h2
sjmp h00
h2: cjne @r0,#03h,h0 ;开始转换第一组第一位
inc r0
cjne @r0,#03h,h0
inc r0
cjne @r0,#03h,h0
inc r0
cjne @r0,#01h,h0
inc r0
cjne @r0,#01h,h0
inc r0
cjne @r0,#01h,h0
inc r0
cjne @r0,#03h,h0
inc r0
cjne @r0,#01h,h0
cjne r0,#59h,h3 ;地址码正确否?
sjmp h00
h3: jc h4
sjmp h00
h4: inc r0 ;开始转换指令码
mov a,@r0
jb acc.1,h5
clr 08h
sjmp h6
h5: setb 08h
h6: mov a,21h
rl a
mov 21h,a
djnz r1,h4 ;8位指令码转换完否?
setb 02h ;设置允许执行动作标志位
clr 01h ;清除允许转换标志位
ajmp h01
网上搜索的50462的资料
怎么不能上传图片了????????????????? 本帖最后由 lxa0 于 2014-7-7 00:04 编辑
只有几个人浏览过本帖子了
................... 用分析仪测量波形,看发的码对不对应那个键,发射没问题的话,就是接收解码的问题 了 zxd08 发表于 2014-7-7 09:27
用分析仪测量波形,看发的码对不对应那个键,发射没问题的话,就是接收解码的问题 了 ...
解码没问题
都可以照指令动作的
就是有时后会误动作 汇编现在看不懂了
不知道50462有没有连按码,有没有处理连按码 楼主的汇编看不懂,楼主键码执行完动作,码值清空了吗? lxa0 发表于 2014-7-7 10:26
解码没问题
都可以照指令动作的
就是有时后会误动作
还没分析出误出作是发射造成的还是接收造成的? szpspike 发表于 2014-7-7 10:30
汇编现在看不懂了
不知道50462有没有连按码,有没有处理连按码
有连按码
我是接收3组后
找出其中的2组做比较
一致的话才动作的 zyyn123 发表于 2014-7-7 11:13
楼主的汇编看不懂,楼主键码执行完动作,码值清空了吗?
是的清理了
mov 20h,#00h
mov 21h,#00h
mov 22h,#00h
上3句就是做清理的代码 zxd08 发表于 2014-7-7 16:52
还没分析出误出作是发射造成的还是接收造成的?
这个还真没分析出来
所以请大家帮助 继续求助~~~~~~~~~~~~~~ 汇编....
肯定是逻辑有问题
qq335702318 发表于 2014-7-9 08:48
汇编....
肯定是逻辑有问题
我也知道有错误
但是就是找不出来呀
.............. lxa0 发表于 2014-7-9 11:40
我也知道有错误
但是就是找不出来呀
..............
用C吧,,汇编基本没人人能帮你 qq335702318 发表于 2014-7-9 21:05
用C吧,,汇编基本没人人能帮你
老朽已年过半百
学不进去 C 了呀
页:
[1]