《基于C語言的MCS-51單片機教程》 課件 第4次課-單片機數(shù)據(jù)類型_第1頁
《基于C語言的MCS-51單片機教程》 課件 第4次課-單片機數(shù)據(jù)類型_第2頁
《基于C語言的MCS-51單片機教程》 課件 第4次課-單片機數(shù)據(jù)類型_第3頁
《基于C語言的MCS-51單片機教程》 課件 第4次課-單片機數(shù)據(jù)類型_第4頁
《基于C語言的MCS-51單片機教程》 課件 第4次課-單片機數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

08:40單片機數(shù)據(jù)類型MCS-51系列單片機的基本組成時鐘電路CPUROMRAMT0T1中斷系統(tǒng)串行接口并行接口P0P1P2P3TXDRXDINT0INT1定時計數(shù)器中央處理器CPU:8位,運算和控制功能內部RAM:共256個RAM單元,用戶使用前128個單元,用于存放可讀寫數(shù)據(jù),后128個單元被專用寄存器占用。內部ROM:4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)和表格。定時/計數(shù)器:兩個16位的定時/計數(shù)器,實現(xiàn)定時或計數(shù)功能。并行I/O口:4個8位的I/O口P0、P1、P2、P3。串行口:一個全雙工串行口。中斷控制系統(tǒng):5個中斷源(外中斷2個,定時/計數(shù)中斷2個,串行中斷1個)時鐘電路:可產(chǎn)生時鐘脈沖序列,允許晶振頻率6MHZ和12MHZ或11.0592復位電路單片機的存儲結構MCS-51單片機存儲器可以分成兩大類:

RAM,CPU在運行時能隨時進行數(shù)據(jù)的寫入和讀出,但在關閉電源時,其所存儲的信息將丟失。它用來存放暫時性的輸入輸出數(shù)據(jù)、運算的中間結果或用作堆棧。

ROM,寫入信息后不易改寫的存儲器。斷電后,其中的信息保留不變。用來存放固定的程序或數(shù)據(jù),如系統(tǒng)監(jiān)控程序、常數(shù)表格等。

MCS-51單片機采用哈佛結構,就是將數(shù)據(jù)存儲器(RAM)和程序存儲(ROM)分開的存儲器結構。MCS-51單片機存儲區(qū)可分為4個區(qū)域片內數(shù)據(jù)存儲區(qū)(IDATA)片外數(shù)據(jù)存儲區(qū)(XDATA)片內程序存儲區(qū)(CODE)片外程序存儲區(qū)(CODE)C51編譯器支持的存儲器類型存儲器類型描述data直接訪問片內RAM,訪問速度最快(128字節(jié))bdata可位尋址的片內RAM,允許位尋址和字節(jié)尋址(16字節(jié))idata間接訪問片內RAM,允許訪問整個內部RAM(256字節(jié))pdata分頁訪問片外RAM(256字節(jié))xdata訪問外部數(shù)據(jù)存儲器和總線方式擴展的外設端口地址(64K字節(jié))code程序存儲器(64K字節(jié))KielC51中如何使用單片機資源標識符和關鍵字數(shù)據(jù)類型、常量和變量運算符和表達式KeilC51語句標識符和關鍵字標識符是在程序中定義的對象,可以是函數(shù)、變量、常量、數(shù)組、數(shù)據(jù)類型和程序語句等。一般由字母、數(shù)字和下劃線組成,標識符的第一個字符必須是字母或下劃線。關鍵字是一些固定名稱或有特殊含義的標識符,在編程的時候不能另作它用,自己定義的標識符(如變量名)不能和關鍵字相同。并且關鍵字在源程序加入KeilC51項目文件以后顏色和其它內容不同,很容易區(qū)別。數(shù)據(jù)類型、常量和變量

KeilC51的數(shù)據(jù)類型和TC類似,也分為基本型和復合數(shù)據(jù)類型,主要使用基本類型中的char,int,float等,除了基本類型,KeilC51還擴展了bit,sbit,sfr,sfr16四種變量類型,其中bit和sbit也是常用的數(shù)據(jù)類型。KeilC51支持的數(shù)據(jù)類型08:40數(shù)據(jù)類型數(shù)據(jù)類型關鍵詞長度值域字符型signedchar1字節(jié)-128~+127無符號字符型unsignedchar1字節(jié)0~255整型signedint2字節(jié)-32768~+32867無符號整型unsignedint2字節(jié)0~65535長整型signedlong4字節(jié)-2147483648~+2147483647無符號長整型unsignedlong4字節(jié)0~4294967295浮點型float4字節(jié)±1.176E-38~±3.40E+38指針*1~3字節(jié)對象地址位bit1位0或1特殊功能寄存器位sbit1位0或1特殊功能寄存器sfr1字節(jié)0~25516位特殊功能寄存器sfr162字節(jié)0~65535①位常量它的值是一個二進制數(shù),為0或者1②整型常量

在C51中整型常量可以表示成以下幾種形式:十進制整數(shù)。如123、0、-89等。十六進制整數(shù)。以0x開頭表示,如0x34,-0x3B、0x1234、0xABFC等長整數(shù)。在整數(shù)后面加字母L,如104L在存儲器中占四個字節(jié)。④字符型常量字符型常量是用單引號引起的字符,如‘a(chǎn)’、‘9’、‘F’等。對于字符型常量,在單片機中用ASCII碼表示。例如

unsignedchara;a=‘9’;與a=0x39;等效⑤字符串型常量字符串型常量由雙引號“”括起的字符組成。如“D”、“1234”、“ABCD”等。注意字符串常量與字符常量是不一樣一個字符常量在計算機內只用一個字節(jié)存放一個字符串常量在內存中存放時不僅雙引號內的字符一個占一個字節(jié),而且系統(tǒng)會自動的在后面加一個轉義字符“\0”作為字符串結束符。不要將字符常量和字符串常量混淆,如字符常量‘A’和字符串常量“A”是不一樣的。(2)變量變量是一種在程序執(zhí)行過程中其值能不斷變化的量。變量必須先定義后使用變量的定義格式[存儲種類]數(shù)據(jù)類型

[存儲器類型]變量名表;auto(自動變量)extern(外部變量)static(靜態(tài)變量)register(寄存器變量)charunsignedcharintunsignedintsbitbitdata(片內數(shù)據(jù)存儲器)xdata(片外數(shù)據(jù)存儲器)code(程序存儲器)存儲器類型省略,表示變量存放在片內數(shù)據(jù)存儲器內變量名可以由字母、數(shù)字和下劃線三種字符組成,且第一個字母必須為字母或下劃線。變量名有兩種:普通變量名和指針變量名。它們的區(qū)別是指針變量名前面要帶“*”號。2.3.2.3運算符和表達式運算符名運算符算術運算符+-*/%++--關系運算符><==>=<=!=邏輯運算符!&&||位運算符<<>>~&|^賦值運算符=條件運算符?:逗號運算符,指針運算符*&求字節(jié)數(shù)運算符sizeof強制類型轉換運算符(類型)下標運算符[]函數(shù)調用運算符()①賦值運算符使用“=”的賦值語句格式如下:變量=表達式;

例如:a=0xFF;//將常數(shù)十六進制數(shù)0xFF賦與變量ab=c=33;//同時賦值給變量b,c

d=e;//將變量e的值賦與變量d②算術運算符+

加或取正值運算符-

減或取負值運算符*乘運算符/

除運算符%

取余運算符++(變量自加1)--

(變量自減1)整數(shù)相除還是整數(shù)計算機中存儲數(shù)據(jù)是一個一個固定的電路結構,整數(shù)和實數(shù)存儲的方式不一樣,所以整數(shù)在運算后只能得到整數(shù)。08:40舉例:除和取余運算符的應用例1:獲取一個16位數(shù)的高8位和低8位數(shù)單片機典型應用:定時器送計數(shù)初值TH0=(65536-1000)/256;//送計數(shù)值高八位給TH0TL0=(65536-1000)%256;//送計數(shù)值高八位給TL0例2:獲取十進制數(shù)的BCD碼單片機典型應用:將數(shù)碼管顯示的數(shù)字進行數(shù)位分解,例如:unsignedinta=1234;unsignedchard[4];d[0]=a/1000;//取出千位數(shù)字d[1]=(a/100)%10;//取出百位數(shù)字d[2]=(a/10)%10;//取出十位數(shù)字d[3]=a%10;//取出個位數(shù)字(3)分支語句基本if語句if-else語句if-elseif語句(a)基本if語句基本if語句的格式如下:if(條件表達式){

語句組;

}(b)if-else語句if-else語句的一般格式如下:if(條件表達式){

語句組1;

}else{

語句組2;

}(c)if-else-if語句if-else-if語句一般格式如下:if(條件表達式1){

語句組1;}elseif(條件表達式2){

語句組2} …elseif(條件表達式n){語句組n;}else{語句組n+1;}多分支選擇的switch語句,其一般形式如下:

switch(表達式){ case常量表達式1:語句組1;break; case常量表達式2:語句組2;break;

…… case常量表達式n:語句組n;break;default:語句組n+1;break;}(4)多分支語句(5)循環(huán)語句循環(huán)程序的作用是:對給定的條件進行判斷,當給定的條件成立時,重復執(zhí)行給定的程序段,直到條件不成立時為止。給定的條件稱為循環(huán)條件需要重復執(zhí)行的程序段稱為循環(huán)體循環(huán)語句包括while語句(當型循環(huán))do-while語句(直到型循環(huán))for語句(for循環(huán))while語句用來實現(xiàn)“當型”循環(huán),執(zhí)行過程:首先判斷表達式,當表達式的值為真(非0)時,反復執(zhí)行循環(huán)體。為假(0)時執(zhí)行循環(huán)體外面的語句。循環(huán)體循環(huán)繼續(xù)的條件表達式下一條語句非0(真)0(假)循環(huán)體語句組while執(zhí)行過程格式:while(循環(huán)繼續(xù)的條件表達式)

{

語句組;}花括號不能丟掉!請問:下述程序實現(xiàn)了什么功能?main(){inti,sum=0;while(i<=10){sum=sum+i;i++;}}(a)while語句注意:如果循環(huán)條件一開始就為假,那么while后面的循環(huán)體一次都不會被執(zhí)行While(1)為無限循環(huán)(死循環(huán)),因此while(1)只出現(xiàn)在主函數(shù)中。do-while語句用來實現(xiàn)“直到型”循環(huán)執(zhí)行過程:先無條件執(zhí)行一次循環(huán)體,然后判斷條件表達式,當表達式的值為真(非0)時,返回執(zhí)行循環(huán)體直到條件表達式為假(0)為止。絕對不能少分號!循環(huán)體格式:do{

循環(huán)體語句組;

}while(循環(huán)繼續(xù)條件);花括號不能丟掉!循環(huán)繼續(xù)的條件表達式下一條語句非0(真)0(假)循環(huán)體語句組請問:下述程序實現(xiàn)了什么功能?main(){inti,sum=0;do{sum=sum+i;i++;}while(i<=100);}(b)do-while語句for語句的一般形式:

for(循環(huán)變量賦初值;循環(huán)繼續(xù)條件;循環(huán)變量增值)

{

循環(huán)體語句組;

}

分隔符為分號(c)for語句

循環(huán)繼續(xù)條件for的下一條語句非0(真)0(假)循環(huán)體語句組循環(huán)變量賦初值循環(huán)變量增值for語句循環(huán)執(zhí)行過程只求解一次要執(zhí)行若干次,具體次數(shù)由“循環(huán)繼續(xù)條件”決定for語句不僅可用于循環(huán)次數(shù)已經(jīng)確定的情況,也可用于循環(huán)次數(shù)雖不確定,但給出了循環(huán)繼續(xù)條件的情況,它完全可以代替while語句和do-while語句。單片機KeilC51程序結構

KeilC51

程序以函數(shù)形式組織程序結構,C程序中的函數(shù)與其他語言中所描述的“子程序”或“過程”的概念是一樣的。

C程序基本結構一個C語言源程序是由一個或若干個函數(shù)組成,每一個函數(shù)完成相對獨立的功能。每個C程序都必須有(且僅有)一個主函數(shù)main(),程序的執(zhí)行總是從主函數(shù)開始,調用其他函數(shù)后返回主函數(shù)main(),不管函數(shù)的排列順序如何,最后在主函數(shù)中結束整個程序。C語言程序中可以有預處理命令,預處理命令通常放在源程序的最前面。C語言程序使用“;”作為語句的結束符,一條語句可以多行書寫,也可以一行書寫多條語句。單片機KeilC51程序的三種基本控制結

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論