




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2020/7/7,1,第10章 80C51的C語言程序設(shè)計,單片機C語言概述,10.1,C51的數(shù)據(jù)類型與運算,10.2,C51流程控制語句,10.3,C51的指針類型,10.4,C51的函數(shù),10.5,C51編程實例,10.6,2020/7/7,2,10.1 單片機C語言概述,10.1.1 C51程序開發(fā)過程,編譯器能自動完成變量的存儲單元的分配 對常用功能模塊和算法編制相應(yīng)的函數(shù),方便移植,采用C51的優(yōu)點,C語言具有良好的可讀性、可移植性和基本的硬件操作能力 。,C51程序開發(fā)過程,編寫源程序 建立工程,加入源程序 編譯生產(chǎn)目標程序 仿真調(diào)試、寫存儲器,2020/7/7,3,2020/7
2、/7,4,10.1.2 C51程序結(jié)構(gòu),#include #include void delayms(unsigned); void main(void) unsigned char i; P1=0 x01; do for (i=0;i=7;i+) delayms(5000); P1=P11; if(P1=0 x0)P1=0 x01; while(1); ,void delayms(unsigned x) unsigned char j; while(x-) for(j=0;j123;j+); ,2020/7/7,5,10.2.1 C51的數(shù)據(jù)類型,10.2 C51的數(shù)據(jù)類型與運算,數(shù)據(jù)類型決
3、定其取值范圍、占用存儲器的大小及可參與哪種運算。,2020/7/7,6,盡可能采用無符號格式 bit用于定義位變量的名字,編譯器會對其分配地址(RAM的20H2FH 區(qū)域) sbit用于定義位變量的名字和地址,地址是確定的且不用編譯器分配(SFR及RAM的20H2FH 區(qū)域) C51編譯器在編譯時會自動進行類型轉(zhuǎn)換,幾點說明:,2020/7/7,7,10.2.2 C51數(shù)據(jù)的存儲類型,C51的存儲器類型,2020/7/7,8,經(jīng)常使用的變量應(yīng)該置于片內(nèi)RAM中,要用bdata、data、idata來定義 不經(jīng)常使用的變量或規(guī)模較大的變量應(yīng)該置于片外RAM中,要用pdata、xdata來定義 默
4、認存儲器類型由編譯控制命令的存儲模式指令限制,2020/7/7,9,10.2.3 80C51硬件結(jié)構(gòu)的C51定義,特殊功能寄存器的聲明,sfr 特殊功能寄存器名 = 地址常數(shù);,格式:,例如: sfr SCON = 0 x90; sfr P0 = 0 x80;,2020/7/7,10,特殊功能寄存器中特定位的聲明,sbit 位變量名=特殊功能寄存器名位的位置(07) 例如: sfr PSW=0 xD0; sbit OV=PSW2;,sbit 位變量名 = 字節(jié)地址位的位置(07) 例如: sbit OV=0 xD02; sbit CY=0 xD07;,sbit 位變量名 = 位地址 例如: s
5、bit OV=0 xD2; sbit CY=0 xD7;,2020/7/7,11,內(nèi)部RAM中可位尋址對象的定義,先定義變量的數(shù)據(jù)類型和存儲類型 例如: int bdata ibase; char bdata array4;,再利用sbit進行聲明 例如: sbit mybit0 = ibase0; sbit mybit15 = ibase15; sbit ary07 = array07;,訪問示例: ibase = -1; array2 = a;,2020/7/7,12,算術(shù)運算符和算術(shù)表達式,10.2.4 C51的運算符和表達式,基本算術(shù)運算符 例如: + 加法運算符; - 減法(取負)運
6、算符; * 乘法運算符; / 除法運算符; % 取余數(shù)運算符。,示例: 25.0/20.0=1.25 25/20=1 25%20=5,取負運算優(yōu)先級最高。,2020/7/7,13,自增、自減運算符(僅能用于變量) 例如: + 自增運算符; - 自減運算符;,類型轉(zhuǎn)換運算符 自動轉(zhuǎn)換,順序:bitcharintlongfloat 強制類型轉(zhuǎn)換,如:(double)a,2020/7/7,14,關(guān)系運算符和關(guān)系表達式,關(guān)系運算符 大于; = 大于等于; = = 等于; != 不等于。,關(guān)系表達式 關(guān)系表達式的值為邏輯值:真(1)和假(0),2020/7/7,15,邏輯運算符和邏輯表達式,邏輯運算符
7、條件表達式;更新表達式)語句,if語句與goto語句結(jié)合,當型循環(huán) 形式為: loop:if(表達式) 語句 goto loop; ,2020/7/7,23,直到型循環(huán) 形式為: loop:語句 if(表達式) goto loop; ,continue是一種循環(huán)中斷語句,它并不跳出循環(huán)體; break語句只能跳出它所處的那一層循環(huán); goto語句可以用于跳出多重循環(huán)(從內(nèi)層到外層)。,注意:,2020/7/7,24,10.4 C51的指針類型,有一個變量a,利用 void delay(void) int a = 5000; while(a - - )_nop_( ); ,void int_sr
8、v(void)interrupt 0 delay( ); if(INT0 = =0)P10 = ! P10;while(INT0 = =0); ,void main() P10 = 0; EA = 1; EX0 = 1; while(1); ,2020/7/7,33,定時計數(shù)器編程示例,【例10-2】 利用定時/計數(shù)器T0的方式1,產(chǎn)生10ms的定時,并使P1.0引腳上輸出周期為20ms的方波,采用中斷方式,設(shè)系統(tǒng)時鐘頻率為12 MHz。,1、計算計數(shù)初值X: Nt/ Tcy 1010-3/110-610000 計數(shù)器初值應(yīng)為-10000。即應(yīng)將 -(10000/256)送入TH0中,-(10
9、000%256)送入TL0中。,2、求T0的方式控制字TMOD: M1M0=01,GATE=0,C/T=0,可取方式控制字為01H,3、程序清單(見下頁),2020/7/7,34,#include “reg51.h” sbit P10 = P10; void timer0(void)interrupt 1 P10 = ! P10; TH0 = -(10000/256); TL0 = -(10000%256); ,void main(void) TMOD = 0 x01; P10 = 0; TH0 = -(10000/256); TL0 = -(10000%256); EA = 1; ET0 =
10、 1; TR0 = 1; while(1); ,2020/7/7,35,10.6.2 80C51擴展資源的編程,通用并行口編程示例,【例10-3】用81C55作為微型打印機與單片機間的接口電路。,2020/7/7,36,#include “reg51.h” #include “absacc.h” /*含有對XBYTE等絕對地址訪問宏的定義*/ #define uchar unsigned char #define COMD8155 XBYTE0 x7f00 #define PA8155 XBYTE0 x7f01 #define PB8155 XBYTE0 x7f02 #define PC815
11、5 XBYTE0 x7f03 sbit BUSY = P33;,2020/7/7,37,uchar code tab17 = 0 xb8,0 xdf,0 xbd,0 xcc,0 x20, 0 xb3,0 xf6,0 xb0,0 xe6,0 xc9,0 xe7,0 x20, 0 x32,0 x30,0 x30,0 x38,0 x0a;/*高教 出版社 2008*/ uchar t1 = 17;,void ptr(uchar d) /*打印字符函數(shù)*/ PA8155 = d; PC8155 = 0 x00; /*產(chǎn)生選通脈沖*/ PC8155 = 0 x01; while(BUSY); ,2020
12、/7/7,38,void main(void) COMD8155 = 0 x0f;/*送命令字*/ prt(0 x1c); /*送中文打印方式命令字高字節(jié)*/ prt(0 x26); /*送中文打印方式命令字低字節(jié)*/ EA = 1; EX1 = 1; while(1); ,2020/7/7,39,void int1(void)interrupt 2 using 1 uchar i; EA = 0; for(i = 0;i t1;i +)prt(tabi); EA = 1; ,2020/7/7,40,A/D轉(zhuǎn)換接口編程示例,【例10-4】 ADC0809與單片機的接口電路如圖。,2020/7/7,41,# include “reg51.h” # include “absacc.h” # define uchar unsigned char # define IN0 XBYTE0 x7ff8 sbit ad_busy = P33;,2020/7/7,42,void ad0809(uchar idata *x) uchar i; uchar xdata * ad_adr; ad_adr = & IN0; for(i = 0;
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲企業(yè)品牌授權(quán)及合作推廣合同
- 公共交通樞紐停車場車位使用權(quán)轉(zhuǎn)讓合同
- 餐飲公司廚師崗位晉升與勞動合同
- 拆除工程安全生產(chǎn)責(zé)任保險合同
- 《有效教學(xué)》課件
- 醫(yī)學(xué)常見病癥診斷與處理知識測試試卷
- 《初二數(shù)學(xué)概率統(tǒng)計初步學(xué)習(xí)教案》
- 小學(xué)周長教學(xué)課件
- 企業(yè)廢物管理與環(huán)境保護法律法規(guī)的執(zhí)行效果評估考核試卷
- 交通安全宣傳教育政策研究考核試卷
- 制造業(yè)暑假工合同
- 瀘州老窖“濃香文釀杯”企業(yè)文化知識競賽考試題庫大全-上(單選題)
- 遷往各地的隴西李氏
- 1000MW超超臨界火電機組深度調(diào)峰研究
- 福建省公共建筑能耗標準
- 醫(yī)?;鸨O(jiān)管知識考試題庫300題(含答案)
- 冷庫pcuocu應(yīng)用培訓(xùn)
- 源網(wǎng)荷儲一體化綠色供電工業(yè)園區(qū)示范項目環(huán)評可研資料環(huán)境影響
- 廣東省普通高中學(xué)生檔案
- 《水處理氣浮技術(shù)指南》
- 《大學(xué)法語簡明教程》課件
評論
0/150
提交評論