本帖最后由 ruguo2 于 2010-4-1 20:35 编辑
我是个刚学习AVR的新人,想用定时器0来控制灯的亮灭,定时1s时间到后灯亮,但是仿真的时候PB0口一直都是输出低电平,没有输出高电平,没有达到预期的目的,百思不得其解,望各位大虾赐教,下面是我的程序,感激不尽。(我用的ICC AVR)
#include <iom8v.h>
#include "macros.h"
volatile unsigned char counter; //全局变量counter
void main(void)
{
MCUCR=0x00;
SREG=0x80; //全局中断使能
TCNT0 =12; //定时250ms,计数四次就1s
TCCR0=0x05; //1M,1024分频
TIMSK=0x01; //定时器0的溢出中断使能
DDRB=0xFF; //设置B口输出
PORTB=0x00; //输出低电平
counter=0; //计数值置零
while(1);
}
#pragma interruput_handler int_timer0:10 //计数器0溢出的向量号为10
void int_timer0(void)
{
TCNT0 =12;//计数器重新赋值
counter++;//不为4就加1
if(counter==4)
{
PORTB=0x01;//定时1s时间到,输出高电平
counter=0;//重新置零
} |