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

cx51編譯器用戶手冊

評論