在某引腳輸出方波編程方法:(比如P3.1引腳)
- #include <AT89x52.h> //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P3.1
- void main( void ) //void 表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
- {
- While( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句
- {
- P3_1 = 1; //給P3_1賦值1,引腳P3.1就能輸出高電平VCC
- P3_1 = 0; //給P3_1賦值0,引腳P3.1就能輸出低電平GND
- } //由于一直為真,所以不斷輸出高、低、高、低……,從而形成方波
- }
將某引腳的輸入電平取反后,從另一個(gè)引腳輸出:( 比如 P0.4 = NOT( P1.1) )
- #include <AT89x52.h> //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P0.4和P1.1
- void main( void ) //void 表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
- {
- P1_1 = 1; //初始化。P1.1作為輸入,必須輸出高電平
- While( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句
- {
- 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
- } //由于一直為真,所以不斷根據(jù)P1.1的輸入情況,改變P0.4的輸出電平
- }
將某端口8個(gè)引腳輸入電平,低四位取反后,從另一個(gè)端口8個(gè)引腳輸出:( 比如 P2 = NOT( P3 ) )
- #include <AT89x52.h> //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含P2和P3
- void main( void ) //void 表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
- {
- P3 = 0xff; //初始化。P3作為輸入,必須輸出高電平,同時(shí)給P3口的8個(gè)引腳輸出高電平
- While( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句
- { //取反的方法是異或1,而不取反的方法則是異或0
- P2 = P3^0x0f //讀取P3,就是認(rèn)為P3為輸入,低四位異或者1,即取反,然后輸出
- } //由于一直為真,所以不斷將P3取反輸出到P2
- }
注意:一個(gè)字節(jié)的8位D7、D6至D0,分別輸出到P3.7、P3.6至P3.0,比如P3=0x0f,則P3.7、P3.6、P3.5、P3.4四個(gè)引腳都輸出低電平,而P3.3、P3.2、P3.1、P3.0四個(gè)引腳都輸出高電平。同樣,輸入一個(gè)端口P2,即是將P2.7、P2.6至P2.0,讀入到一個(gè)字節(jié)的8位D7、D6至D0。





