关于PIC程序问题,C语言

2020-02-08 12:28发布

直接贴测试程序,用的是PIC16F886

#include <pic.h>
//CPU为PIC16F886

__CONFIG (0x0FE1);
__CONFIG (0xfeff);

unsigned int temp;
unsigned int i;

void InitPort()
{
    TRISA  = 0xff;//端口配置为输入
    ANSEL  = 0x00;//数字IO口
       
    TRISB  = 0xc0;//RB0~RB5为输出,RB6:PGC,RB7:PGD        
    ANSELH = 0x00;
    IOCB   = 0x00;//禁止电平变化中断
    PORTB  = 0x32; //RB0=0,RB1=1,RB2=0,RB4=1,RB5=1
       
    TRISC  = 0x80;//RX为输入,其他为输出
    PORTC  = 0x00;
}


void main()
{        
    InitPort();
       
    for (i=0; i<10; i++)
    {
        temp = temp+1;
    }

    while (1){;}
}

问题:进入for循环后,i不是按1加,而是0x000c;如果i是在main函数里设置为unsigned char型,则是按0x18加!
请问这是为什么?实在找不到原因,以前用其他的CPU都没遇到这问题,有点懵...
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
guan
1楼-- · 2020-02-10 00:38
ddddddddddddddddddddddddddddddd
JayGong
2楼-- · 2020-02-10 00:45
 精彩回答 2  元偷偷看……
JayGong
3楼-- · 2020-02-10 04:17
你的代码没贴全,估计是全局变量i在别的地方被改变了值!
makerpace
4楼-- · 2020-02-10 04:29
lz,你代码在我的mplab里面软仿没问题。

我的配置:

MPLAB IDE V8.66
PICC 9.81

你的PICC是什么版本?
kobe008hs
5楼-- · 2020-02-10 07:35
回复【16楼】JayGong
你的代码没贴全,估计是全局变量i在别的地方被改变了值!
-----------------------------------------------------------------------

这只是简单的测试代码,贴全了,肯定没在其他地方更改

只是在IDC3仿真的时候会这样,下到板子里是没问题的

最后测试了很多,感觉是ICD3以及PIC存储造成这情况

PIC不是有那个啥快速操作存储区吗?我用的是PIC16F886,快速操作存储区是70H~7FH

每次i的操作都不是自己地址的内容,都是0x70里的数值,这样就造成了不是++,而是按0x70里面的数加
kobe008hs
6楼-- · 2020-02-10 11:35
回复【17楼】makerpace
-----------------------------------------------------------------------

MPLAB IDE V8.30(V8.50也用谷,效果一样)

PICC 9.65

PS:只是在IDC3仿真的时候会如此,下到板子里是没任何问题的

一周热门 更多>