volatile MyLong32T counter = 0;
SIGNAL (SIG_OVERFLOW0)
{
counter = counter + 1;
PollApplication(counter);//输出counter的数值
TCNT0 = 0; /* reload timer with initial value */
}
int main(int ac, char *av[])
{
TCCR0B |= 0x01; //start timer 1分频的
TCNT0 = 0; //set count
TIMSK0 = (1 << TOIE0); //溢出中断使能
sei();
int i;
for(i=0; i<1000; i++)
{
_delay_ms(3);
}
}
我这个counter的输出为什么会每次增加256,而不是增加1?
TCNT0超过0xFF就会中断,然后就会转到SIGNAL 函数吗?
每中断一次就会调用一次SIGNAL 函数吗?还是SIGNAL 函数一直在运行?
SIGNAL 是中断服务程序么?中断服务程序地址设置了么?
SIGNAL (SIG_OVERFLOW0) 这个就是一个中断服务程序的 我确定
如果是中断服务程序,每中断一次就会调用一次SIGNAL 函数
在主函数 应该一直等待中断 while(1); 如果有中断 就会进入中断服务程序后运行
那我的counter为什么会256递增呢? 而不是1递增?
PollApplication????什么函数?能把代码贴出来不?
void PollApplication(MyLong32T data)
{
int i;
MyByte8T buf[4];
for(i=0; i<4; i++)
{
buf = ((char *)(&data));
}
Myputchars(buf,4);
}
一个输出char型数组的函数,这个是对的 ,已经验证过了 。
单步调试,看看到 counter = counter + 1; 这 ,counter 是多少
buf = ((char *)(&data)); ???这句话对吗?
就是我用的软件他调试不了 才来问的啊 悲剧啊。。。。
PollApplication 感觉这个函数乖乖的,你这样测序一下,就单独调用这个函数 入口参数给1 看输出出来的对不?