[讨论] 请懂PIC的朋友帮我解答

zjxf95   2014-6-10 22:35 楼主
附件中是完整的项目包,MPLAB IDE的和MPLAB X IDE的都有,MPLAB X用的是XC8 FREE版的,还有PROTEUS的仿真图纸用的是PROTERS 8,不信的自己编译运行看看就知道,我是没办法理解。
void main()
{
   InitSystem();         
   while(1)                 
   {
     CLRWDT();

                if(gPowerRatio<10)
                {
                    gPowerRatio+=1;
                }
                else if(gPowerRatio>10)///////////下边代码正常程序是不可能进去的,但是现在无法理解,在RB5电平中断和PWM中断同时开的时候直接进去了,这两个中断只有屏蔽掉一个,这段代码就不会进去,也就是说gPowerRatio的值到10之后不会改变。
                {
                    gPowerRatio-=1;
                    LED3=~LED3;
                    delay()   ;
                }
               
   }
}

请DX为我解惑,我之前怀疑自己编译器是破解版,用PICC8.90的,之后用PICC8.93的,也一样;然后安装正版MPLAB X+XC8 FREE版在PROTEUS中仿真时都会进入这段代码。我不能理解,程序已经简单到极致,难道我哪个地方还有逻辑错误?


    PIC16F88.rar (2014-6-10 22:29 上传)

    220.17 KB, 下载次数: 6

回复评论 (1)

PIC16/18单片机是硬件堆栈。写程序是注意少嵌套。否则出现你上面的情况是正常的。
点赞  2014-6-12 18:50
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复