新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR 定時(shí)記數(shù)器0 普通模式的簡(jiǎn)單應(yīng)用

AVR 定時(shí)記數(shù)器0 普通模式的簡(jiǎn)單應(yīng)用

作者: 時(shí)間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
#include <avr/io.h>
#include
#include interrupt.h>

#define ling 0x80 //這里是設(shè)制從最高位一個(gè)一個(gè)的點(diǎn)亮
volatile unsigned char count,i = 0,j = 0; //設(shè)制兩個(gè)變量


void Timer0_Init(void) //定時(shí)器0的初始化
{
TCNT0 = 0x3d; //給計(jì)數(shù)器賦初值
TCCR0 = 0x05; //CLK/1024分頻
TIMSK = 0x01; //始能定時(shí)器0的溢出中斷
sei(); //置位總中斷
}

int main(void)
{
DDRB = 0xff; //PB口設(shè)制為輸出
PORTB = 0xff; //PB口初始化為FF
Timer0_Init(); //調(diào)用定時(shí)器0的初始化

while(1);


}

ISR(TIMER0_OVF_vect) //定時(shí)器溢出中斷函數(shù)
{
//unsigned char i;
TCNT0 = 0x3d; //重裝載計(jì)數(shù)器的值a
i++; //標(biāo)志位加1
if(i == 20)
{

//PORTB = 0xff;
i = 0;
count++;
if(count > 7) //點(diǎn)亮8個(gè)LED的循環(huán)
{
count = 0;
j =!j;
}

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

}


評(píng)論


技術(shù)專區(qū)

關(guān)閉