1、 DIP40雙列直插;
2、 P0,P1,P2,P3四個8位準(zhǔn)雙向I/O引腳;(作為I/O輸入時,要先輸出高電平)
3、 電源VCC(PIN40)和地線GND(PIN20);
4、 高電平復(fù)位RESET(PIN9);(10uF電容接VCC與RESET,即可實現(xiàn)上電復(fù)位)
5、 內(nèi)置振蕩電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍)
6、 措施設(shè)置EA(PIN31)接高電平VCC;(運行單片機內(nèi)部ROM中的措施)
7、 P3支持第二成果:RXD、TXD、INT0、INT1、T0、T1
單片機內(nèi)部I/O部件:(所為進修單片機,實際上就是編程節(jié)制以下I/O部件,完成指定任務(wù))
1、 四個8位通用I/O端口,對應(yīng)引腳P0、P1、P2和P3;
2、 兩個16位按時計數(shù)器;(TMOD,TCON,TL0,TH0,TL1,TH1)
3、 一個串行通信接口;(SCON,SBUF)
4、 一其間斷節(jié)制器;(IE,IP)
針對AT89C52單片機,頭文件AT89x52.h給出了SFR非凡成果寄存器所有端口的界說。教科書的160頁給出了針對MCS51系列單片機的C語言擴展變量范例。
單片機C語言編程基本
1、 十六進制暗示字節(jié)0x5a:二進制為01011010B;0x6E為01101110。
2、 假如將一個16位二進數(shù)賦給一個8位的字節(jié)變量,則自動截斷為低8位,而丟掉高8位。
3、 ++var暗示對變量var先增一;var—暗示對變量后減一。
4、 x |= 0x0f;暗示為 x = x | 0x0f;
5、 TMOD = ( TMOD & 0xf0 ) | 0x05;暗示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。
6、 While( 1 ); 暗示無限執(zhí)行該語句,即死輪回。語句后的分號暗示空輪回體,也就是{;}
在某引腳輸出高電平的編程要領(lǐng):(好比P1.3(PIN4)引腳)
#include //該頭文檔中有單片機內(nèi)部資源的標(biāo)記化界說,個中包括P1.3
void main( void ) //void 暗示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位進口
{
P1_3 = 1; //給P1_3賦值1,引腳P1.3就能輸出高電平VCC
While( 1 ); //死輪回,相當(dāng) LOOP: goto LOOP;
}
留意:P0的每個引腳要輸出高電平時,必需外接上拉電阻(如4K7)至VCC電源。
在某引腳輸出低電平的編程要領(lǐng):(好比P2.7引腳)
#include //該頭文檔中有單片機內(nèi)部資源的標(biāo)記化界說,個中包括P2.7
void main( void ) //void 暗示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位進口
{
P2_7 = 0; //給P2_7賦值0,引腳P2.7就能輸出低電平GND
While( 1 ); //死輪回,相當(dāng) LOOP: goto LOOP;
}
在某引腳輸出方波編程要領(lǐng):(好比P3.1引腳)
#include //該頭文檔中有單片機內(nèi)部資源的標(biāo)記化界說,個中包括P3.1
void main( void ) //void 暗示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位進口
{
While( 1 ) //非零暗示真,假如為真則執(zhí)行下面輪回體的語句
{
P3_1 = 1; //給P3_1賦值1,引腳P3.1就能輸出高電平VCC
P3_1 = 0; //給P3_1賦值0,引腳P3.1就能輸出低電平GND
} //由于一直為真,所以不絕輸出高、低、高、低……,從而形成方波
}
將某引腳的輸入電平取反后,從另一個引腳輸出:( 好比 P0.4 = NOT( P1.1) )
#include //該頭文檔中有單片機內(nèi)部資源的標(biāo)記化界說,個中包括P0.4和P1.1
void main( void ) //void 暗示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位進口
{
P1_1 = 1; //初始化。P1.1作為輸入,必需輸出高電平
While( 1 ) //非零暗示真,假如為真則執(zhí)行下面輪回體的語句
{
if( P1_1 == 1 ) //讀取P1.1,就是認(rèn)為P1.1為輸入,假如P1.1輸入高電平VCC
{ P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND
else //不然P1.1輸入為低電平GND
//{ P0_4 = 0; } //給P0_4賦值0,引腳P0.4就能輸出低電平GND
{ P0_4 = 1; } //給P0_4賦值1,引腳P0.4就能輸出高電平VCC
} //由于一直為真,所以不絕按照P1.1的輸入環(huán)境,改變P0.4的輸出電平
}
將某端口8個引腳輸入電平,低四位取反后,從另一個端口8個引腳輸出:( 好比 P2 = NOT( P3 ) )
#include //該頭文檔中有單片機內(nèi)部資源的標(biāo)記化界說,個中包括P2和P3
void main( void ) //void 暗示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位進口
{
P3 = 0xff; //初始化。P3作為輸入,必需輸出高電平,同時給P3口的8個引腳輸出高電平
While( 1 ) //非零暗示真,假如為真則執(zhí)行下面輪回體的語句
{ //取反的要領(lǐng)是異或1,而不取反的要領(lǐng)例是異或0
P2 = P3^0x0f //讀取P3,就是認(rèn)為P3為輸入,低四位異可能1,即取反,然后輸出
} //由于一直為真,所以不絕將P3取反輸出到P2
}
留意:一個字節(jié)的8位D7、D6至D0,別離輸出到P3.7、P3.6至P3.0,好比P3=0x0f,則P3.7、P3.6、P3.5、P3.4四個引腳都輸出低電平,而P3.3、P3.2、P3.1、P3.0四個引腳都輸出高電平。同樣,輸入一個端口P2,
680UF 6.3V,等于將P2.7、P2.6至P2.0,讀入到一個字節(jié)的8位D7、D6至D0。
1、 接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF
2、 接晶體:X1(PIN18)、X2(PIN19)。留意標(biāo)出晶體頻率(選用12MHz),尚有幫助電容30pF
3、 接復(fù)位:RES(PIN9)。接上電復(fù)位電路,以及手動復(fù)位電路,闡明復(fù)位事情道理
4、 接設(shè)置:EA(PIN31)。說明原因。
Copyright 2020© 東莞市立邁電子有限公司 版權(quán)所有 粵ICP備2020136922號-1
24小時服務(wù)電話:13336555866 郵箱:jimmy@limak.cn
公司地址:廣東省東莞市塘廈鎮(zhèn)東興路162號振興大廈 網(wǎng)站地圖