新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Linglong之AVR程例2 閃爍的LED

Linglong之AVR程例2 閃爍的LED

作者: 時間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
因為,早期程序都比較簡單,所以更新的比較快呀。

這里我們讓LED閃爍起來。就是中間有延時,點亮LED,延時一會,滅了LED再延時一會。
這個過程循環(huán)起來了,就是我們要的結(jié)果。

看程序:
#include <avr/io.h> //io端口寄存器配置文件,必須包含
#include //系統(tǒng)自帶的延時函數(shù)很好用。

int main(void) //GCC中main文件必須為返回整形值的函數(shù),沒有參數(shù)
{
DDRA = 0xff;
while(1)
{
PORTA = 0x01;
_delay_ms(1000); //延時一會
PORTA = 0;
_delay_ms(1000);
}
}

還有給大家說一個我寫這個程序時,犯過一個錯誤。
看下面的程序:
#include//io端口寄存器配置文件,必須包含


intmain(void)//GCC中main文件必須為返回整形值的函數(shù),沒有參數(shù)
{
inti=0,j=0;
DDRB=0xff;
while(1)
{
PORTB=0xf0;
for(i=0;i<16000;i++) //這兩行是一個延時程序
for(j=0;j<10000;j++);
PORTB=0x0f;
for(i=0;i<16000;i++) //這兩行是一個延時程序
for(j=0;j<10000;j++);
}
}

這里我們不管他的端口問題。我們只看程序。
按我們正常的寫51的思維是沒有錯的,如果你用ICC,CVAVR都軟件編譯也不會有錯,但是如果用GCC就有問題。
因為GCC會幫我們優(yōu)化程序。大家要注意這點就好了。。


關(guān)鍵詞: AVR程例閃爍LE

評論


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

關(guān)閉