每寫一個(gè)程序,總離不開數(shù)據(jù)的應(yīng)用,在學(xué)習(xí) c51 語(yǔ)言的過程中掌握理解數(shù)據(jù)類型也是 很關(guān)鍵的。先看表 3-1,表中列出了 KEIL uVision2 單片機(jī)c語(yǔ)言編譯器所支持的數(shù)據(jù)類型。
一、變量和運(yùn)算符
Cx51中的算術(shù)運(yùn)算符
二、函數(shù)
函數(shù)可分為主函數(shù)、標(biāo)準(zhǔn)庫(kù)函數(shù)、自定義函數(shù)三類。
1、主函數(shù)
Cx51語(yǔ)言程序中有且只能有一個(gè)主函數(shù)main()。一個(gè)Cx51語(yǔ)言程序的執(zhí)行從主函數(shù)開始,主函數(shù)可以調(diào)用其它函數(shù),包括庫(kù)函數(shù)和自定義函數(shù),其它函數(shù)不能調(diào)用主函數(shù)。
主函數(shù)的標(biāo)準(zhǔn)寫法是 int main( void )
前面的int是main 函數(shù)的返回值類型,用于向操作系統(tǒng)說明程序的退出狀態(tài),返回0代表正常退出,1代表異常。形式參數(shù)“void”用于說明主函沒有輸入?yún)?shù)。
2、庫(kù)函數(shù)
Cx51編譯器提供了豐富的庫(kù)函數(shù),庫(kù)函數(shù)是已經(jīng)編寫好的功能函數(shù),可完成數(shù)學(xué)計(jì)算、輸入輸出等常用功能,供開發(fā)人員調(diào)用,以提高編程效率。
如果程序中使用了庫(kù)函數(shù),則應(yīng)該在程序的開頭處使用#include包含語(yǔ)句,將所用的函數(shù)頭文件包含到程序中來。
3、自定義函數(shù)
可根據(jù)需要編寫自定義功能函數(shù),結(jié)構(gòu)如下:
返回值類型函數(shù)名(類型 形參)
{
數(shù)據(jù)定義;
執(zhí)行語(yǔ)句;
返回值;
}
形參和返回值是函數(shù)與外界聯(lián)系的橋梁。形參是在函數(shù)調(diào)用時(shí)由外界傳入函數(shù)體內(nèi)的參數(shù),形參可以沒有,也可以有多個(gè);返回值是函數(shù)運(yùn)行完畢時(shí)返回給調(diào)用該函數(shù)語(yǔ)句的值。如果函數(shù)沒有返回值,那么應(yīng)聲明為void類型,凡不加返回值類型限定的函數(shù),就會(huì)被編譯器作為返回整型值處理。
根據(jù)作用范圍的不同,變量可分為局部變量和 全局變量 。局部變量是定義在函數(shù)內(nèi)部的變量,只在該函數(shù)內(nèi)部有效;全局變量是定義在函數(shù)外部的變量,從其定義位置開始到源文件結(jié)束都有效。如果全局變量和某一函數(shù)的局部變量同名,則在該函數(shù)內(nèi)部只有局部變量有效。
三、函數(shù)舉例
下圖是8051單片機(jī)的P1.0口上連接了一個(gè)LED,請(qǐng)編程實(shí)現(xiàn)LED周期閃爍。
#include //包含單片機(jī)定義寄存器的頭文件
sbit led = P1^0; //將led定義為P1.0位
void delay(void) //延時(shí)函數(shù)
{
unsigned int i; //定義無(wú)符號(hào)整數(shù),最大取值范圍65535
for(i=0;i<20000;i++);//做20000次空循環(huán),以進(jìn)行延時(shí)。
}
int main(void ) //主函數(shù)
{
while(1) //無(wú)限循環(huán),以使LED持續(xù)閃爍。
{
led =0; // P1.0輸出低電平,燈亮
delay(); //延時(shí)一段時(shí)間
led =1; // P1.0輸出高電平,燈滅
delay(); //延時(shí)一段時(shí)間
}
}
四、移位控制流水燈
下圖是8051單片機(jī)的P0口上連接了8個(gè)LED,請(qǐng)采用移位操作編寫程序?qū)崿F(xiàn)LED流水燈。
#include //包含單片機(jī)定義寄存器的頭文件
void delay(void) //延時(shí)函數(shù)
{
unsigned int i; //定義無(wú)符號(hào)整數(shù),最大取值范圍65535
for(i=0;i<20000;i++); //做20000次空循環(huán),以進(jìn)行延時(shí)。
}
int main(void ) //主函數(shù)
{
unsigned char led,a,b; //定義三個(gè)無(wú)符號(hào)字符型變量
led =0xfe;// led = 11111110B,即P0.0上LED亮,其余口線上LED滅
while(1) //無(wú)限循環(huán),以使LED流水亮滅
{
P0 = led; //將led狀態(tài)賦給P0口寄存器,實(shí)現(xiàn)LED亮滅
a = led>>7; //將led最高位先放到a中的最低位中,a中其它位全為0
b = led<<1; //將led左移一位,最低位補(bǔ)零
led = b|a; //位或運(yùn)算
delay();
}
}
-
Cx51
+關(guān)注
關(guān)注
0文章
4瀏覽量
7635 -
語(yǔ)言程序
+關(guān)注
關(guān)注
0文章
5瀏覽量
5962 -
main
+關(guān)注
關(guān)注
0文章
38瀏覽量
6208
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論