1.4 端口訪問
器件數(shù)字I/O引腳可與外設(shè)I/O引腳復(fù)用。為確保當前僅使用數(shù)字I/O,需禁止其他外
設(shè)。為此,可使用代表外設(shè)寄存器及其位的預(yù)定義C 變量。這些變量列于編譯器
include目錄下的器件特定頭文件中。關(guān)于哪些外設(shè)共用哪些引腳的信息,請參見具
體器件的數(shù)據(jù)手冊。
對于本節(jié)中的示例,端口D和端口B引腳與默認禁止的外設(shè)復(fù)用。惟一的問題在于這些
引腳默認設(shè)置為模擬I/O,因此需要將它們設(shè)置為數(shù)字I/O。對于端口D:
ANSELD = 0x0; // set to digital I/O (not analog)
器件引腳連接至器件的數(shù)字I/O端口(PORT)或鎖存器(LAT)寄存器。本示例中使用
LATD和LATB。宏LEDS_ON_OFF賦值給兩個鎖存器。對于端口D:
LATD = LEDS_ON_OFF; // write to port latch - RD[0:3] = LED[0:3]
此外,還有一個寄存器用于指定引腳的方向是輸入還是輸出,它稱為TRIS寄存器。本
節(jié)的示例中使用TRISD和TRISB。將位設(shè)置為0可將引腳設(shè)為輸出,將位設(shè)置為1可將
引腳設(shè)為輸入。對于端口D:
TRISD = 0x0; // set all port bits to be output