欢迎来到天天文库
浏览记录
ID:37823541
大小:2.00 MB
页数:46页
时间:2019-05-31
《C 语言基础架构》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、嵌入式系統初學指引第三單元C語言基礎架構3-1~自走車系統開發實例第三單元C語言基礎架構本單元將介紹KEILC編譯軟體模式下之C++程式語言架構,由最基礎的指令宣告開始講解,循序介紹資料型態、運算子、迴圈及函式,最後進階講解結構化的C++程式設計。其實,在各式編譯C++或C#語言的軟體架構下,均依循著最典型的C語言的資料型態來進行演化,當使用某部份指令不明確時,只要依循著典型的C語言格式幾乎都可以完成編譯的動作,因為高階語言C++與C#的演化,其實是為了簡化繁雜而且規定嚴謹的典型C語言,讓程式語言寫作得以更加彈性化與簡單化。而本單元介紹的C/C++資料格式與語
2、法多數通用於其它編譯系統軟體,部分為KEILC編譯器所特有的保留字及宣告方式已特別註解,至於物件導向程式設計的class架構並不適用於KEILC編譯軟體,且多數微處理器或韌體系統開發的編譯軟體,並不需要如此複雜的程式開發,所以,本單元已將物件導向class與以省略。●3.1程式語言的基礎架構●3.2基本敘述符號與前置作業處理指令●3.3變數宣告與修飾字●3.4運算式(運算子及運算元)●3.5函式與流程控制設計●3.6C/C++程式語言結構化設計嵌入式系統初學指引第三單元C語言基礎架構3-2~自走車系統開發實例3.1程式語言的基礎架構3.1.1程式語言的目的與架
3、構什麼是程式語言?在微電腦的世界裡是一長串的0與1的位元碼,與人類語言格式的描述方式是完全不同的類型,而程式語言開發的目的,即為了將我們所需望表達的資料訊息,透過編譯軟體轉換為微電腦所能夠判讀的資料格式,最終得以依照開發者的構思與邏輯時序循序動作,執行相關的功能與運作。本書使用的是keiluVision3軟體為程式語言編譯器,在ATMAL公司所開發的晶片裡,編號規格為AT87、AT89、AT91、T80、T83、T87、T89等相關列單晶片均可使用,既然稱為”語言”則必定有相關的格式與文法存在,以下使用簡單的範例來介紹C語言程式架構的開端。#include4、T89x51.h>//編譯的程式包含reg51.h所引述的資料#definecount100//定義count名稱的值為十進位100unsignedcharx;//宣告程式存在一個字節且無正負符號的全域變數xvoiddelay(unsignedint);//宣告在主函式後存在著delay的副函式voidmain(void)//主函式{unsignedcharz;//宣告函式存在一個字節且無正負符號的區域變數zx=0xFF;//設定x變數初值為0xFFP1=x;//致能PORT1為輸出,初值為0xFFwhile(1)//無限迴圈{for(z=0;z<10;z++5、)//執行10次的for迴圈{P1=~P1;//P1反向delay(count);//時間延遲,將常數100引入延遲副程式中}}}voiddelay(unsignedintj)//延遲副函式{unsignedinti=0;//宣告函式存在一個整數且無正負符號的區域變數ido//do…while前測迴圈{i++;}//i=i+1while(i6、幾乎所有的C++資料格式都是引入這個主函式不變,所以必須記得,當一個程式語言開始執行命令或運算指令,都必須是從主函式開始與結束。而在撰寫程式語言有幾點是必須注意的:※只要是函式內必須使用的變數,均須於函式敘述的開端宣告,如上述程式的z與i,否則編譯器將視為錯誤命令格式不予執行。※C語言的指令是有區分大小寫的,且在宣告變數或定義名稱時,都必須注意不可與保留字使用相同字彙,而且在做變數或函式宣告時記得第一個字不可以為數字。3.1.2二進位資料格式既然我們所習慣的數據資料格式是不被微電腦所能接受的,所以我們需要瞭解微電腦真正所能夠判讀的數據型態及轉換的方式,而微電腦7、的控制其實是依循著二進位碼來進行數據的解讀與運算,當存在同一位置且為一連續的暫存器為一次的運算單位計數時,我們嵌入式系統初學指引第三單元C語言基礎架構3-3~自走車系統開發實例便稱這個單位容量大小為該微電腦晶片的運算位元尺寸,目前市面上常見的有8bit、16bit、32bit、64bit等四種規格,而AT89S51則是屬於8bit位元尺寸的單晶片,以下表列為8bit、16bit、32bit等三種格式的最小及最大數據容量及表示方式:bit二進位十進位十六進位80b00000000~0b111111110~2550x00~0xFF0b0000000000000008、0~160~655350x0000~0
4、T89x51.h>//編譯的程式包含reg51.h所引述的資料#definecount100//定義count名稱的值為十進位100unsignedcharx;//宣告程式存在一個字節且無正負符號的全域變數xvoiddelay(unsignedint);//宣告在主函式後存在著delay的副函式voidmain(void)//主函式{unsignedcharz;//宣告函式存在一個字節且無正負符號的區域變數zx=0xFF;//設定x變數初值為0xFFP1=x;//致能PORT1為輸出,初值為0xFFwhile(1)//無限迴圈{for(z=0;z<10;z++
5、)//執行10次的for迴圈{P1=~P1;//P1反向delay(count);//時間延遲,將常數100引入延遲副程式中}}}voiddelay(unsignedintj)//延遲副函式{unsignedinti=0;//宣告函式存在一個整數且無正負符號的區域變數ido//do…while前測迴圈{i++;}//i=i+1while(i6、幾乎所有的C++資料格式都是引入這個主函式不變,所以必須記得,當一個程式語言開始執行命令或運算指令,都必須是從主函式開始與結束。而在撰寫程式語言有幾點是必須注意的:※只要是函式內必須使用的變數,均須於函式敘述的開端宣告,如上述程式的z與i,否則編譯器將視為錯誤命令格式不予執行。※C語言的指令是有區分大小寫的,且在宣告變數或定義名稱時,都必須注意不可與保留字使用相同字彙,而且在做變數或函式宣告時記得第一個字不可以為數字。3.1.2二進位資料格式既然我們所習慣的數據資料格式是不被微電腦所能接受的,所以我們需要瞭解微電腦真正所能夠判讀的數據型態及轉換的方式,而微電腦7、的控制其實是依循著二進位碼來進行數據的解讀與運算,當存在同一位置且為一連續的暫存器為一次的運算單位計數時,我們嵌入式系統初學指引第三單元C語言基礎架構3-3~自走車系統開發實例便稱這個單位容量大小為該微電腦晶片的運算位元尺寸,目前市面上常見的有8bit、16bit、32bit、64bit等四種規格,而AT89S51則是屬於8bit位元尺寸的單晶片,以下表列為8bit、16bit、32bit等三種格式的最小及最大數據容量及表示方式:bit二進位十進位十六進位80b00000000~0b111111110~2550x00~0xFF0b0000000000000008、0~160~655350x0000~0
6、幾乎所有的C++資料格式都是引入這個主函式不變,所以必須記得,當一個程式語言開始執行命令或運算指令,都必須是從主函式開始與結束。而在撰寫程式語言有幾點是必須注意的:※只要是函式內必須使用的變數,均須於函式敘述的開端宣告,如上述程式的z與i,否則編譯器將視為錯誤命令格式不予執行。※C語言的指令是有區分大小寫的,且在宣告變數或定義名稱時,都必須注意不可與保留字使用相同字彙,而且在做變數或函式宣告時記得第一個字不可以為數字。3.1.2二進位資料格式既然我們所習慣的數據資料格式是不被微電腦所能接受的,所以我們需要瞭解微電腦真正所能夠判讀的數據型態及轉換的方式,而微電腦
7、的控制其實是依循著二進位碼來進行數據的解讀與運算,當存在同一位置且為一連續的暫存器為一次的運算單位計數時,我們嵌入式系統初學指引第三單元C語言基礎架構3-3~自走車系統開發實例便稱這個單位容量大小為該微電腦晶片的運算位元尺寸,目前市面上常見的有8bit、16bit、32bit、64bit等四種規格,而AT89S51則是屬於8bit位元尺寸的單晶片,以下表列為8bit、16bit、32bit等三種格式的最小及最大數據容量及表示方式:bit二進位十進位十六進位80b00000000~0b111111110~2550x00~0xFF0b000000000000000
8、0~160~655350x0000~0
此文档下载收益归作者所有