//-----------------------------------------------------------------
//说明:定时1秒轮循数码管的七段 定时器0查询方式
//time:2011-11-24 22:19
//********************************************************************/
#define F_CPU 4000000UL
#include
#include
#define INT8U unsigned char
#define INT16U unsigned int
INT8U i,j,temp;
void Timer_Init()
{
DDRC = 0Xff;
TCCR0 = 0X05; //预分频1024
TCNT0 = 256-F_CPU/1024.0*0.05; //0.05秒定时
}
//主函数
int main(void)
{
DDRC=0xff;
PORTC = 0X01; //初始使a段数码管亮
temp = PORTC;
Timer_Init();
while(1)
{
while(!(TIFR&_BV(TOV0))); //等待标志位置位
TIFR = _BV(TOV0); //软件对TOV0进行写1 清除标志位
TCNT0 = 256-F_CPU/1024.0*0.05; //重装定时器初值
j++;
if(j==20)
{
j=0;
i++;
if(i==7) i=0;
PORTC = temp<<i;
}
}
}
文章评论(0条评论)
登录后参与讨论