熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Linglong之AVR程例3 流水燈

Linglong之AVR程例3 流水燈

作者: 時間:2016-11-22 來源:網絡 收藏
下面我們寫流水燈的程序。LED程序的書寫是我們學習單片機很基礎的,但我是我覺的還是很重要的。能寫好LED程序對我們理解AVR IO口的操作很有好處呀。

先這里簡單的介紹下我的硬件,8個LED接到PA口上,公共端接地。

本文引用地址:http://www.bjwjmy.cn/article/201611/319946.htm

程序:

#include <avr/io.h> //調用AVR IO口頭文件

#include //調用GCC本身的調時程序。

int main(void) //主程序

{

unsigned char i = 0; //定義循環(huán)變量

DDRA = 0xff; //定義PA口為輸出態(tài)

while(1) //主程序循環(huán)語句

{

PORTA=0x01<//循環(huán)點亮IO口的燈

if(++i>=8)i=0; //對循環(huán)變量的控制,讓其循環(huán)8次

_delay_ms(1000); //延時程序

}

}
這里我們主要講講while(1)語句部分。

第一句:PORTA = 0x01<

在主函數中我們定義了i變量,我們并對其賦值為0.(這里其實賦不賦0,效果都是一樣的,但是我還是希望大家賦值,這樣比較規(guī)范)

這一句第一次執(zhí)行的意思就是0x01左移0次,并將左移后的結果賦結PA口。0x01就是二進值的0000 0001,左移0位還是0000 0001.那么這樣就是第一個LED點亮了。

第二句:if(++i>=8)i=0;

這里用的是一個if語句,這句話的意思就是如果i的值大于等于8了,那么將其清0;如果沒有i就是其本身的值。

這里一個要重點注意的地方就是++i,而不是i++。這兩個的區(qū)別就是是先加再執(zhí)行,還是執(zhí)行了再加。這是有不同的,大家可以試著改一下,體會下這兩個的不一樣。

第三句就是延時了沒有什么好說的。

現在我們再重新的回顧下這個while(1)語句的一個執(zhí)行過程。首先0x01左移0位,將0x01賦給PA口,點亮第一個LED。再對i進行自加0+1=1,1〈 8則不對其進行清0操作,最后是延時一會。

第二次執(zhí)行PORTA=0x01<

如此循環(huán)下去,當循環(huán)8次后i被清0,再從第一個LED亮起。

這樣流水燈的效果就出來了。



關鍵詞: AVR程例流水

評論


技術專區(qū)

關閉