AVR單片機入門--MEGA端口操作
int main(void)
{
unsigned char i,j,k; //
PORTA=0xFF; //PA口設(shè)為輸出高電平,燈滅
DDRA=0xFF; //PA口設(shè)置為輸出
while(1)
{
i=1;
for (j=0;j8;j++) //循環(huán)8次,即PA0~~PA7輪流閃亮
{
PORTA=~i; //反相輸出,低電平有效,對應(yīng)的燈亮
for (k=0;k10;k++) _delay(100); //延時 100*10=1秒,可自行調(diào)節(jié) i=i1; //左移一位,I的值將向下面的列表那樣變化
// 0b00000001 PA0
// 0b00000010 PA1
// 0b00000100 PA2
// 0b00001000 PA3
// 0b00010000 PA4
// 0b00100000 PA5
// 0b01000000 PA6
// 0b10000000 PA7
}
}
}[Copy to clipboard]
其他IO口操作指令:
void main(void)
{
PORTA=0xff;
DDRA=0xff; //輸出 模式 ,IO口上拉電阻有效,1為輸出,0為輸入。
PORTA=0xf0; //等
以下三條指令只對操作符號右邊的數(shù)字位是一的位操作。
PORTA=~0x70; //清零 0x70為 01110000 ,即把*三位清零,其余數(shù)位不變。
PORTA|=0x77; //置一 0x77為 01110111 ,即把*210六位清零,其余數(shù)位不變。
PORTA^=0x70; //翻轉(zhuǎn) 0x70為 01110000,即*三位,如果是零變成1,是一變成0。
(P 0x80)==0x80; //按位與 判斷p的第七位是否是一,是則成立
}
關(guān)于1
ADIF是一個寄存器變量,可以堪稱數(shù)字4, 跟手冊中的定義,包含芯片頭文件的定義是一樣的。
(1
ADCSR=(1
ADCSR|=(1
ADCSR=~(1
while(ADCSR(1
while(1)
{
while(ADCSR(1
{
程序......
}
}
實踐出真知:只看這樣的說明是很枯燥的,從實踐中去學(xué)習(xí)會是更好的途徑,把這些代碼都寫到單片機里,一步一步調(diào)試運行,看看各個端口以及寄存器的效果,也鍛練程序調(diào)試能力,和樂而不為呢?
評論