×
嵌入式 > 嵌入式开发 > 详情

AVR 定时记数器0 普通模式的简单应用

发布时间:2020-08-18 发布时间:
|
#include <avr/io.h>
#include
#include interrupt.h>

#define ling 0x80 //这里是设制从最高位一个一个的点亮
volatile unsigned char count,i = 0,j = 0; //设制两个变量


void Timer0_Init(void) //定时器0的初始化
{
TCNT0 = 0x3d; //给计数器赋初值
TCCR0 = 0x05; //CLK/1024分频
TIMSK = 0x01; //始能定时器0的溢出中断
sei(); //置位总中断
}

int main(void)
{
DDRB = 0xff; //PB口设制为输出
PORTB = 0xff; //PB口初始化为FF
Timer0_Init(); //调用定时器0的初始化

while(1);


}

ISR(TIMER0_OVF_vect) //定时器溢出中断函数
{
//unsigned char i;
TCNT0 = 0x3d; //重装载计数器的值a
i++; //标志位加1
if(i == 20)
{

//PORTB = 0xff;
i = 0;
count++;
if(count > 7) //点亮8个LED的循环
{
count = 0;
j =!j;
}

}
if(j == 0)
PORTB &= ~(ling >> count);
else PORTB |= (1 << count);

}


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Recogni:将高端AI芯片推向自动驾驶边缘