1、1.主程式。2.函式(副程式)3.標頭檔。#include“stdio.h”void main(void)unsigned char i,j,k;j=i+j;delay();void delay(void)unsigned char i;for(i=1;i255;i+);*主程式以主程式以main為其函式的名稱。為其函式的名稱。main()C語言敘述語言敘述;void delay_lms(char j)返回值型態參數void delay_1ms(char j)for(j=0;j100;j+);*標頭檔以x.h檔名儲存,它 主要用來定義各硬體I/O位 址,常數、函數的宣告。#define FAL
2、SE 0#define TURE l#define COUNTER 100徑和檔案名稱n避免使用以下的字符用在徑上和檔案名稱上(它們是有問題的):/:*?”|&+,=%1.例:011為八進位表示法,相當於十進位的9。例:9213。3.十六進位的表示法:以十六進位的表示法:以0 x開頭的數字。開頭的數字。例:0 x11表示16進位11。即十進位的17。4.字元表示法:以單引號將英文字母、字元表示法:以單引號將英文字母、阿拉伯數字、符號阿拉伯數字、符號括起來表示之括起來表示之。A表示字母A,即0 x41 0表示阿拉伯數字0,即0 x30#表示#符號控制字元ASCII碼字元名稱00 x00空格(nu
3、ll space)NULLa0 x07響鈴(bell ring)BELLb0 x08退格(backspace)BSt0 x09標識(tab)HTn0 x0a跳列(newline)LFf0 x0c跳頁(form feed)FFr0 x0d回轉(earriage return)CR0 x22雙引號(double quote),0 x2c單引號(singal quote),0 x5c倒斜線(bacrk slash),格式格式:變數資料型態變數資料型態 變數名稱;變數名稱;【例】intint i i;一、變數的名稱開頭字元一、變數的名稱開頭字元 1.大寫英文字母(A Z)2.小寫英文字母(a z)3.
4、底線_二二、變數的組合、變數的組合 1.大寫英文字母(A Z)2.小寫英文字母(a z)3.阿拉伯數字(0 9)4.底線_三三、變數名稱不可以為系統的保留字變數名稱不可以為系統的保留字autobreakcasecharcontinue defaultdo double elseenumexternfloat gotoifintlongregister returnshortsizeofstaticstructswitchtypebefunionunsignedvoidwhile四、四、大寫與小寫的變數,代表不同的變數大寫與小寫的變數,代表不同的變數(?)格式格式:資料形態修飾 資料型態變數1.
5、資料基本型態資料基本型態char:存放字元資料型態。代表存放8位元資料。int:存放整數的資料型態。代表存放16位元資料。float:存放浮點數的資料型態。代表存放32位元資料。double:存放雙倍精度浮點數的資料型態。代表存放32位元資料。2.資料型態的修飾字:改變資料型態的意義。資料型態的修飾字:改變資料型態的意義。signed:帶符號。unsigned:不帶符號。short:短。未加入short的變數為short。long:長。其資料長度為原資料型態的2 倍。另外的資型n在m8c.inc支援的運算符號支援的運算符號支援的運算符號支援的運算符號支援的運算符號格式格式:資料型態修飾字資料型
6、態修飾字 資料型態資料型態 變數名稱;變數名稱;1.宣告變數型態宣告變數型態 char i;宣告變數i為字元資料型態 2.宣告變數型態,並給予初始值宣告變數型態,並給予初始值 char i,j,k=10;unsigned char i=A;(1)(1)本 地 變 數本 地 變 數 (l o c a l (l o c a l variable)variable)(2)(2)全 區 變 數全 區 變 數 (g l o b a l (g l o b a l variable)variable)(3)(3)外 部 變 數外 部 變 數 (e x t e r n a l(e x t e r n a l
7、variable)variable)本地變數的有效範圍只有在它所宣告的函式內有效void main(void)char i;i=10;test();void test(void)char i,k;i=100;k=i+k;i的有效範圍i,k的有效範圍此i與main()中之i不同全區變數的有效範圍是整個檔案內(*.c)。檔案檔案A.C中中:檔案檔案B.C中中:char delay;全區變數宣告void dkk(void)void main(void)delay=10;char delay;區域變數delay宣告 delay=delay/10;void f1(void)delay=delay+1;外
8、部變數的有效範圍為所有檔案的所有函式外部變數的有效範圍為所有檔案的所有函式檔案檔案A.C中中:檔案檔案B.C中中:EXTERNAL char delay;全區外部變數宣告 void dkk(void)void main(void)char delay;區域變數delay宣告delay=10;delay=delay/10;void f1(void)delay=delay+1;1.auto(自動變數)2.static(靜態變數)4.bit(位元變數)*以以堆疊方式堆疊方式儲存在記憶體空間儲存在記憶體空間。*IAR-C是以暫存器是以暫存器R0R7來儲存自動變數來儲存自動變數。(8051)void d
9、elay(void)auto char i;意義相同 char i;IAR-C編譯器是以編譯器是以固定位址固定位址存放此變存放此變 數,使用數,使用堆壘方式堆壘方式來存放來存放 IAR-C將它儲存在將它儲存在8051CPU的記憶體的記憶體00H7FH。static char i;static int j;格式格式:變數變數=任何合法的運算式;任何合法的運算式;char a,b,c,j;a=3+2;結果:a=5b=a+4;結果:b=9c=a/b;結果:c=0j=a-b;結果:-4關係運算子用來比較變數的值或常數的值,並將結果傳 回給變數。若為真,則結果為1,若為假,則結果為0。運算的結果不影響各
10、個變數的值。*邏輯運算的功能是用來判斷敘述的真、偽邏輯運算的功能是用來判斷敘述的真、偽。*若敘述為真,則結果為若敘述為真,則結果為1。若敘述為偽,則結果為。若敘述為偽,則結果為0。一 般一 般*位元邏輯運算子會將各位元邏輯運算子會將各變數或常數變數或常數的的每一個位每一個位 元元(bit)做邏輯運算做邏輯運算,並將結果寫入某變數。,並將結果寫入某變數。條件控制指令用來控制條件控制指令用來控制C語言程式的執行流程語言程式的執行流程1.for 指令2.while 指令3.do_while 指令4.if else 指令5.switch case 指令6.goto 指令(無條件)(1)無限迴圈無限迴圈
11、 for(;);與組合語言JMP$相同。(2)時間延遲時間延遲 char i;for(i=0;i100;i+);本指令會執行for迴圈100次,後離開for迴圈,繼續往下執行程式。(3)執行執行n次敘述後,繼續往下執行程式。次敘述後,繼續往下執行程式。int i;for(i=0;i5;i+)P0=i;P1=0;執行順序:P0=0(i=0)P0=1(i=1)P0=2(i=2)P0=3(i=3)P0=4(i=4)離開for迴圈(I=5)4.多重迴圈多重迴圈 for控制敘述可以有多層迴路控制敘述。先執行 內部迴圈後,依序執行外部迴圈。5.for迴圈不可交叉迴圈不可交叉內內部部外外部部A AB BAA
12、B BC CDD【例】char i,j,k,l;i=0;j=0;for(k=0;k3;k+)j=j+3;for(l=0;l 0)i;(3)執行執行n次敘述次敘述 char i=100;while(i 0)執行執行100次次 敘述敘述;i;【例】char i=3;while(i0)P1=i;i;執行順序:執行順序:(1)i=3,P1=3,i=2(i )(2)i=2,P1=2,i=1(i )(3)i=1,P1=1,i=0(i )(4)結束結束【指令格式指令格式:】do do 敘述敘述A;A;while(while(運算式運算式)敘述敘述B;B;【執行流程圖執行流程圖:】dodoA A敘述敘述B B
13、敘述敘述假假真真判斷運算式判斷運算式【說明【說明】(1)首先執行完do迴圈的敘述 A後,才測試while的運算 式是否為真。若運算式為真,則跳至do迴圈內,再執行迴圈內的敘述A。若為假,則跳出此迴圈,執行敘述B。(2)如果 內,只有一個敘述,可以省略大括弧。(3)多層迴路與for()相同。(4)迴圈不得交叉。char i=0,j=0;do j=j+10;i=i+4;while(i10)i=100;【執行順序【執行順序】(1)i=0,j=0 (2)do迴圈j=10,i=4 判斷i10為真 (3)do迴圈j=20,i=8 判斷i10為真 (4)do迴圈j=30,i=12 判斷i5)j=j+10;e
14、lse j=j+1;i=33;執行順序執行順序 (1)j=0,i=0 (2)i=33,j=1指令格式指令格式 switch(變數)case 條件1:敘述1;break;case 條件2:敘述2;break;.case 條件N:敘述N;break;default:敘述N+1;break;break;敘述A;流程圖流程圖1 1條件條件變數變數 1 1敘述敘述2 2條件條件變數變數 2 2敘述敘述N N條件條件變數變數 N N敘述敘述defaultdefault1 1N N敘述敘述A A敘述敘述【說明【說明】(1)C語言程式會將“變數”與“條件1”到“條件N”比較。若相等,則執行該“條件”的敘述,否
15、則執行default的敘述。(2)switch的變數,只能是整數或字元。(3)default 敘述,可有可無。程式程式char c,k;c=10;switch(c)case 2:k=20;break;case 5:k=50;break;case 8:k=80;break;case 10:k=100;break;case 12:k=120;break;default:k=255;break;c=88;執行順序執行順序(1)c=10,與case 10 相同,所以,k=100,離開switch case迴圈,繼續往下執行。(2)c=88break指令的用法指令的用法 1.在switchcase指令中
16、,扮演中斷case 敘述判斷的功能。2.可以跳離任何迴圈for,if else,while,do-while。例 char i=0;for(;)i=i+1;if(i=10)break;如果i=10,則 跳離forGoto指令指令n指令格式指令格式:goto lebel;nExample:char h,a=10;test1:a=a+10;if(aP1=P2=5char TAB5;char ptr;ptr=&TAB0;int datal 5;char*ptr;ptr=&datal 0;char TAB =1,4,5,7,9;char*ptr;ptr=&TAB0;1結構定義結構定義1結構的資料型態與
17、陣列的資料型態相似,都是將多個變數收 集在同一個變數名稱下的集合。2結構與陣列最大的不同點是 陣列中,每一個變數(元素)的資料型態都必須相同;而結構中的每一個變數,都可以擁 有不同的資料型態。struct 結構變數名稱 變數名稱;【例】struct student a1;【說明】宣告a1為 student 資料結 束變數。(A)結構變數typedef struct people char child;char adult;char man;char women;int total;struct people china;/*宣告china變數資料型態為結構people*/chinachild=
18、1;/*令china變數內的元素child=1*/chinawomen=10;/*令china 變數內的元素women=10*/1列舉(enum)是一種資料型態的定義。2代表一群符號常數的定義的集合。3當列舉被宣告後,列舉中的符號常數就 依序(由左 而右)給序0,1,2,n的整數值。enum 變數名稱 符號常數0,符號常數1,符號常數2,;【例】enum colors blue,red,green;【說明】經上述對列舉宣告後,blue=0,red=1,green=2指令格式指令格式2 設定初始值設定初始值eunm 變數名稱 符號常數1=xx,符號常數2=yy,xx,yy:整數【例】enum t
19、oday hot=5,rainny=10,warm=20,sunny=18;【說明】宣告列舉資料型態today,並設定符號常數初始 值如下:hot=5,rainny=10,warm=20,sunny=18enum 變數名稱符號常數1=xx,符號常數2,符號常數3,;xx:表整數 符號常數2=xx+1,符號常數3=xx+2,依此類推【例】enum var red=5,green,blue,yan;【說明】red=5,green=6,blue=7,yan=8 1等位的功用在於節省記憶體的使用 2等位內的成員佔有相同一塊的記憶體。3等位所佔的記憶體為成員內元素的最大長度。4每個等位變數只能同時儲存,
20、其中一個變數的值【例】union char i,char j,int k,char l;則變數,i,j,k,l,儲存在相同記憶體位址內,其最大長度為2 byte(int)。應用範例應用範例union char money,int total;money=100;/*設定money=100*/total=10000;/*設定total=10000,同時money的內容己被改變,不再是100*/PSOC PSOC 一般一般I/OI/O代號代號nPRT0DR8 bits8051之 P0nPRT1DR8 bits8051之P1nPRT2DR8 bits8051之P2nExample:outputPRT0DR=0 x36;/P0=00110110nExample:inputunsigned char hh;hh=PRT0DR;/hh=P0之值編譯選單選項
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。