AVR單片機(jī)的I/O寄存器和端口操作
其中,宏“_BV(bit)”的定義為:
#define _BV(bit) (1<<(bit))
例子:
DDRD = _BV(PD0) | _BV(PD1)
//在相應(yīng)器件的ioxxxxxxx.h中PD0定義為0,PD1定義為1
所以,DDRD = _BV(PD0) | _BV(PD1) 等價(jià)于DDRD=0x03.
2.ATmega128每個(gè)I/O端口都有3個(gè)寄存器來(lái)控制,分別是:
方向寄存器DDRx、數(shù)據(jù)寄存器PORTx和輸入引腳寄存器PINx。
其中,方向寄存器DDRx和數(shù)據(jù)寄存器PORTx是可讀可寫(xiě)寄存器,而PINx為只讀寄存器。
例子:
在進(jìn)行寫(xiě)操作的時(shí)候,方向寄存器DDRB用于指定PB口是作為輸入口還是輸出口用;
在進(jìn)行讀操作的時(shí)候,從方向寄存器DDRB讀出來(lái)的是端口的方向設(shè)定值。
DDRA = 0xFF;//初始化端口A為輸出模式。
#define LED0 0
#define LED1 1
DDRC = 0xFF;
PORTC = 0xFF;
...
PORTC &= ~ _BV (LED0);// 輸出低電平
PORTC | = _BV (LED1);//輸出高電平
...
PORTC &= ~ _BV (LED1);// 輸出低電平
PORTC | = _BV (LED0);//輸出高電平
本文引用地址:http://www.ex-cimer.com/article/201611/317293.htmSPDR :SPI數(shù)據(jù)寄存器
SPSR:SPI狀態(tài)寄存器
SPCR :SPI控制寄存器
評(píng)論