搜索
bottom↓
回复: 4

松翰 SONIX 中断红外遥控器解码有时失灵

[复制链接]

出0入0汤圆

发表于 2012-4-24 11:10:42 | 显示全部楼层 |阅读模式
松翰单片机,利用外部中断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

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-4-24 11:24:08 | 显示全部楼层
没有出来遥控按键弹起吧

出0入0汤圆

 楼主| 发表于 2012-4-24 11:36:15 | 显示全部楼层
raxb 发表于 2012-4-24 11:24
没有出来遥控按键弹起吧

有的, bset        _bIR_OK
                                        MOV                A,#60
                                        MOV                _rIrCntCA,A  
这个就是,每2ms扫描一次,如果rIrCntCA这个大于0就开始渐渐,等于0就复位啊

出0入0汤圆

发表于 2012-9-28 00:21:27 | 显示全部楼层
mzh1668 发表于 2012-9-5 21:58
千瑞科技 松翰IC一級代理 快速开发软硬件
主要专业于各类智能小家电及闪灯,LED控制器,移动电源,充电器, ...

千瑞科技 松翰IC
你真讨厌,看到那里都是你的广告,好多人都认识千瑞科技的,你不发太多垃圾广告了,你是技术还是业务,,甘做法,好多搞技术的难怪单价做得、压得那么低,搞得市场也跟着烂!公平竞才好!

出0入0汤圆

发表于 2012-9-28 06:49:00 | 显示全部楼层
[quote]mzh1668[/quote

见一次扇一次
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-19 12:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表