中级会员
- 积分
- 340
- 威望
- 246
- 贡献
- 78
- 兑换币
- 0
- 注册时间
- 2011-7-17
- 在线时间
- 8 小时
|
今天我调程序,发现我用AVR128单片机定时器0次数很多之后,单片机就会乱走了,或者是定时走的那些程序都没有出来的,这是什么原因?下面是我的一些定时0的的程序:
初始化:
#include<iom128v.h>
#include<macros.h>
#pragma interrupt_handler timer0:17
static uint count0;
void timer0_init(void)
{
TCCR0=0X07; //1024分频
TCNT0=0XC0; //每16毫秒中断一次
SREG|=BIT(7); //开启总中断
TIMSK|=BIT(0); //开启定时器0溢出中断
count0=0;
}
void timer0()//////一个count0++用时16ms
{
count0++;
}
void main()
{
DDRG=0X1B;
DDRE=0X30;
DDRC=0X00;//灰度前检测卡
DDRA=0X00;//灰度后检测卡
DDRE|=0X00;
DDRB=0X20;
PORTB=0X20;
DDRF=0X00;
DDRD=0XFF;
PORTD=0XFF;
timer0_init();
while(count0<8)qi_forwarn2(390,380);
TIMSK &= 0xfe;
while((PINF&0x20)==0x20)qi_forwarn(293,284);//qi_forwarn是一个向前走的巡线子程序
PORTG=0X00;
}
其中我的这个;
timer0_init();
while(count0<8)qi_forwarn2(390,380);
TIMSK &= 0xfe;
用的很频繁,会不会是这个问题呢?如果是这样如果多其它的定时器,而不是仅仅用定时器0的话,会不会再次出现问题?
请教各位高手!!!给我解答!!!!! |
|