用定时器0控制PB0的电平变化。
定时器0和2(均为八位的定时计数器)有四种工作模式,此例是工作在普通模式。
在此模式下,计数器不断的累加,当计数到最大值0xff后返回到0x00重新开始,在TCNT0为0 的同时,T/C溢出标志TOV0置位。
//#include<_iom164to644pv.h>
//使用轮循方式,当TIFR溢出时
//TIFR中断标志寄存器
#include <_iom88to328v.h>
#include <AVRdef.h>//此库中包含BIT(unsigned char)
#define uchar unsigned char
uchar k=0;
void main()
{
//设置数码管输出高电平
DDRB=0XFF;
PORTB=0XFE;
TCNT0=0X00;//设定定时计数器的初值为0
TCCR0B=0X05;//使用1024分频(共有7种时钟)
while(1)
{
while(!(TIFR0&0X01));//循环检测TIFR中的溢出标志是否有效
if(k==0)
{
PORTB=0xfe;
k=1;
}
else
{
PORTB=0xff;
k=0;
}
TIFR0|=0X01; //写1到TIFR的TOV0位清除溢出标志为TOV0
}
}
完整资料打包(含仿真):