AVR單片機(jī)IO端口操作方法
舉例一:將PB0定義為輸出,且輸出為高電平
DDRB=BIT(0);//定義PB0為輸出
PORTB|=BIT(0);// PB0輸出高電平
舉例二:將PB0、PB1定義為輸出,PB0、PB1均為高電平
DDRB|=BIT(0)|BIT(1);//定義PB0、PB1為輸出
PORTB|=BIT(0)|BIT(1);// PB0、PB1輸出高電平
舉例三:將PB0數(shù)據(jù)寄存器的數(shù)值翻轉(zhuǎn),即如果是1時(shí)變成0,如果是0時(shí)變成1
PORTB^=BIT(0);//翻轉(zhuǎn)PB0口
舉例四:將PB0、PB1數(shù)據(jù)寄存器的數(shù)值翻轉(zhuǎn),即如果是1時(shí)變成0,如果是0時(shí)變成1
PORTB^=BIT(0)|BIT(1);//翻轉(zhuǎn)PB0、PB1口
舉例五:將PB2、PB3定義為輸入,不帶上拉電阻
DDRB&=~(BIT(2)|BIT(3));//定義PB2、PB3為輸入
PORTB&=~(BIT(2)|BIT(3));//將PORT置0,沒有上拉電阻
舉例六:將PB2、PB3定義為輸入,帶上拉電阻。即沒有引用這些引腳時(shí),缺省值為高電平
SFIOR&=~BIT(PUD);// SFIOR寄存器的上拉電阻控制位PUD置0,在整個(gè)代碼中,這句話可以不出現(xiàn),或僅出現(xiàn)一次即可。因?yàn)樗且粋€(gè)控制全部上拉電阻的控制位。
DDRB&=~(BIT(2)|BIT(3));//定義PB2、PB3為輸入
PORTB|=BIT(2)|BIT(3);//將PORT置1,滿足上拉電阻的另一個(gè)條件
舉例七:DDRB=BIT(0)|BIT(1)與DDRB|=BIT(0)|BIT(1)的區(qū)別
假定在執(zhí)行上面兩句指令前,DDRB的狀態(tài)為:1000 0000
如果執(zhí)行DDRB="BIT"(0)|BIT(1),DDRB的狀態(tài)變?yōu)椋?000 0011
如果執(zhí)行DDRD|=BIT(0)|BIT(1),,DDRB的狀態(tài)變?yōu)椋?000 0011
那前一句會(huì)先清空以前的所有狀態(tài),后一句保留前面的狀態(tài)。
在實(shí)際應(yīng)用中,后一句更常用。
舉例八:將第三位置1,除了用BIT(3),還有其它的表達(dá)方法嗎?
DDRB|=BIT(3);
DDRB|=1<<3;
DDRB|=0x08;
DDRB|=0b00001000;