【发布时间】:2013-10-08 23:51:34
【问题描述】:
我今天一直在研究这个代码课程,并向您保证我已经学习了很多次。出于某种原因,每当我设置断点来确定“channelsel”的值时,我得到的都是“0”。我从来没有得到 1、2、3 或 4(我的 MAXCHANNELS 是 5)。
我正在使用:P18F45K22 微控制器和 mplab c18。
请看下面的代码,提前谢谢
int channelsel = 0;
for (channelsel = 0; channelsel < MAXCHANNELS; channelsel++)
{
switch(channelsel)
{
case 0:
SetChanADC(ADC_CH0);
break;
case 1:
SetChanADC(ADC_CH1);
break;
case 2:
SetChanADC(ADC_CH2);
break;
case 3:
SetChanADC(ADC_CH3);
break;
case 4:
SetChanADC(ADC_CH4);
break;
default:
SetChanADC(ADC_CH0);
break;
}
ConvertADC();
while(BusyADC() == TRUE) Delay1TCY();
sampledValue = ReadADC();
setCurrentTemperatureForChannel(channelsel, sampledValue);
sprintf (buf, "current Temp of channel %i is %x \n\r", channelsel, sampledValue);
puts1USART(buf);
Delay10KTCYx(10);
}
【问题讨论】:
-
在我已包含在此源文件中的头文件中
-
这是我的头文件中的语句#define MAXCHANNELS 5
-
USART 线是否正确连接?在我看来,
puts1USART永远卡住了。 -
我确定串口中的线是正确的,但是你建议我怎么做?
-
根据您的调试器,尝试逐行检查您的程序。尝试删除可疑行(毕竟这是一个简短的程序,所以这仍然是可行的)。将您的
channelsel初始化为不同于0的内容(这样您就可以区分stuck-in-loop和stuck-before-loop)
标签: c for-loop microcontroller mplab