




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
增強型單片機XC866原理及應(yīng)用
C語言介紹編程語言分類C語言介紹
C語言介紹C語言的特點:對單片機的指令系統(tǒng)不要求了解,僅要求對單片機的存儲結(jié)構(gòu)有初步的了解。 寄存器的分配、不同存儲器的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理。程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù),可使程序結(jié)構(gòu)化。關(guān)鍵字及運算函數(shù)可用近似人的思維過程方式使用。編程及程序調(diào)試時間顯著縮短,從而提高效率。提供的庫包含許多標(biāo)準(zhǔn)子程序,具有較強的數(shù)據(jù)處理能力等。一個C源程序至少包含一個函數(shù)(main函數(shù)),也可以包含一個main函數(shù)和若干個其他函數(shù)。例如: voidmain() {……} function1() {…} function2() {…}……函數(shù)由兩部分組成: 1.函數(shù)說明部分. 2.函數(shù)體.
C語言程序結(jié)構(gòu)例如: Voidmain(void) //函數(shù)說明 {unsignedchara; //函數(shù)體 unsignedcharb; …… }常量:在程序運行過程中,值不能改變的量。
常量的定義方法:
#define CONSTANT 100; 定義后,CONSTANT可代替100使用變量:在程序運行過程中,其值可以改變的量。 變量的定義格式如下:[存儲種類]數(shù)據(jù)類型[存儲器類型]變量名 變量可設(shè)置成多種類型,如下表所示:
數(shù)據(jù)類型、常量及變量數(shù)據(jù)類型
注意:在單片機中,只有bit型和unsignedchar型變量可以直接支持機器指令。
變量的存儲類型定義舉例: char data var1; bit bdata flags; float idata x,y,z; unsigned int pdata u; unsigned charxdata w;特殊功能寄存器的定義
特殊功能寄存器先定義后使用。使用sfr關(guān)鍵字進行定義。
sfr sfr_name=“整型常量”
例如: sfr SCON=0x98; /*串口控制寄存器地址為98H*/ sfr TMOD=0x89; /*定時器計數(shù)器方式控制寄存器地址為89H*/
大多數(shù)單片機特殊功能寄存器的定義都包含在頭文件中,后綴名為.h,只需將其添加進項目中即可對特殊功能寄存器進行操作。對特殊功能寄存器中位的定義使用sbit關(guān)鍵字,共有如下三種方式:1.用sfr_name^位數(shù)進行定義。例如:sfr PSW=0xD0;/*定義PSW寄存器地址為0xD0*/sbit OV=PSW^2/*定義OV位為,地址為0xD2*/2.用int_constant^位數(shù)進行定義。
該方法以一個整型常數(shù)做為基地址,位地址做為偏移量。例如:sbit OV=0xD0^2 /*OV位地址為0xD2*/sbit CY=0xD0^7 /*CY位地址為0xD7*/3.用int_constant進行定義。
這種方法將位的絕對地址賦給變量。例如: sbit OV=0xD2 /*OV位地址為0xD2*/ sbit CY=0xD7 /*CY位地址為0xD7*/中斷函數(shù)為了滿足在C語言源程序中直接編寫中斷服務(wù)函數(shù)的需要,C編譯器對函數(shù)的定義進行了擴展,使用如下的形式:
函數(shù)類型
函數(shù)名(形式參數(shù)表)interruptn(usingn)例如:
voidT01_viTmr0(void)interrupt1 {……} interrupt后的數(shù)字n是中斷編號,編譯器從8n+3處產(chǎn)生中斷向量。 using后的數(shù)字n是使用的工作寄存器組號。程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù),可使程序結(jié)構(gòu)化。判斷表達式2是否滿足給定的循環(huán)條件,若滿足循環(huán)條件,則執(zhí)行第3步;程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù),可使程序結(jié)構(gòu)化。執(zhí)行完畢后,sum=11。首先執(zhí)行循環(huán)體語句,然后判斷圓括號中的表達式。直接尋址片內(nèi)數(shù)據(jù)存儲區(qū),訪問速度塊#else舉例: #ifndef _MAIN_H_這種方法將位的絕對地址賦給變量。unsignedcharb;== 測試等于else {語句2};for(y=0;y<=10;y++)常見的用于構(gòu)成并行多#define CONSTANT 100;編寫中斷函數(shù)時需要注意以下幾點:中斷函數(shù)不能進行參數(shù)傳遞中斷函數(shù)沒有返回值,將其定義成void類型在任何情況下不能調(diào)用中斷函數(shù)如果在中斷函數(shù)中調(diào)用了其他函數(shù),則被調(diào)用函
數(shù)所使用的寄存器組必須與中斷函數(shù)相同。在Cx51中提供了5種運算符,分別為:算術(shù)運算符、關(guān)系運算符、邏輯運算符、位操作運算符及自增減運算符。1.算術(shù)運算符: 該類運算符主要完成算術(shù)運算的功能,有下列5種:
+ 加法運算符, - 減法運算符 * 乘法運算符
/ 除法運算符 % 模(求余)運算符。
運算符、表達式及其規(guī)則2.關(guān)系運算符 該類運算符主要完成條件語句中的條件判斷,有下列6種:
< 小于
> 大于
<= 小于或等于
>= 大于或等于 == 測試等于 != 測試不等于 由于關(guān)系運算符總是二目運算符,C語言以1代表真,以0代表假。
3.邏輯運算符:該類運算符主要完成邏輯運算的功能,有下列3種:
&& 邏輯“與”
|| 邏輯“或” ! 邏輯“非”
在邏輯表達式中,邏輯運算符的結(jié)合性為自左向右,邏輯表達式的值應(yīng)該是一個邏輯量,為“真”或為“假”。4.位操作運算符
該類運算符完成操作數(shù)的按位的邏輯操作,有下列6種:
& 按位“與”
| 按位“或”
^ 按位“異或” ~ 按位“取反”
<< 按位左移
>> 按位右移5.自增減運算符、復(fù)合運算符
自增減運算符的作用是使變量的值自動加1或減1。其使用有如下兩種方式: ++i,――i:在使用i值之前使i的值加(減)1。
i++,i――:在使用i值之后使i的值加(減)1。C語言程序結(jié)構(gòu)順序結(jié)構(gòu):
順序結(jié)構(gòu)是一種最基本、最簡單的編程結(jié)構(gòu)。在這種結(jié)構(gòu)中,程序由低地址向高地址順序執(zhí)行指令代碼。選擇結(jié)構(gòu)常見的選擇語句有:If、if
else語句,其基本結(jié)構(gòu)為:
1.if(表達式)
{語句};2. if(表達式) {語句1}; else {語句2};串行多分支結(jié)構(gòu)
串行多分支結(jié)構(gòu)的語句格式為:
if(表達式1)
{語句1;} elseif(表達式1) {語句2;} …… elseif(表達式n) {語句n;} else {語句m;}并行多分支結(jié)構(gòu):
常見的用于構(gòu)成并行多分支結(jié)構(gòu)的語句為switch-Case語句,其語句格式為:switch(表達式){case 常量表達式1: {語句1;} break;case 常量表達式2: {語句2;} break;……case 常量表達式n: {語句n;} break;default: {語句n+1;}}While型循環(huán)while語句的格式為:
while(表達式)
{循環(huán)語句}while循環(huán)的最大特點是其循環(huán)條件測試處于循環(huán)體的開頭。do……while型循環(huán)do…while型循環(huán)格式:
do {語句;} while(表達式)
首先執(zhí)行循環(huán)體語句,然后判斷圓括號中的表達式。如果表達式的結(jié)果為真則循環(huán)繼續(xù),并再一次執(zhí)行循環(huán)語句。
只有當(dāng)表達式的結(jié)果為假時,循環(huán)才會終止,并順序執(zhí)行后面的語句。For循環(huán)For循環(huán)語句的一般形式為:
for(表達式1;表達式2;表達式3)
{語句;} /*循環(huán)體*/For循環(huán)的語句執(zhí)行過程如下:先對表達式1賦初值進行初始化,判斷表達式2是否滿足給定的循環(huán)條件,若滿足循環(huán)條件,則執(zhí)行第3步;若不滿足循環(huán)條件,則結(jié)束循環(huán),轉(zhuǎn)到第5步。若表達式2為真,則在執(zhí)行指定的循環(huán)語句后,求解表達式3。回到第2步繼續(xù)執(zhí)行。退出for循環(huán),執(zhí)行下面一條語句。例如: sum=0; for(y=0;y<=10;y++) {sum=sum+1;}
執(zhí)行完畢后,sum=11。C語言中的預(yù)處理命令:宏定義格式:#define標(biāo)識符常量表達式功能:
用標(biāo)識符代替常量表達式舉例:
#defineubyteunsignedchar有效范圍:直到本源文件結(jié)束或遇到#undef文件包含
格式:#include<文件名>
功能:用指定文件的全部內(nèi)容替換該預(yù)處理行。
舉例:#include<main.h>
文件包含命令通常放在C程序的開頭,被包含的文件一般是公用的宏定義和外部變量的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 除塵設(shè)備產(chǎn)業(yè)分析報告
- 抗血吸蟲病藥戰(zhàn)略市場規(guī)劃報告
- 對頂角、余角和補角 教案 2024-2025學(xué)年北師大版數(shù)學(xué)七年級下冊
- 廠房使用合同范本
- 受托支付合同范本簡易
- 化肥提供合同范本
- 機械基礎(chǔ)考試模擬題+參考答案
- 信息保密合同范本
- 賣房給中介合同范本
- 保姆合同范本帶小孩
- 設(shè)備清單-15年物聯(lián)網(wǎng)智慧生活實訓(xùn)平臺專業(yè)版
- 廣東省開平市人民法院執(zhí)行款收取賬戶確認(rèn)書【模板】
- 供配電10kv變配電所畢業(yè)設(shè)計
- 風(fēng)電場110kV升壓站日常巡檢路線示意圖
- 樁基計算表格大全(自動版)
- 《材料工程基礎(chǔ)》教學(xué)大綱
- 國內(nèi)外材料牌號對照
- 建設(shè)工程施工合同培訓(xùn)PPT(49頁)
- LY∕T 2780-2016 松皰銹病菌檢疫技術(shù)規(guī)程
- 航空服務(wù)形體訓(xùn)練課程標(biāo)準(zhǔn)
- 項目部安全管理組織機構(gòu)網(wǎng)絡(luò)圖GDAQ20102
評論
0/150
提交評論