Keil C基本說明

Download Report

Transcript Keil C基本說明

單元一
Keil C
1
C和VB的不同
比較
VB
C
視為相同
英文字大小寫
(實際上VB的編輯器會自
行將其格式調整成一致)
程式區塊
必要時以 End 為結尾
每行程式結尾
註解
以換行符號(即Enter)
做標記
分號『;』後視為註解
視為不同
以大括號 {
} 包夾
分號『 ; 』做標記
以 //
或
/* */
2
Keil C的程式結構
//前端處理器
#include <reg51.h>
//變數及自定函數宣告區
void delay(int);
int i;
//主程式
main()
{
while(1)
{
}
}
//自定函數區(即副程式)
void delay(int x)
{
}
3
Keil C標頭檔 reg51.h
Keil C已定義好的標頭檔 reg51.h
檔案裏主要存放8051單晶片中的一
些特殊暫存器,例如:輸出入埠-
P0、P1、P2、P3;累積器ACC等。
4
Keil C數值型別
型態名稱
資料種類
長度
表達範圍
char
位元組
1Byte
0 ~ 255
unsigned char
無號位元組
1Byte
-128 ~ 127
int
整數
2Byte
-32,768 ~ 32,767
unsigned int
無號整數
2Byte
0 ~ 65,535
Long
長整數
4Byte
-2,147,483,648 ~ 2,147,483,647
unsigned long
無號長整數
4Byte
0 ~ 4,294,967,295
float
浮點數
32Byte
±1.7549E-38 ~ ±3.402823E38
Keil C專屬:
型態名稱
長度
表達範圍
bit
1bIT
將變數指向可位元定位之位址(20H~2FH)
sbit
1bit
將變數指向可位元定位之位址或是特殊暫存器中可位元
定址的暫存器
sfr
8bit
將變數定義為指向特殊暫存器位址(reg51.h中已定義)
sfr16
16bit
將變數定義為指向特殊暫存器位址(reg51.h中已定義)
5
Keil C記憶體類型
記憶體名稱
說明
變數指向位址
code
變數指向到『程式記憶』位址
0000H~07FFH(89S51-2K)
data
變數直接指向到內部資料記憶體位址
00H~7FH(128Byte)
idata
間接定址的內部資料記憶體
80H~FFh(128 Byte)
bdata
xdata
pdata
float
Keil C專屬:
型態名稱
長度
表達範圍
bit
1bIT
將變數指向可位元定位之位址(20H~2FH)
sbit
1bit
將變數指向可位元定位之位址或是特殊暫存器中可位元
定址的暫存器
sfr
8bit
將變數定義為指向特殊暫存器位址(reg51.h中已定義)
sfr16
16bit
將變數定義為指向特殊暫存器位址(reg51.h中已定義)
6
變數宣告
Keil
C的變數宣告格式如下:
資料型態
[記憶體類型] 變數名稱[=預設值];
範例:
int x;
int x=100;
int x,y,z;
unsigned char x;
unsigned char code x;
sbit led1=P1^0;
bit flag=0;
7
函數(副程式)宣告
宣告格式如下:
傳回引數的資料形態
函數名稱(傳入參數)
傳回引數之資料型態:
若函數的運算結果需傳回給程式使用,則要依傳回值的
資料型態來宣告,若無需傳回任何資料則以void代替。
傳入參數:
若函數在執行時需由呼叫它的程式提供一參數以供運算,
則可在此欄位中指定,此傳入之引數亦可為多個,但一
定要明確的指定其資料型態 ,若沒有可空白不打。
8
函數(副程式)宣告範例
傳入引數 傳回參數
宣告型式
不要
不要
void delay(void)
void delay()
要
不要
void delay(int x)
不要
要
char delay()
char delay(void)
要
要
char delay(int x)
9
主程式 main()
在C語言中,定會有一個名為 main() 的程式
段,這個程式段就是 C 的主程式,即程式在
執行時會從 main() 開始;而對8051而言,
在main()裏一定會有一段無窮迴圈
Main()
{
while(1)
{
單晶片的要重覆執行的主程式
}
}
10
C的四則運算
運算符號
說明
範例
*
乘法
10 * 20 = 200
/
除法
15 / 2 = 7.5
%
取餘數
+
加法
20 + 100 = 120
-
減法
100 – 20 = 80
++
遞增累加
x++即為x=x+1
--
遞減累減
x--即為x=x-1
15 % 2 = 1
11
C的關係運算(用於判斷程式)
運算符號
說明
範例
==
相等
x==y
!=
不相等
x!=y
>
大於
x>y
<
小於
x<y
>=
大於等於
x>=y
<=
小於等於
x<=y
關係運算的結果不是1(TRUE)就是0(FALSE)
12
C的邏輯運算(用於判斷程式)
運算符號
說明
範例
!
NOT
!(X>Y)
&&
AND
(X>1) && (X<5)
||
OR
(X>1) || (X<5)
此處的邏輯運算是以TRUE和FALSE為運算對像(非數值,
數值的邏輯運算在C中稱為位元運算,符號亦不同)
13
C的位元運算
設x=01110010,y=11001100
運算符號
說明
範例
&
AND
a=x&y
結果a=01000000
|
OR
a=x|y
結果a=11111110
^
XOR
a=x^y
結果a=10111110
~
NOT
a=~x
結果a=10001101
<<N
左移N位元 a=x<<2
結果a=11001000
>>N
右移N位元 a=x>>2
結果a=00011100
關係運算的結果不是1(TRUE)就是0(FALSE)
14
C的運算優先順序
順序
符號
1
()
2
~、!
3
++、--
4
* 、/、 %
5
+、-
6
<<N、>>N
7
<、>、<=、>=、!=、==
8
&
9
^
10
|
11
&&
12
||
13
=、*=……等
15
N*1mSec延遲迴圈
void delay1ms(int x)
{
int i,j
for(i=0;i<x;i++)
for(j=1;j<=120;j++); //1mS延遲
}
16