求教!!红外控制可控硅移相调光灯 按键时灯会灭一下 这是怎么回事???(急!)

2020-02-09 09:21发布

void interrupt ISR()
{
if(T0IF==1)      
  {           
   T0IF = 0;         //清中断标志
   。。。。。。。
   }


    if(RAIF==1)
     {
     RAIF=0;
   RA0=RA0;
    start_flag=1;

     }

  if(INTF==1)   
  {        
       INTF=0;
        。。。。用于接受红外线的外中断,解码
  }

void main
{
while(1)
{
.....用于控制调光等 50HZ

}

}


问题就是每次接收到遥控器的信号,按键时灯会灭一下,我想是外中断引起的,但是RAIF电平中断和计数中断没有影响啊,这是为什么呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
surf_131
1楼-- · 2020-02-09 13:30

(原文件名:883INT.JPG)

这个PIC16F887的中断源里面没有RAIF。想必是个更低档次的型号了?
RA0=RA0;
start_flag=1;
这两句,RA0若是按键中断源,则TRISA0就该是1,也就是输入态。前句因此不能有效果。
后一句,这个标志为1会引起什么来就要lz自己分析了。

可控硅调光的灯,该是白炽灯吧?能够感觉到灯灭,那中断的时间一般不止一两个正弦周期。可能是连续几个半波都没有触发信号。请先将人工按键的中断临时取消,用一个缓慢的周期来逐渐调亮调暗灯光,再用按键响应来控制一个led(PWM方式)。这两样都正常就说明软件没有问题,要查硬件了。

中断的排列次序跟找到中断源需要的时间有关,越排列前面,搜索时间越少。因此要把人工按键的中断向后排。
csm1987
2楼-- · 2020-02-09 13:59
 精彩回答 2  元偷偷看……
surf_131
3楼-- · 2020-02-09 17:12
首先,祝贺LZ选上了必须配转换头才可以DEBUG的型号。然后,估计LZ没有花银子买MCHP的绝对正版软件.........

我有过类似经历。编译器若是“LITE”版或者“X谐”版,代码略多一点就开始出现各种奇怪的现象。我的对策是,换平台。通常这个16F630要换到16F883。

代码就先不看了,请尽可能多进行注释。这主要是为了你自己。设想过3年,回来再看代码的感觉吧。
csm1987
4楼-- · 2020-02-09 22:38
回复【3楼】surf_131
-----------------------------------------------------------------------

晕 单片机不能换 单位指定的 因为有库存 是676的其实一个片子 容量1k好像再多些点都下不下了 日
surf_131
5楼-- · 2020-02-10 01:53
lz,若是单位的开发项目,没说的,让老板批钱买转换头,买正版编译器。
我曾经很小心地一个一个timer增加外设,然后测试630/616等。总会有意想不到的效果出现。只好放弃。哦,若直接用汇编写,我玩过616,还是很灵光的。

一周热门 更多>