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