單片機(jī)C語(yǔ)言編程基礎(chǔ)
發(fā)布時(shí)間:2008/8/16 0:00:00 訪問(wèn)次數(shù):859
單片機(jī)的外部結(jié)構(gòu):
1、 dip40雙列直插;
2、 p0,p1,p2,p3四個(gè)8位準(zhǔn)雙向i/o引腳;(作為i/o輸入時(shí),要先輸出高電平)
3、 電源vcc(pin40)和地線gnd(pin20);
4、 高電平復(fù)位reset(pin9);(10uf電容接vcc與reset,即可實(shí)現(xiàn)上電復(fù)位)
5、 內(nèi)置振蕩電路,外部只要接晶體至x1(pin18)和x0(pin19);(頻率為主頻的12倍)
6、 程序配置ea(pin31)接高電平vcc;(運(yùn)行單片機(jī)內(nèi)部rom中的程序)
7、 p3支持第二功能:rxd、txd、int0、int1、t0、t1
單片機(jī)內(nèi)部i/o部件:(所為學(xué)習(xí)單片機(jī),實(shí)際上就是編程控制以下i/o部件,完成指定任務(wù))
1、 四個(gè)8位通用i/o端口,對(duì)應(yīng)引腳p0、p1、p2和p3;
2、 兩個(gè)16位定時(shí)計(jì)數(shù)器;(tmod,tcon,tl0,th0,tl1,th1)
3、 一個(gè)串行通信接口;(scon,sbuf)
4、 一個(gè)中斷控制器;(ie,ip)
針對(duì)at89c52單片機(jī),頭文件at89x52.h給出了sfr特殊功能寄存器所有端口的定義。教科書(shū)的160頁(yè)給出了針對(duì)mcs51系列單片機(jī)的c語(yǔ)言擴(kuò)展變量類(lèi)型。
單片機(jī)c語(yǔ)言編程基礎(chǔ)
1、 十六進(jìn)制表示字節(jié)0x5a:二進(jìn)制為01011010b;0x6e為01101110。
2、 如果將一個(gè)16位二進(jìn)數(shù)賦給一個(gè)8位的字節(jié)變量,則自動(dòng)截?cái)酁榈?位,而丟掉高8位。
3、 ++var表示對(duì)變量var先增一;var—表示對(duì)變量后減一。
4、 x |= 0x0f;表示為 x = x | 0x0f;
5、 tmod = ( tmod & 0xf0 ) | 0x05;表示給變量tmod的低四位賦值0x5,而不改變tmod的高四位。
6、 while( 1 ); 表示無(wú)限執(zhí)行該語(yǔ)句,即死循環(huán)。語(yǔ)句后的分號(hào)表示空循環(huán)體,也就是{;}
在某引腳輸出高電平的編程方法:(比如p1.3(pin4)引腳)
#include //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含p1.3
void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
{
p1_3 = 1; //給p1_3賦值1,引腳p1.3就能輸出高電平vcc
while( 1 ); //死循環(huán),相當(dāng) loop: goto loop;
}
注意:p0的每個(gè)引腳要輸出高電平時(shí),必須外接上拉電阻(如4k7)至vcc電源。
在某引腳輸出低電平的編程方法:(比如p2.7引腳)
#include //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含p2.7
void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
{
p2_7 = 0; //給p2_7賦值0,引腳p2.7就能輸出低電平gnd
while( 1 ); //死循環(huán),相當(dāng) loop: goto loop;
}
在某引腳輸出方波編程方法:(比如p3.1引腳)
#include //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含p3.1
void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
{
while( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語(yǔ)句
{
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 //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含p0.4和p1.1
void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
{
p1_1 = 1; //初始化。p1.1作為輸入,必須輸出高電平
while( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語(yǔ)句
{
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 //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含p2和p3
void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
{
p3 = 0xff; //初始化。p3作為輸入,必須輸出高電平,同時(shí)給p3口的8個(gè)引腳輸出高電平
while( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語(yǔ)句
{ //取反的方法是異或1,而不取反的方法則是異或0
單片機(jī)的外部結(jié)構(gòu):
1、 dip40雙列直插;
2、 p0,p1,p2,p3四個(gè)8位準(zhǔn)雙向i/o引腳;(作為i/o輸入時(shí),要先輸出高電平)
3、 電源vcc(pin40)和地線gnd(pin20);
4、 高電平復(fù)位reset(pin9);(10uf電容接vcc與reset,即可實(shí)現(xiàn)上電復(fù)位)
5、 內(nèi)置振蕩電路,外部只要接晶體至x1(pin18)和x0(pin19);(頻率為主頻的12倍)
6、 程序配置ea(pin31)接高電平vcc;(運(yùn)行單片機(jī)內(nèi)部rom中的程序)
7、 p3支持第二功能:rxd、txd、int0、int1、t0、t1
單片機(jī)內(nèi)部i/o部件:(所為學(xué)習(xí)單片機(jī),實(shí)際上就是編程控制以下i/o部件,完成指定任務(wù))
1、 四個(gè)8位通用i/o端口,對(duì)應(yīng)引腳p0、p1、p2和p3;
2、 兩個(gè)16位定時(shí)計(jì)數(shù)器;(tmod,tcon,tl0,th0,tl1,th1)
3、 一個(gè)串行通信接口;(scon,sbuf)
4、 一個(gè)中斷控制器;(ie,ip)
針對(duì)at89c52單片機(jī),頭文件at89x52.h給出了sfr特殊功能寄存器所有端口的定義。教科書(shū)的160頁(yè)給出了針對(duì)mcs51系列單片機(jī)的c語(yǔ)言擴(kuò)展變量類(lèi)型。
單片機(jī)c語(yǔ)言編程基礎(chǔ)
1、 十六進(jìn)制表示字節(jié)0x5a:二進(jìn)制為01011010b;0x6e為01101110。
2、 如果將一個(gè)16位二進(jìn)數(shù)賦給一個(gè)8位的字節(jié)變量,則自動(dòng)截?cái)酁榈?位,而丟掉高8位。
3、 ++var表示對(duì)變量var先增一;var—表示對(duì)變量后減一。
4、 x |= 0x0f;表示為 x = x | 0x0f;
5、 tmod = ( tmod & 0xf0 ) | 0x05;表示給變量tmod的低四位賦值0x5,而不改變tmod的高四位。
6、 while( 1 ); 表示無(wú)限執(zhí)行該語(yǔ)句,即死循環(huán)。語(yǔ)句后的分號(hào)表示空循環(huán)體,也就是{;}
在某引腳輸出高電平的編程方法:(比如p1.3(pin4)引腳)
#include //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含p1.3
void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
{
p1_3 = 1; //給p1_3賦值1,引腳p1.3就能輸出高電平vcc
while( 1 ); //死循環(huán),相當(dāng) loop: goto loop;
}
注意:p0的每個(gè)引腳要輸出高電平時(shí),必須外接上拉電阻(如4k7)至vcc電源。
在某引腳輸出低電平的編程方法:(比如p2.7引腳)
#include //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含p2.7
void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
{
p2_7 = 0; //給p2_7賦值0,引腳p2.7就能輸出低電平gnd
while( 1 ); //死循環(huán),相當(dāng) loop: goto loop;
}
在某引腳輸出方波編程方法:(比如p3.1引腳)
#include //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含p3.1
void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
{
while( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語(yǔ)句
{
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 //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含p0.4和p1.1
void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
{
p1_1 = 1; //初始化。p1.1作為輸入,必須輸出高電平
while( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語(yǔ)句
{
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 //該頭文檔中有單片機(jī)內(nèi)部資源的符號(hào)化定義,其中包含p2和p3
void main( void ) //void 表示沒(méi)有輸入?yún)?shù),也沒(méi)有函數(shù)返值,這入單片機(jī)運(yùn)行的復(fù)位入口
{
p3 = 0xff; //初始化。p3作為輸入,必須輸出高電平,同時(shí)給p3口的8個(gè)引腳輸出高電平
while( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語(yǔ)句
{ //取反的方法是異或1,而不取反的方法則是異或0
熱門(mén)點(diǎn)擊
- 單片機(jī)驅(qū)動(dòng)蜂鳴器原理與設(shè)計(jì)
- 51單片機(jī)8*8點(diǎn)陣LED顯示原理及程序
- 80C51原始IP核內(nèi)部RAM的擴(kuò)展方案
- 單片機(jī)的圖形化編程方法探討
- 用AT89S51單片機(jī)來(lái)制作的手動(dòng)計(jì)數(shù)器
- Proteus在單片機(jī)系統(tǒng)設(shè)計(jì)中的應(yīng)用
- TEA5767收音機(jī)模塊的C51控制程序
- pic單片機(jī)的模擬I2C通信
- ST推出基于STM8內(nèi)核的STM8S系列8位
- 單片機(jī)相關(guān)常用名詞解釋
推薦技術(shù)資料
- 硬盤(pán)式MP3播放器終級(jí)改
- 一次偶然的機(jī)會(huì)我結(jié)識(shí)了NE0 2511,那是一個(gè)遠(yuǎn)方的... [詳細(xì)]
- 100A全集成電源模塊R
- Teseo-VIC6A GNSS車(chē)用精準(zhǔn)定位
- 高效先進(jìn)封裝工藝
- 模數(shù)轉(zhuǎn)換器 (Analog-to-Digit
- 集成模數(shù)轉(zhuǎn)換器(ADC)
- 128 通道20 位電流數(shù)字轉(zhuǎn)換器̴
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究
深圳服務(wù)熱線:13692101218 13751165337
粵ICP備09112631號(hào)-6(miitbeian.gov.cn)

深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式