




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章單片機(jī)的
C語言程序設(shè)計(jì)及調(diào)試第三章單片機(jī)的
C語言程序設(shè)計(jì)及調(diào)試C語言編程特點(diǎn):編寫簡(jiǎn)單、直觀易讀、便于維護(hù)、通用性好、可移植性強(qiáng)、更符合人們的思考習(xí)慣但同學(xué)們一定會(huì)有這樣的疑問,我們學(xué)過了C語言,該如何用它操作單片機(jī)呢?C語言編程特點(diǎn):編寫簡(jiǎn)單、直觀易讀、便于維護(hù)、通用性好、可移不要著急,接下來,讓我們一起學(xué)習(xí)單片機(jī)的C語言程序設(shè)計(jì)與調(diào)試。限于篇幅,本章不介紹標(biāo)準(zhǔn)C語言的語句及語法規(guī)則,只介紹C語言在IAP15W4K58S4單片機(jī)程序設(shè)計(jì)中的特殊性問題,包括C51編程語言(簡(jiǎn)稱C51)與ANSIC的區(qū)別、單片機(jī)C語言程序的設(shè)計(jì)等內(nèi)容。不要著急,接下來,讓我們一起學(xué)習(xí)單片機(jī)的C語言程序設(shè)計(jì)與調(diào)試關(guān)系運(yùn)算符關(guān)系運(yùn)算符用于比較兩個(gè)常數(shù)或者表達(dá)式的大小。關(guān)系運(yùn)算的結(jié)果只能是0或1。關(guān)系運(yùn)算符的值為真時(shí),結(jié)果值為1;關(guān)系運(yùn)算符的值為假時(shí),結(jié)果值為0。<><=>===!=特別注意,判斷兩個(gè)常數(shù)或者表達(dá)式相等時(shí),使用“==”,不要使用單個(gè)的“=”。否則,判斷兩個(gè)數(shù)是否相等就變成了賦值語句。關(guān)系運(yùn)算符關(guān)系運(yùn)算符用于比較兩個(gè)常數(shù)或者表達(dá)式的大小。關(guān)系運(yùn)邏輯運(yùn)算符邏輯運(yùn)算符包括與(&&)、或(||)、非(!)三種,用于對(duì)包含關(guān)系運(yùn)算符的表達(dá)式進(jìn)行合并或取非。使用邏輯運(yùn)算符的表達(dá)式,返回0表示“假”,返回1表示“真”。邏輯運(yùn)算符邏輯運(yùn)算符包括與(&&)、或(||)、非(!)三種位運(yùn)算符按位與(&)、按位或(|)、按位異或(^)、取反(~)、左移(<<)和右移(>>)應(yīng)用:按位與運(yùn)算通常用來對(duì)某些位清0按位或運(yùn)算通常用來對(duì)某些位置1按位異或運(yùn)算通常用來對(duì)某些位取反位運(yùn)算符按位與(&)、按位或(|)、按位異或(^)、取反(~預(yù)處理-宏定義(define)在C語言源程序中允許用一個(gè)標(biāo)識(shí)符來表示一個(gè)字符串,稱為宏。無參宏定義的一般形式如下:#define標(biāo)識(shí)符字符串帶參宏定義的一般形式如下:#define宏名(形參表)字符串如要終止宏定義,可使用#undef命令。預(yù)處理-宏定義(define)在C語言源程序中允許用一個(gè)標(biāo)識(shí)預(yù)處理-文件包含(include)文件包含的一般形式如下:#include"文件名"◎你知道嗎?包含命令中的文件名可以用雙引號(hào)括起來,也可以用尖括號(hào)括起來。兩者有何不同呢?#include"math.h"#include<math.h>預(yù)處理-文件包含(include)文件包含的一般形式如下:預(yù)處理-條件編譯(1)條件編譯就是按不同的條件去編譯不同的程序部分,從而產(chǎn)生不同的目標(biāo)代碼文件。1)第一種形式 #ifdef標(biāo)識(shí)符 程序段1 #else 程序段2 #endif
預(yù)處理-條件編譯(1)條件編譯就是按不同的條件去編譯不同的程預(yù)處理-條件編譯(2)2)第二種形式
#ifndef標(biāo)識(shí)符 程序段1 #else 程序段2 #endif預(yù)處理-條件編譯(2)2)第二種形式預(yù)處理-條件編譯(3)3)第二種形式 #if常量表達(dá)式 程序段1 #else 程序段2 #endif預(yù)處理-條件編譯(3)3)第二種形式KeilC51擴(kuò)展關(guān)鍵字C51有以下19個(gè)擴(kuò)展關(guān)鍵字:_at_、sbit、sfr、bit、sfr16、idata、bdata、xdata、pdata、data、code、alien、small、compact、large、using、reentrant、interrupt、_task_KeilC51擴(kuò)展關(guān)鍵字C51有以下19個(gè)擴(kuò)展關(guān)鍵字:常見的關(guān)鍵字-內(nèi)存區(qū)域的指定1)程序存儲(chǔ)器code:程序存儲(chǔ)區(qū)。可以使用code定義表格常數(shù)2)內(nèi)部RAMdata:直接尋址區(qū),內(nèi)部RAM的低128字節(jié),地址范圍為00H~7FHidata:間接尋址區(qū),包括整個(gè)內(nèi)部RAM區(qū)256字節(jié),地址范圍為00H~0FFHbdata:可位尋址區(qū),地址范圍為20H~2FH常見的關(guān)鍵字-內(nèi)存區(qū)域的指定1)程序存儲(chǔ)器常見的關(guān)鍵字-內(nèi)存區(qū)域的指定3)外部數(shù)據(jù)存儲(chǔ)器xdata:可指定多達(dá)64KB的外部直接尋址區(qū),地址范圍0000H~0FFFFH4)特殊功能寄存器(SFR)sfr:字節(jié)尋址sfrsfr_name=int_constant;sfr16:字尋址sfr16DPTR=0x82;sbit:位尋址
sbitbitname=sfr_name^bit_number;常見的關(guān)鍵字-內(nèi)存區(qū)域的指定3)外部數(shù)據(jù)存儲(chǔ)器常見的關(guān)鍵字-變量或數(shù)據(jù)類型C51提供以下幾種擴(kuò)展數(shù)據(jù)類型:bit:位變量,值為0或1sbit:從字節(jié)中定義的位變量(0或1)sfr:sfr字節(jié)地址(0x80~0xff)sfr16:sfr字地址(0x80~0xff,其實(shí)是占用兩個(gè)連續(xù)的地址)其余的數(shù)據(jù)類型如char、enum、short、int、long、float等與ANSIC相同常見的關(guān)鍵字-變量或數(shù)據(jù)類型C51提供以下幾種擴(kuò)展數(shù)據(jù)類型:常見的關(guān)鍵字-KeilC51指針KeilC51支持一般指針(GenericPointer)和存儲(chǔ)器指針(MemorySpecificPointer)。一般指針的聲明和使用均與標(biāo)準(zhǔn)C相同,同時(shí)還可以說明指針的存儲(chǔ)類型。例如:unsignedcharxdata*pt;
//pt本身依存儲(chǔ)模式存放unsignedcharxdata*datapt;
//pt被保存在內(nèi)部RAM中unsignedcharxdata*xdatapt;
//pt被保存在外部RAM中常見的關(guān)鍵字-KeilC51指針KeilC51支持一般指常見的關(guān)鍵字-KeilC51指針除了和標(biāo)準(zhǔn)C語言一樣使用指針外,指針還可以用來訪問外部并行擴(kuò)展的器件。例如:為了方便地訪問外部存儲(chǔ)器及I/O端口,在C51中的absacc.h頭文件做了如下定義,利用這些定義可以方便地訪問外部I/O端口。#defineCBYTE((unsignedcharvolatilecode*)0)#defineDBYTE((unsignedcharvolatiledata*)0)#definePBYTE((unsignedcharvolatilepdata*)0)#defineXBYTE((unsignedcharvolatilexdata*)0)常見的關(guān)鍵字-KeilC51指針除了和標(biāo)準(zhǔn)C語言一樣使用指KeilC51函數(shù)-中斷函數(shù)聲明中斷函數(shù)通過使用interrupt關(guān)鍵字和中斷號(hào)(0~31)來聲明。中斷號(hào)告訴編譯器中斷服務(wù)程序的入口地址。IAP15W4K58S4單片機(jī)的中斷號(hào)及中斷服務(wù)程序入口地址見教材58頁表3-3。中斷函數(shù)具體是哪個(gè)中斷的函數(shù),與中斷號(hào)有關(guān),而與函數(shù)名無關(guān)。KeilC51函數(shù)-中斷函數(shù)聲明中斷函數(shù)通過使用interKeilC51函數(shù)-中斷函數(shù)聲明例如:串行口1的中斷函數(shù)可以聲明如下 voidUART1_ISR(void)interrupt4[using1] { /*中斷服務(wù)程序的代碼*/ }KeilC51函數(shù)-中斷函數(shù)聲明例如:串行口1的中斷函數(shù)可【例
3-1】
編程實(shí)現(xiàn)通過延時(shí)函數(shù),由P2.0輸出方波信號(hào),并通過示波器觀察程序輸出波形的周期。#include“stc15.h”
sbitP20=P2^0; //定義P2.0引腳voiddelay(unsignedlongcnt); //延時(shí)函數(shù)聲明voidmain(void){P2M1=0;P2M0=0; //將整個(gè)P2口所有口線設(shè)置為準(zhǔn)雙向口模式 P20=1;【例
3-1】編程實(shí)現(xiàn)通過延時(shí)函數(shù),由P2.0輸出方波信號(hào)【例
3-1】
while(1)//主程序循環(huán)
{delay(60000);P20=~P20;}}voiddelay(unsignedlongcnt) //延時(shí)函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 聯(lián)建投資協(xié)議書
- 砸車調(diào)解協(xié)議書
- 資產(chǎn)轉(zhuǎn)移協(xié)議書
- 鄧州離婚協(xié)議書
- 子女贍養(yǎng)協(xié)議書協(xié)議書
- 煮蛋器設(shè)備維修協(xié)議書
- 自愿騰退協(xié)議書
- 校企合作宣傳片協(xié)議書
- 電腦報(bào)廢協(xié)議書
- 摩托車交易合同協(xié)議書
- 合伙款退還協(xié)議書
- 2025年法律法規(guī)考試高分攻略試題及答案
- 2025年統(tǒng)計(jì)學(xué)專業(yè)期末考試題庫-抽樣調(diào)查方法應(yīng)用案例分析試題
- 2025陜西中考:歷史必背知識(shí)點(diǎn)
- 2025年下半年貴州烏江水電開發(fā)限責(zé)任公司大學(xué)畢業(yè)生招聘若干人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2025年內(nèi)蒙古包頭市中考數(shù)學(xué)一模試卷
- 2025年浙江東陽市九年級(jí)中考語文3月模擬試卷(附答案解析)
- 陪玩俱樂部合同協(xié)議模板
- 腦梗死的介入治療
- 2025年金融科技創(chuàng)新解讀試題及答案
- 高考期間食品安全
評(píng)論
0/150
提交評(píng)論