Linglong之AVR程例3 流水燈
先這里簡(jiǎn)單的介紹下我的硬件,8個(gè)LED接到PA口上,公共端接地。
本文引用地址:http://cafeforensic.com/article/201611/319946.htm程序:
#include <avr/io.h>
#include
int main(void)
{
unsigned char i = 0;
DDRA = 0xff;
while(1)
{
}
}這里我們主要講講while(1)語(yǔ)句部分。
第一句:PORTA = 0x01<
第二句:if(++i>=8)i=0;
這里一個(gè)要重點(diǎn)注意的地方就是++i,而不是i++。這兩個(gè)的區(qū)別就是是先加再執(zhí)行,還是執(zhí)行了再加。這是有不同的,大家可以試著改一下,體會(huì)下這兩個(gè)的不一樣。
第三句就是延時(shí)了沒有什么好說的。
現(xiàn)在我們?cè)僦匦碌幕仡櫹逻@個(gè)while(1)語(yǔ)句的一個(gè)執(zhí)行過程。首先0x01左移0位,將0x01賦給PA口,點(diǎn)亮第一個(gè)LED。再對(duì)i進(jìn)行自加0+1=1,1〈 8則不對(duì)其進(jìn)行清0操作,最后是延時(shí)一會(huì)。
第二次執(zhí)行PORTA=0x01<
如此循環(huán)下去,當(dāng)循環(huán)8次后i被清0,再?gòu)牡谝粋€(gè)LED亮起。
評(píng)論