0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Cx51的變量和函數(shù)

汽車電子技術 ? 來源:嵌入式悅翔園 ? 作者: JamesBin ? 2023-02-17 14:55 ? 次閱讀

每寫一個程序,總離不開數(shù)據(jù)的應用,在學習 c51 語言的過程中掌握理解數(shù)據(jù)類型也是 很關鍵的。先看表 3-1,表中列出了 KEIL uVision2 單片機c語言編譯器所支持的數(shù)據(jù)類型。

一、變量和運算符

Cx51中的算術運算符

圖片

圖片

圖片

圖片

圖片

二、函數(shù)

函數(shù)可分為主函數(shù)、標準庫函數(shù)、自定義函數(shù)三類。

1、主函數(shù)

Cx51語言程序中有且只能有一個主函數(shù)main()。一個Cx51語言程序的執(zhí)行從主函數(shù)開始,主函數(shù)可以調(diào)用其它函數(shù),包括庫函數(shù)和自定義函數(shù),其它函數(shù)不能調(diào)用主函數(shù)。

主函數(shù)的標準寫法是 int main( void )

前面的int是main 函數(shù)的返回值類型,用于向操作系統(tǒng)說明程序的退出狀態(tài),返回0代表正常退出,1代表異常。形式參數(shù)“void”用于說明主函沒有輸入?yún)?shù)。

2、庫函數(shù)

Cx51編譯器提供了豐富的庫函數(shù),庫函數(shù)是已經(jīng)編寫好的功能函數(shù),可完成數(shù)學計算、輸入輸出等常用功能,供開發(fā)人員調(diào)用,以提高編程效率。

如果程序中使用了庫函數(shù),則應該在程序的開頭處使用#include包含語句,將所用的函數(shù)頭文件包含到程序中來。

3、自定義函數(shù)

可根據(jù)需要編寫自定義功能函數(shù),結(jié)構(gòu)如下:

返回值類型函數(shù)名(類型 形參)

{
   數(shù)據(jù)定義;
   執(zhí)行語句;
   返回值;
}

形參和返回值是函數(shù)與外界聯(lián)系的橋梁。形參是在函數(shù)調(diào)用時由外界傳入函數(shù)體內(nèi)的參數(shù),形參可以沒有,也可以有多個;返回值是函數(shù)運行完畢時返回給調(diào)用該函數(shù)語句的值。如果函數(shù)沒有返回值,那么應聲明為void類型,凡不加返回值類型限定的函數(shù),就會被編譯器作為返回整型值處理。

根據(jù)作用范圍的不同,變量可分為局部變量全局變量 。局部變量是定義在函數(shù)內(nèi)部的變量,只在該函數(shù)內(nèi)部有效;全局變量是定義在函數(shù)外部的變量,從其定義位置開始到源文件結(jié)束都有效。如果全局變量和某一函數(shù)的局部變量同名,則在該函數(shù)內(nèi)部只有局部變量有效。

圖片

三、函數(shù)舉例

下圖是8051單片機的P1.0口上連接了一個LED,請編程實現(xiàn)LED周期閃爍。

圖片

#include //包含單片機定義寄存器的頭文件
 sbit led = P1^0; //將led定義為P1.0位
void delay(void) //延時函數(shù)
{
   unsigned int i;    //定義無符號整數(shù),最大取值范圍65535
   for(i=0;i<20000;i++);//做20000次空循環(huán),以進行延時。
}
int main(void ) //主函數(shù)
{
  while(1)    //無限循環(huán),以使LED持續(xù)閃爍。
   {
      led =0;  // P1.0輸出低電平,燈亮
      delay(); //延時一段時間
      led =1;  // P1.0輸出高電平,燈滅
      delay(); //延時一段時間
   }
}

四、移位控制流水燈

下圖是8051單片機的P0口上連接了8個LED,請采用移位操作編寫程序?qū)崿F(xiàn)LED流水燈。

圖片

#include //包含單片機定義寄存器的頭文件
void delay(void) //延時函數(shù)
{
    unsigned int i;    //定義無符號整數(shù),最大取值范圍65535
    for(i=0;i<20000;i++); //做20000次空循環(huán),以進行延時。
}
int main(void ) //主函數(shù)
{
    unsigned char led,a,b; //定義三個無符號字符型變量
    led =0xfe;// led = 11111110B,即P0.0上LED亮,其余口線上LED滅
    while(1)    //無限循環(huán),以使LED流水亮滅
    {
P0 = led; //將led狀態(tài)賦給P0口寄存器,實現(xiàn)LED亮滅
a = led>>7; //將led最高位先放到a中的最低位中,a中其它位全為0
b = led<<1; //將led左移一位,最低位補零
led = b|a; //位或運算  
delay();
 }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Cx51
    +關注

    關注

    0

    文章

    4

    瀏覽量

    7629
  • 語言程序
    +關注

    關注

    0

    文章

    4

    瀏覽量

    5926
  • main
    +關注

    關注

    0

    文章

    38

    瀏覽量

    6166
收藏 人收藏

    評論

    相關推薦

    Cx51程序設計堆棧的計算方法

    ,即使在函數(shù)調(diào)用結(jié)束時也不釋放空間(這一點不同于標準C語言)。Cx51編譯器按照用戶的設置,將所有的變量存放在片內(nèi)和片外的RAM中。片內(nèi)變量分配好空間后,將剩下的空間全部作為堆??臻g,
    發(fā)表于 04-09 15:22

    Cx51程序設計的堆棧空間計算方法

    用戶的堆棧大小Cx51程序設計中,因為動態(tài)局部變量是長駐內(nèi)存中的,實際上相當于局部靜態(tài)變量,即使在函數(shù)調(diào)用結(jié)束時也不釋放空間(這一點不同于標準C語言)。
    發(fā)表于 02-27 11:58

    《Keil Software –Cx51 編譯器用戶手冊 中文完整版》(403頁)

    本帖最后由 7788281 于 2012-6-7 17:14 編輯 前言本手冊講述對8051 的目標環(huán)境如何使用Cx51 優(yōu)化C 編譯器編譯C 程序Cx51 編譯器包可以用在所有的8051
    發(fā)表于 06-07 17:13

    《Keil Cx51 編譯器用戶手冊 中文完整版》(403頁)...

    《Keil Software –Cx51 編譯器用戶手冊 中文完整版》(403頁).pdf
    發(fā)表于 06-19 20:35

    Cx51中文手冊

    Cx51中文手冊
    發(fā)表于 07-28 14:46

    c51cx51有什么區(qū)別?

    我用Keil_uVision3看到編譯器有C51CX51,請問各位大俠c51cx51有什么區(qū)別
    發(fā)表于 02-07 09:11

    Keil Software –Cx51 編譯器用戶手冊

    Keil Software –Cx51 編譯器用戶手冊
    發(fā)表于 04-26 11:31

    Keil Software –Cx51 編譯器用戶手冊 中文完整版分享

    《Keil Software –Cx51 編譯器用戶手冊 中文完整版》(403頁)好書分享《Keil Software –Cx51 編譯器用戶手冊 中文完整版》(403頁).pdf
    發(fā)表于 07-19 02:29

    Cx51 8051/251開發(fā)工具介紹

    Keil Cx51 ANSI C編譯器支持所有傳統(tǒng)和擴展的8051設備變種。 編譯器擴展提供對所有CPU資源的完全訪問,并支持高達16MB的內(nèi)存。Keil Cx51以手工優(yōu)化匯編的效率和速度生成代碼
    發(fā)表于 08-24 06:17

    Keil Cx51 V7.0單片機高級語言編程與uVisio

    Keil Cx51 V7.0單片機高級語言編程與uVision2應用實踐詳細介紹了KeilCx51V7.機C語言編譯器和全新Window
    發(fā)表于 09-10 10:02 ?109次下載
    Keil <b class='flag-5'>Cx51</b> V7.0單片機高級語言編程與uVisio

    cx51編譯器用戶手冊

    本手冊講述對8051 的目標環(huán)境,如何使用Cx51優(yōu)化C 編譯器編譯C 程序。Cx51 編譯器包可以用在所有的8051 系列處理器上,可以在WINDOWS 32 位命令行中執(zhí)行本手冊。假定你熟悉WINDO
    發(fā)表于 10-07 15:06 ?36次下載
    <b class='flag-5'>cx51</b>編譯器用戶手冊

    Cx51編譯器使用手冊

    Cx51編譯器使用手冊 對傳統(tǒng)和擴展的8051 微處理器的優(yōu)化的C 編譯器和庫參考 本手冊講述對8051 的目標環(huán)境如何使用Cx51 優(yōu)化C 編譯器編譯C 程序Cx51
    發(fā)表于 03-12 10:24 ?33次下載

    Cx51 編譯器用戶手冊(中文完整版)

    Cx51 編譯器用戶手冊 中文完整版 本手冊講述對8051 的目標環(huán)境如何使用Cx51 優(yōu)化C 編譯器編譯C 程序Cx51 編譯器包可以用在所有的8051 系列處理器上可以在WINDOWS
    發(fā)表于 03-15 15:13 ?0次下載

    Cx51程序設計堆棧的計算方法

    引言   用C語言進行MCS51系列單片機程序設計是單片機開發(fā)和應用的必然趨勢。Keil公司的C51編譯器支持經(jīng)典8051和8051派生產(chǎn)品的版本,通稱為Cx51。應該說,Cx51
    發(fā)表于 12-10 09:55 ?1394次閱讀

    Cx51用戶指南之數(shù)據(jù)存儲格式數(shù)據(jù)存儲格式

    Cx51用戶指南之數(shù)據(jù)存儲格式數(shù)據(jù)存儲格式
    發(fā)表于 12-13 15:11 ?2次下載