MPLAB C18编译器变量值无法改变,求指导!
使用MPLAB C18编译器编写PIC的C程序,就是简单写了个LED闪烁函数,用for循环做的简单延时, 结果程序就一直循环在for循环,在线调试发现变量一直不变,所以程序一直在for里面循环,请坛友指导下,谢谢,下面附上我的代码。void main(void)
{
TRISB = 0x00; //###Configure RB0-7 as output
LATB = 0x04;
//PORTB = 0x00;
PORTB = 0x04;
//### Your Code Here ### //###Enable external interrupt
//### Your Code Here ### //###Clear external interrupt flag
//### Your Code Here ### //###Enable external interrupt for falling edge
//### Your Code Here ### //###Enable High priority interrupt
while(1)
{
PORTB = 0x00;
delay();
PORTB = 0x04;
delay();
}
}
void delay(void)/*延时 1mS*/
{
unsigned char i,j;
for(i=0;i<100;i++)
{
;
//for(j=0;j<142;j++);
}
}
在线调试发现复位时,变量i的值信息是“out of scope”,运行后变成“restrict memory”,难道是内存不够了?郁闷啊,调试了一晚上了,求指导啊。 你把unsigned char i,j;定义成全局变量试试 yanzhiwei 发表于 2017-2-17 00:04
你把unsigned char i,j;定义成全局变量试试
已经解决了,就是要定义成全局变量,这个编译器很怪啊。还有个现象想请教一下,PORTA做输出IO输出高低电平怎么操作,我直接给PORTA赋值(像PORTA=0x01或PORTAbits.RA0=1)却只能在锁存器(LATA)上看到值端口却不能输出,而PORTB用以上任意一种都可以输出高低电平,请问是我哪里设置的不对么,端口方向什么的都配置了。 PORTA引脚复用数字口和模拟口的,如果你要设置成数字模式是要设置ANCONx寄存器的,具体操作看看datasheet里面PORTA端口的说明 yanzhiwei 发表于 2017-2-20 12:43
PORTA引脚复用数字口和模拟口的,如果你要设置成数字模式是要设置ANCONx寄存器的,具体操作看看datasheet里 ...
非常感谢您的指点,我现在又遇到一个问题,片上EEPROM写不进去,表现出的现象是:编译器在线调试观察EEPROM内部全是FF,我的擦写驱动是按照datasheet上的汇编写的c语言格式,网上说的BOD也是打开的,找到了几个相近片子的例程几乎一致,但就是写不进去,还请您再指导一下,以下附上我的代码和相关截图。
void data_write(unsigned char addr,unsigned char value)
{
EEADR = addr; //写目标地址,范围0-ff
EEDATA = value; //写目标值
EECON1bits.EEPGD = 0; //指向EEPROM接口
EECON1bits.CFGS = 0; //指向EEPROM/FLASH 区分config
INTCONbits.GIE = 0; //关闭全局中断
EECON1bits.WREN = 1; //使能写功能
EECON2 = 0x55; //填入写序列 55h
EECON2 = 0xAA; //填入写序列 aah
EECON1bits.WR = 1; //使能写控制位
while(EECON1bits.WR == 1); //等待写中断完成
INTCONbits.GIE = 1; //使能全局中断
PIR2bits.EEIF = 0; //清除写中断标志位
EECON1bits.WREN = 0; //关闭写功能
}
int data_read(unsigned char addr)
{
EEADR = addr; //读目标地址,范围0-ff
EECON1bits.EEPGD = 0; //指向EEPROM接口
EECON1bits.RD = 1; //使能读功能
return EEDATA;
}
时钟位配置
编译环境是MPLAB C18 调试器 PICKit3.5+
EEPROM地址手册上说范围是0x00-0xFF,我读写使用的地址是0x22,0x33,也没看到有什么位置说偏移地址啊,地址应该没错吧
地址组成关系如下
期待您的回复,不胜感激!
页:
[1]