51單片機(jī)、AVR單片機(jī)和PIC單片機(jī)IO口的操作
三.PIC單片機(jī)IO口的操作
PIC單片機(jī)IO口的結(jié)構(gòu)也比較復(fù)雜,每個(gè)IO由兩個(gè)寄存器組成:IO口數(shù)據(jù)寄存器PORTx、和IO口方向寄存器TRISx。操作起來比AVR單片機(jī)簡(jiǎn)單一些,同樣需要設(shè)置IO的方向,可以進(jìn)行總線操作也可以進(jìn)行位操作。下例的運(yùn)行壞境為MPLAB IDE軟件,器件為PIC16F877。
#i nclude
__CONFIG(0x3B32);
int main(void)
{
unsigned char pv;
//總線操作輸出數(shù)據(jù),以B口為例:
TRISB=0x00;//先設(shè)置B口的方向?yàn)檩敵龇绞?相應(yīng)位設(shè)0為輸出,設(shè)1為輸入)
PORTB=0xaa;//賦值,B口輸出數(shù)據(jù)0xaa
//總線操作讀取數(shù)據(jù),以B口為例:
TRISB=0xff;//先設(shè)置B口的方向?yàn)檩斎敕绞?相應(yīng)位設(shè)0為輸出,設(shè)1為輸入)
pv=PORTB;//讀取B口的數(shù)據(jù)放到pv變量
//位操作,以B口的第0位為例:
TRISB=0xfe;//先設(shè)置B口的第0位(RB0)的方向?yàn)檩敵龇绞?相應(yīng)位設(shè)0為輸出,設(shè)1為輸入)
RB0=1;//B口的第0位輸出高電平
RB0=0;//B口的第0位輸出低電平
return 0;
}
經(jīng)過比較這三種單片機(jī)IO口的操作,我們知道,51單片機(jī)IO口結(jié)構(gòu)簡(jiǎn)單,操作簡(jiǎn)單,但沒有高電平大電流驅(qū)動(dòng)能力;AVR和PIC單片機(jī)IO 口結(jié)構(gòu)復(fù)雜,操作麻煩,但具備高電平大電流驅(qū)動(dòng)能力。換句話說,單片機(jī)的IO口的功能越強(qiáng)大結(jié)構(gòu)越復(fù)雜操作越繁瑣。
51單片機(jī)相關(guān)文章:51單片機(jī)教程
評(píng)論