第一章單片機及基礎(chǔ)知識_第1頁
第一章單片機及基礎(chǔ)知識_第2頁
第一章單片機及基礎(chǔ)知識_第3頁
第一章單片機及基礎(chǔ)知識_第4頁
第一章單片機及基礎(chǔ)知識_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 1單片機原理及應(yīng)用單片機原理及應(yīng)用任課教師:任課教師:李念強教授李念強教授辦公室:辦公室: 電子信息教研中心電子信息教研中心 12J30212J302Tel: Tel: 1386407692813864076928E-mail: E-mail: ise_ise_ 2學習方法:學習方法:理論與實踐相結(jié)合理論與實踐相結(jié)合注重學習書本知識的同時加強實際練習。注重學習書本知識的同時加強實際練習。考試方法:考試方法: 總成績總成績= =期末考試成績期末考試成績* *70%+70%+平時成績平時成績* *10%+20%10%+20%* *實驗成績實驗成績 平時成績平時成績= =考勤成績考勤成績* *50

2、%+50%+作業(yè)成績作業(yè)成績* *50%50% 3 1.1 單片機概述單片機概述 1.2 數(shù)制與編碼數(shù)制與編碼 1.3 單片機單片機C語言程序設(shè)計基礎(chǔ)語言程序設(shè)計基礎(chǔ)圖圖1-1 單片機常見的幾種封裝圖單片機常見的幾種封裝圖4 單片微型計算機(Single Chip Microcomputer)簡稱單片機。它是把組成微型計算機的各功能部件,如中央處理器(CPU)、隨機存取存儲器(RAM)、只讀存儲器(ROM)、I/O接口電路、定時器/計數(shù)器以及串行通信接口等部件制作在一塊集成芯片中,構(gòu)成一個完整的微型計算機。圖1-1是單片機常見的幾種封裝圖。a)DIPa)DIPb) PQFP/TQFPb) PQ

3、FP/TQFPc) PLCCc) PLCC封裝封裝 5 第一階段(19711974年):4位單片機階段。 第二階段(19741978年):初級單片機階段。 第三階段(19781983年):高性能單片機階段。 第四階段(1983N):20世紀90年代以后,單片機獲得了飛速的發(fā)展。 單片機的產(chǎn)生與發(fā)展和微處理器的產(chǎn)生與發(fā)展大體上同步,也經(jīng)歷4個階段:1971年11月,美國Intel公司生產(chǎn)出集成度為2000只晶體管/片的4位微處理器Intel 40041972年Intel推出雛形8位微處理器Intel 8008,研制單片機的序幕由此拉開1973年Intel推出8位微處理器Intel 8080197

4、4年,TI公司推出TMS1000單片機,并成功用于TI公司的高速反雷達導航器。1976年,Intel公司的MCS-48系列8位單片機研制成功,獲得了廣泛的應(yīng)用,成為單片機發(fā)展進程中的一座里程碑。20世紀80年代初,Intel公司在MCS-48系列單片機的基礎(chǔ)上,推出了MCS-51系列8位高檔單片機。1986年以后16位單片機MCS-96系列問世(Intel公司的MCS-96系列),其比8位性能更高,適用于更復雜的控制系統(tǒng)。Atmel公司的AT89、AT90系列;宏晶科技的STC系列單片機;Microchip公司的PIC單片機;TI公司的TMS370、MSP430系列;凌陽的16位單片機 等,進

5、入了百花齊放,百家爭鳴的時期。 61. 單片機的應(yīng)用領(lǐng)域:單片機的應(yīng)用領(lǐng)域: 制作智能儀器儀表制作智能儀器儀表 工業(yè)控制工業(yè)控制 e-Home 計算機網(wǎng)絡(luò)和通信領(lǐng)域計算機網(wǎng)絡(luò)和通信領(lǐng)域 利用單片機制作精密醫(yī)用設(shè)備利用單片機制作精密醫(yī)用設(shè)備2.2.今后的發(fā)展趨勢今后的發(fā)展趨勢 多功能多功能 高性能高性能 低電壓、低功耗低電壓、低功耗 低價格低價格 7 1.2 數(shù)制與編碼數(shù)制與編碼I. 了解進制數(shù)了解進制數(shù) 二進制數(shù)有運算簡單、便于物理實現(xiàn)、節(jié)省設(shè)備等優(yōu)點,所以目前在計算機中數(shù)都是采用二進制數(shù)表示。但是二進制數(shù)書寫起來太長,且不便閱讀和記憶。目前大部分微型機是8位、16位或32位的,都是4的整數(shù)倍

6、,而4位二進制數(shù)即是1位十六進制數(shù),所以微型機廣泛采用十六進制數(shù)來縮寫二進制數(shù)。十六進制數(shù)用09、AF共16個數(shù)碼表示十進制數(shù)015。1個8位的二進制數(shù)用2位十六進制數(shù)表示,1個16位的二進制數(shù)用4位十六進制數(shù)表示等。這樣書寫方便,且便于閱讀和記憶。 進制數(shù)代表符號進制數(shù)代表符號: B(Binary)二進制; O(Octal)八進制; D(Decimal)或不加十進制;H(Hexadecimal)十六進制。 8II. 各種進制數(shù)轉(zhuǎn)換成十進制數(shù)各種進制數(shù)轉(zhuǎn)換成十進制數(shù) 各種進制數(shù)轉(zhuǎn)換成十進制數(shù)的方法是:將各進制數(shù)先按權(quán)展多項式,再利用十進制運算法則求和,即可得到該數(shù)對應(yīng)的十進制數(shù)?!纠?-1】

7、 將二進制數(shù)1001.101轉(zhuǎn)換為十進制數(shù)。解:1001.101B =123+022+021+120+12-1+02-2+12-3 =8+1+0.5+0.125=9.625III. 十進制數(shù)轉(zhuǎn)換為二、八、十六進制數(shù)十進制數(shù)轉(zhuǎn)換為二、八、十六進制數(shù)1)整數(shù)部分轉(zhuǎn)換。十進制整數(shù)轉(zhuǎn)換成M進制數(shù)可用除M取余法,即用M不斷地除待轉(zhuǎn)換的十進制數(shù),直到商等于0為止。將所得的各次余數(shù)依倒序排列,即可得到所轉(zhuǎn)換的M進制整數(shù)。 2)小數(shù)部分轉(zhuǎn)換。十進制小數(shù)轉(zhuǎn)換成M進制數(shù)可用乘M取整法,即用M不斷地乘待轉(zhuǎn)換的十進制數(shù),直到積等于0為止。將所得的各次整數(shù)依順序排列,即可得到所轉(zhuǎn)換的M進制小數(shù)。 9【例例1-2】 將十

8、進制數(shù)將十進制數(shù)168.686轉(zhuǎn)換為十六進制數(shù)。轉(zhuǎn)換為十六進制數(shù)。解:分析:十進制數(shù)168.686既有整數(shù)又有小數(shù),所以要分為兩步轉(zhuǎn)換。整數(shù)部分168采用除16取余法: 16 168 16 10 余數(shù)8, K0=8 0 余數(shù)10, K1=A 168=A8H小數(shù)部分0.686采用乘16取整法: 0.68616=10.976 K-1=A 0.97616=15.616 K-2=F 0.61616=9.856 K-3=9 0.85616=13.696 K-4=D 0.69616=11.136 K-5=B 0.6860.AF9DBH把整數(shù)和小數(shù)部分結(jié)合起來即為最后結(jié)果168.686A8. AF9DBH

9、101.2.2 二進制數(shù)的算術(shù)運算二進制數(shù)的算術(shù)運算二進制數(shù)不僅物理上容易實現(xiàn),而且算術(shù)運算也比較簡單,其加、減法遵循“逢2進1”、“借1當2”的原則。1二進制加法1位二進制數(shù)的加法規(guī)則如下: 0+0=0 0+1=1 1+0=1 1+1=10(有進位) 2二進制減法1位二進制數(shù)減法規(guī)則如下: 1-0=1 1-1=0 0-0=0 0-1=1(有借位)3二進制乘法1位二進制乘法規(guī)則如下: 00=0 01=0 10=0 11=14二進制除法二進制除法的運算過程類似于十進制除法的運算過程。 111.2.3 二進制數(shù)的邏輯運算二進制數(shù)的邏輯運算1“與”運算(AND)“與”運算又稱邏輯乘,運算符為或。“與

10、”運算的規(guī)則如下: 00=0 01=10=0 11=12“或”運算(OR)“或”運算又稱邏輯加,運算符為+或。“或”運算的規(guī)則如下: 0+0=0 0+1=1+0=1 1+1=13“非”運算(NOT)“非”運算又稱邏輯非,如變量A的“非”運算記作?!胺恰边\算的規(guī)則如下: 4“異或”運算(XOR)“異或”運算的運算符為,其運算規(guī)則如下: 00=0 01=10=1 11=0 121.2.4 1.2.4 帶符號數(shù)的表示方法帶符號數(shù)的表示方法原碼、反碼、補碼原碼、反碼、補碼 在前面討論的二進制數(shù)運算均為無符號數(shù)運算,但實際的數(shù)值是帶有符號的,既可能是正數(shù),也可能是負數(shù),前者符號用“+”號表示,后者符號用

11、“-”號表示,運算的結(jié)果也可能是正數(shù),也可能是負數(shù)。 由于計算機只能識別0和1,因此,在計算機中通常把一個二進制數(shù)的最高位作為符號位,以表示數(shù)值的正與負(若用8位表示一個數(shù),則D7位為符號位;若用16位表示一個數(shù),則D15位為符號位),并用0表示“+”;用1表示“-”。 131原碼原碼 正數(shù)的符號位用0表示,負數(shù)的符號位用1表示,數(shù)值部分用真值的絕對值來表示的二進制數(shù)稱之為原碼。2反碼反碼 一個正數(shù)的反碼,等于該數(shù)的原碼;一個負數(shù)的反碼,等于該負數(shù)的原碼符號位不變(即為1),數(shù)值位按位求反(即0變1,1變0)。 3補碼補碼 正數(shù)的補碼與原碼相同;負數(shù)的補碼為該負數(shù)的原碼符號位不變,數(shù)值位逐位求

12、反并在末位加1。14u 正數(shù)的原碼、反碼、補碼就是該數(shù)本身。u 負數(shù)的原碼其符號位為1,數(shù)值位不變。u 負數(shù)的反碼其符號位為1,數(shù)值位逐位求反。u 負數(shù)的補碼其符號位為1,數(shù)值位逐位求反并在末位加1。 【例例1-3】 假設(shè)X1=+83, X2=-76,當用8位二進制數(shù)表示一個數(shù)時,求X1、X2的原碼、反碼及補碼。 解:X1原=X1反=X1補=01010011BX2原=11001100B X2反=10110011B X2補=X反+1=10110100B 15定點數(shù)和浮點數(shù)的概念定點數(shù)和浮點數(shù)的概念 計算機處理的數(shù)值數(shù)據(jù)多數(shù)帶有小數(shù),小數(shù)點在計算機中通常有兩種表示方法,一種是約定所有數(shù)值數(shù)據(jù)的小數(shù)

13、點隱含在某一個固定位置上,稱為定點表示法,簡稱定點數(shù); 另一種是小數(shù)點位置可以浮動,稱為浮點表示法,簡稱浮點數(shù)。 161定點表示法定點表示法所謂定點表示法,即約定機器中所有數(shù)據(jù)的小數(shù)點位置是固定不變的。在計算機中通常采用兩種簡單的約定:將小數(shù)點的位置固定在數(shù)據(jù)的最高位之前,或者是固定在最低位之后。一般常稱前者為定點小數(shù),后者為定點整數(shù)。定點小數(shù)是純小數(shù),約定的小數(shù)點位置在符號 位之后、有效數(shù)值部分最高位之前。若數(shù)據(jù)x的形式為x = x0.x1x2xn(其中x0為符號位,x1xn是數(shù)值的有效部分,也稱為尾數(shù),x1為最高有效位),則在計算機中的表示形式為 17一般說來,如果最末位xn = 1,前面

14、各位都為0,則數(shù)的絕對值最小,即|x|min = 2-n。如果各位均為1,則數(shù)的絕對值最大,即 |x|max =1-2-n。所以定點小數(shù)的表示范圍為2-n|x|1-2-n定點整數(shù)是純整數(shù),約定的小數(shù)點位置在有效數(shù)值部分最低位之后。若數(shù)據(jù)x的形式為x = x0 x1x2xn(其中x0為符號位,x1xn是尾數(shù),xn為最低有效位),則在計算機中的表示形式為定點整數(shù)的表示范圍為 1|x|2n-1 當數(shù)據(jù)小于定點數(shù)能表示的最小值時,計算機將它們作0處理,稱為下溢;大于定點數(shù)能表示的最大值時,計算機將無法表示,稱為上溢。上溢和下溢統(tǒng)稱為溢出。 計算機采用定點數(shù)表示時,對于既有整數(shù)又有小數(shù)的原始數(shù) 據(jù),需要

15、設(shè)定一個比例因子,數(shù)據(jù)按其縮小成定點小數(shù)或擴大成定點整數(shù)再參加運算。運算結(jié)果根據(jù)比例因子還原成實際數(shù)值。若比例因子選擇不當,往往會使運算結(jié)果產(chǎn)生溢出或降低數(shù)據(jù)的有效精度。用定點數(shù)進行運算處理的計算機被稱為定點機。 18 192浮點表示法浮點表示法與科學計數(shù)法相似,任意一個J進制數(shù)N,總可以寫成 N = JEM 式中,M稱為數(shù)N的尾數(shù)(Mantissa),是一個純小數(shù);E為數(shù)N的階碼(Exponent),是一個整數(shù);J稱為比例因子JE的底數(shù)。這種表示方法相當于數(shù)的小數(shù)點位置隨比例因子的不同而在一定范圍內(nèi)可以自由浮動,所以稱為浮點表示法。 底數(shù)是事先約定好的(常取2),在計算機中不出現(xiàn)。在機器中表

16、示一個浮點數(shù)時,一是要給出尾數(shù),用定點小數(shù)形式表示。尾數(shù)部分給出有效數(shù)字的位數(shù),因而決定了浮點數(shù)的表示精度。 20 二是要給出階碼,用整數(shù)形式表示,階碼指明小數(shù)點在數(shù)據(jù)中的位置,因而決定了浮點數(shù)的表示范圍。浮點數(shù)也要有符號位。因此一個機器浮點數(shù)應(yīng)當由階碼和尾數(shù)及其符號位組成: 其中ES表示階碼的符號,占一位;E1En為階碼值,占n位;尾符是數(shù)N的符號,也要占一位。當?shù)讛?shù)取2時,二進制數(shù)N的小數(shù)點每右移一位,階碼減小1,相應(yīng)尾數(shù)右移一位;反之,小數(shù)點每左移一位,階碼加1,相應(yīng)尾數(shù)左移一位。 若不對浮點數(shù)的表示作出明確規(guī)定,同一個浮點數(shù)的表示就不是唯一的。例如11.01也可以表示成 0.01101

17、2-3,0.11012-2 等。為了提高數(shù)據(jù)的表示精度,當尾數(shù)的值不為0時,其絕對值應(yīng)大于等于0.5,即尾數(shù)域的最高有效位應(yīng)為1,否則要以修改階碼同時左右移小數(shù)點的方法,使其變成這一要求的表示形式,這稱為浮點數(shù)的規(guī)格化表示。 21 當一個浮點數(shù)的尾數(shù)為0時,不論其階碼為何值,或者當階碼的值遇到比它能表示的最小值還小時,不管其尾數(shù)為何值,計算機都把該浮點數(shù)看成0值,稱為機器零。 浮點數(shù)所表示的范圍比定點數(shù)大。假設(shè)機器中的數(shù)由8位二進制數(shù)表示(包括符號位):在定點機中這8位全部用來表示有效數(shù)字(包括符號);在浮點機中若階符、階碼占3位,尾符、尾數(shù)占5位,在此情況下,若只考慮正數(shù)值,定點機小數(shù)表示的

18、數(shù)的范圍是0.00000000.1111111,相當于十進制數(shù)的0127/128,而浮點機所能表示的數(shù)的范圍則是2-110.00012110.1111 ,相當于十進制數(shù)的1/1287.5。顯然,都用8位,浮點機能表示的數(shù)的范圍比定點機大得多。 盡管浮點表示能擴大數(shù)據(jù)的表示范圍,但浮點機在運算過程中仍會出現(xiàn)溢出現(xiàn)象。 221.2.6 BCD碼和碼和ASCII碼碼1BCD碼(Binary Coded Decimal) 二進制數(shù)以其物理易實現(xiàn)和運算簡單的優(yōu)點在計算機中得到了廣泛應(yīng)用,但人們?nèi)粘A晳T最熟悉的還是十進制。為了既滿足人們的習慣,又能讓計算機接受,便引入了BCD碼。它用二進制數(shù)碼按照不同規(guī)律

19、編碼來表示十進制數(shù),這樣的十進制數(shù)的二進制編碼,既具有二進制的形式,又具有十進制的特點,便于傳遞處理。 1位十進制數(shù)有09共10個不同數(shù)碼,需要由4位二進制數(shù)來表示。4位二進制數(shù)有16種組合,取其10種組合分別代表10個十進制數(shù)碼。最常用的方法是8421BCD碼,其中8、4、2、1分別為4位二進制數(shù)的位權(quán)值。表1-1給出了十進制數(shù)和8421BCD碼的對應(yīng)關(guān)系。 23表表1-1 十進制數(shù)和十進制數(shù)和8421BCD碼的對應(yīng)關(guān)系碼的對應(yīng)關(guān)系十進制數(shù)8421BCD碼十進制數(shù)8421BCD碼0123456700000001001000110100010101100111 89101112131415 1

20、00010010001 00000001 00010001 00100001 00110001 01000001 0101 242BCD碼運算及十進制調(diào)整碼運算及十進制調(diào)整若想讓計算機直接用十進制的規(guī)律進行運算,則將數(shù)據(jù)用BCD碼來存儲和運算即可。但是,8421BCD碼可表示數(shù)的范圍為00001111(即十進制的015),而十進制數(shù)為00001001(即09)。所以在運算時必須注意以下兩點: 當兩個BCDD碼相加結(jié)果大于1001(即大于十進制數(shù)9)時,為使其符合十進制運算和進位規(guī)律,需對BCD碼的二進制運算結(jié)果加0110(加6)調(diào)整。 例如: 4+8=(0100)BCD+(1000)BCD=(

21、1100)BCD1001,調(diào)整后其結(jié)果為(1100)BCD+ (0110)BCD = (00010010)BCD=12。 當兩個BCD碼相加結(jié)果在本位上并不大于1001,但有低位進位發(fā)生,使得兩個BCD碼與進位一起相加,其結(jié)果大于1001,這時也要作加0110(加6)調(diào)整。25【例例1-4】 用BCD碼完成54+48的運算。解:54=(01010100)BCD,48=(01001000)BCD54+48 =(01010100)BCD+(01001000)BCD=(000100000010)BCD =102計算過程如圖1-2:圖1-2 BCD碼加法 263ASCII碼碼在計算機的應(yīng)用過程中,如操

22、作系統(tǒng)命令,各種程序設(shè)計語言以及計算機運算和處理信息的輸入輸出,經(jīng)常用到某些字母、數(shù)字或各種符號,如英文字母的大、小寫;09數(shù)字符;+、-、*、/運算符;、= 關(guān)系運算符等。但在計算機內(nèi),任何信息都是用代碼表示的,因此,這些符號也必須要有自己的編碼。 ASCII碼采用7位二進制數(shù)對字符進行編碼,它包括10個十進制數(shù)09;大寫和小寫英文字母各26個;32個通用控制符號;34個專用符號,共128個字符。其中數(shù)字09的ASCII編碼分別為30H39H,英文大寫字母AZ的ASCII編碼從41H開始依次編至5AH。ASCII編碼從20H7EH均為可打印字符,而00H1FH為通用控制符,它們不能被打印出來

23、,只起控制或標志的作用,如0DH表示回車(CR),0AH表示換行控制(LF),04H(EOT)為傳送結(jié)束標志。 271.3 單片機單片機C語言程序設(shè)計基礎(chǔ)語言程序設(shè)計基礎(chǔ)C語言是一種編譯型程序設(shè)計語言,它兼顧了多種高級語言的特點,并具備匯編語言的功能。很多硬件開發(fā)都用C語言編程,如各種單片機、DSP、ARM等。C語言程序本身不依賴于機器硬件系統(tǒng),基本上不做修改就可將程序從不同的單片機中移植過來。C語言提供了很多數(shù)學函數(shù)并支持浮點運算,開發(fā)效率高,故可縮短開發(fā)時間,增加程序可讀性和可維護性。目前,使用C語言進行程序設(shè)計已經(jīng)成為軟件開發(fā)的一個主流。而針對8051的C語言日趨成熟,成為了專業(yè)化的實用

24、高級語言。1.3.1 C51的數(shù)據(jù)類型的數(shù)據(jù)類型 1變量的數(shù)據(jù)類型選擇變量的數(shù)據(jù)類型選擇 1) 若能預(yù)算出變量的變化范圍,則可根據(jù)變量長度來選擇變量的類型,盡量減少變量的長度。 2)如果程序中不需使用負數(shù),則選擇無符號數(shù)類型的變量。 3)如果程序中不需使用浮點數(shù),則要避免使用浮點數(shù)變量。28類類 型型關(guān)關(guān) 鍵鍵 字字所占位數(shù)所占位數(shù)字節(jié)數(shù)字節(jié)數(shù)數(shù)數(shù) 值值 范范 圍圍位型位型bit80或或1整型整型(signed) int16- -3276832767(signed) short162- -3276832767(signed) long324- -21474836482147483647unsi

25、gned int162065535unsigned short int162065535unsigned long int32404294967295實型實型float3243.4e- -383.4e38double6481.7e- -3081.7e308字符型字符型Char81- -128127unsigned char810255指針型指針型data/idata/pdata811表表1-2 C51的數(shù)據(jù)類型的數(shù)據(jù)類型 29表1-2中,bit、sbit、sfr、sfr16是C51的擴充定義,其中:sfr:特殊功能寄存器聲明。sfr16:sfr的16位數(shù)據(jù)聲明。sbit:特殊功能位聲明。bit

26、:位變量聲明。例:sfr SCON = 0X98; sfr16 T2 = 0 xCC; sbit OV = PSW2;類類 型型關(guān)關(guān) 鍵鍵 字字所占位所占位數(shù)數(shù)字節(jié)數(shù)字節(jié)數(shù)數(shù)數(shù) 值值 范范 圍圍指針型指針型code/xdata1622字節(jié)地址字節(jié)地址通用指針通用指針243其中其中1字節(jié)為存儲器類型編碼,字節(jié)為存儲器類型編碼,2、3字節(jié)為地址偏移量字節(jié)為地址偏移量訪問訪問SFR的的數(shù)據(jù)數(shù)據(jù)類型類型sbit810或或1sfr810255sfr16162065535(續(xù)) 302數(shù)據(jù)類型之間的轉(zhuǎn)換數(shù)據(jù)類型之間的轉(zhuǎn)換 在C語言程序的表達式或變量的賦值運算中,有時會出現(xiàn)運算對象的數(shù)據(jù)類型不一樣的情況,C

27、語言程序允許在標準數(shù)據(jù)類型之間隱式轉(zhuǎn)換,隱式轉(zhuǎn)換按以下優(yōu)先級別(由低到高)自動進行:bitcharintlongfloatsignedunsigned 一般來說,如果有幾個不同類型的數(shù)據(jù)同時運算,先將低級別類型的數(shù)據(jù)轉(zhuǎn)換成高級別類型,再做運算處理,并且運算結(jié)果為高級別類型數(shù)據(jù)。 C語言中圓括號“()”也作為強制數(shù)據(jù)類型轉(zhuǎn)換運算符,它的作用是將表達式或變量的數(shù)據(jù)類型強制轉(zhuǎn)換為所指定的類型。在算術(shù)運算時有兩種轉(zhuǎn)換方式,即隱式轉(zhuǎn)換與顯式轉(zhuǎn)換。 隱式轉(zhuǎn)換僅適用于C語言中的基本數(shù)據(jù)類型間的類型轉(zhuǎn)換。當涉及非基本數(shù)據(jù)類型的類型轉(zhuǎn)換時,必須利用強制類型轉(zhuǎn)換運算符進行顯式轉(zhuǎn)換。 強制類型轉(zhuǎn)換運算的一般格式為(

28、類型)(表達式)例如:(double)a; 將a轉(zhuǎn)換為double數(shù)據(jù)類型。 (續(xù))311.3.2 C51的運算符與表達式的運算符與表達式 C51的運算符與表達式包括算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符、指針運算符、賦值運算符、逗號運算符、條件運算符、sizeof運算符,見表1-3。算數(shù)運算數(shù)運算符算符含含 義義表表 達達 式式說說 明明+加法加法a+ba變量值和變量值和b變量值相加變量值相加- -減法減法a- -ba變量值和變量值和b變量值相減變量值相減*乘法乘法a*ba變量值乘以變量值乘以b變量值變量值/除法除法a/ba變量值除以變量值除以b變量值變量值%求余求余a%ba變量值除以

29、變量值除以b變量值的余數(shù)變量值的余數(shù) 32(續(xù))(續(xù))算數(shù)運算符算數(shù)運算符含含 義義表表 達達 式式說說 明明+ +自增自增a+ +;+ +aa先運算再加先運算再加1;a先加先加1再運算再運算- - - -自減自減a- - - -;- - - -aa先運算再減先運算再減1;a先減先減1再運算再運算 大于大于ab測試測試a是否大于是否大于b=大于等于大于等于a=b測試測試a是否大于或等于是否大于或等于b 小于小于ab測試測試a是否小于是否小于b=小于等于小于等于a 按位右移按位右移ab將將a按位右移按位右移b個位,高位補個位,高位補0 按位左移按位左移a=右移位賦值右移位賦值a=ba=ab,a右

30、移右移b位后再賦給位后再賦給a=左移位賦值左移位賦值a=ba=ab,a左移左移b位后再賦給位后再賦給a=邏輯非賦值邏輯非賦值=a等同于等同于a=a,逗號運算符逗號運算符表達式表達式1,表達式,表達式2表達式表達式n把若干表達式組合成一個表達式把若干表達式組合成一個表達式sizeof求字節(jié)數(shù)運算求字節(jié)數(shù)運算符符sizeof(表達式)(表達式)表達式可以是數(shù)據(jù)類型、變量、常量或表達式,求出其字表達式可以是數(shù)據(jù)類型、變量、常量或表達式,求出其字節(jié)數(shù)節(jié)數(shù) 341.3.3 C51的輸入的輸入/輸出輸出1基本輸入函數(shù)getkey getkey函數(shù)是基本的字符輸入函數(shù),原型為char getkey(void

31、) 函數(shù)功能:從單片機串行口讀入一個字符,如果沒有字符輸入則等待,返回值為讀入的字符,不顯示。可重入函數(shù)。字符輸入函數(shù)getchar()功能:與getkey基本相同,唯一的區(qū)別:還要從串行口返回字符。2基本輸出函數(shù)putchar putchar函數(shù)是基本的字符輸出函數(shù),其原型為char putchar(char)函數(shù)功能:是從單片機的串行口輸出一個字符,返回值為輸出的 字符。putchar為可重入函數(shù)。 353格式輸出函數(shù)printf 函數(shù)功能:通過單片機的串行口輸出若干任意類型的數(shù)據(jù)。格式如下:printf(格式控制,輸出參數(shù)表); 格式控制:是用雙引號括起來的字符串,也稱為轉(zhuǎn)換控制字符串,

32、它包括3種信息:格式說明符、普通字符、轉(zhuǎn)義字符。 1)格式說明符:由百分號“%”和格式字符組成,其作用是指明輸出數(shù)據(jù)的格式,如%d、%c、%s等,詳細情況見表1-4。2)普通字符:這些字符按原樣輸出,主要用來輸出一些提示信息。3)轉(zhuǎn)義字符:由“”和字母或字符組成,它的作用是輸出特定的控制符,如轉(zhuǎn)義字符n的含義是輸出換行,詳細情況見表1-5。 36表表1- -4 printf函數(shù)的格式字符函數(shù)的格式字符格格 式式 字字 符符數(shù)數(shù) 據(jù)據(jù) 類類 型型輸輸 出出 格格 式式dint有符號十進制數(shù)有符號十進制數(shù)uint無符號十進制數(shù)無符號十進制數(shù)oint無符號八進制數(shù)無符號八進制數(shù)x,Xint無符號十六

33、進制數(shù)無符號十六進制數(shù)ffloat十進制浮點數(shù)十進制浮點數(shù)e,Efloat科學計數(shù)法的十進制浮點數(shù)科學計數(shù)法的十進制浮點數(shù)g,Gfloat自動選擇自動選擇e或或f格式格式cchar單個字符單個字符s指針指針帶結(jié)束符的字符串帶結(jié)束符的字符串 37表表1- -5 常用的轉(zhuǎn)義字符常用的轉(zhuǎn)義字符轉(zhuǎn)轉(zhuǎn) 義義 字字 符符含含 義義ASCII碼碼轉(zhuǎn)轉(zhuǎn) 義義 字字 符符含含 義義ASCII碼碼0空字符空字符0 x00f換頁符換頁符0 x0cn換行符換行符0 x0a單引號單引號0 x27r回車符回車符0 x0d”雙引號雙引號0 x22t水平制水平制表表0 x09反斜杠反斜杠0 x5cb退格符退格符0 x08 3

34、84格式輸入函數(shù)scanf函數(shù)的功能:通過單片機串行口實現(xiàn)各種數(shù)據(jù)輸入。函數(shù)格式如下:scanf(格式控制,地址列表)格式控制:格式控制與printf函數(shù)的類似,也是用雙引號括起來的一些字符,包括3種信息:格式說明符、普通字符和空白字符。1)格式說明符:由百分號“%”和格式字符組成,其作用是指明輸入數(shù)據(jù)的格式。 2)普通字符:在輸入時,要求這些字符按原樣輸入。3)空白字符:包括空格、制表符和換行符等,這些字符在輸入時被忽略。 39 地址列表:是由若干個地址組成,它可以是指針變量、變量地址(取地址運算符“&”加變量)、數(shù)組地址(數(shù)組名)或字符串地址(字符串名)等。 用scanf函數(shù)輸入例子(假設(shè)

35、x、y、z、c1、c2是定義過的變量,str1是定義過的指針):scanf(“%d”,&x);scanf(“%d%d”,&y,&z);scanf(“%c%c”,&c1,&c2); scanf(“%s”,str1); 在實際的串行通信中,傳輸?shù)臄?shù)據(jù)多數(shù)是字符型和字符串,以字符串居多,往往把數(shù)字型數(shù)據(jù)轉(zhuǎn)換成字符串傳輸。 401.3.4 C51基本語句基本語句C51語名與標準C語言基本相同1If選擇語言選擇語言 形式1:If (表達式)語句;形式2:If (表達式)語句1;else語句2;形式3:If (表達式1)語句1; else if(表達式2)語句2;else if(表達式3)語句3; els

36、e if(表達式m)語句m; else 語句n; 412switch/case語句語句switch(表達式)case 常量表達式1:語句1;break;case 常量表達式2:語句2;break;case 常量表達式n:語句n;break;default:語句n+1; 423循環(huán)結(jié)構(gòu)流程控制語句循環(huán)結(jié)構(gòu)流程控制語句(1)基于if和goto構(gòu)成的循環(huán)形式1:構(gòu)成當型循環(huán)loop:if(表達式) 語句goto loop; 形式2:構(gòu)成直到型循環(huán)loop:語句 if(表達式)goto loop; (2)基于while語句構(gòu)成的循環(huán)While (表達式) 語句1; 43(3)基于)基于dowhile語

37、句構(gòu)成的循環(huán)語句構(gòu)成的循環(huán)do 語句1; while(表達式);(4)基于)基于for語句構(gòu)成的循環(huán)語句構(gòu)成的循環(huán)for (表達式1;表達式2;表達式3) 語句1;(5)“死循環(huán)死循環(huán)”的實現(xiàn)的實現(xiàn)形式1:while(1) 語句;形式2:for(;);形式3:Loop:goto Loop; 444break、continue、return和和goto語句語句1)breakbreak語句既可以跳出switch結(jié)構(gòu),使程序繼續(xù)執(zhí)行switch結(jié)構(gòu)后面的一個語句,也可以從循環(huán)體中跳出循環(huán),提前結(jié)束循環(huán)而接著執(zhí)行循環(huán)結(jié)構(gòu)下面的語句。它不能用在除了循環(huán)語句和switch語句之外的任何其他語句中。for (表達式1;表達式2;表達式3) 語句1;語句2 break;語句3;2)continuecontinue語句用在循環(huán)結(jié)構(gòu)中,用于結(jié)束本次循環(huán)。for (表達式1;表達式2;表達式3) 語句1;語句2 continue;語句3; 453)return。return語句一般放在函數(shù)的最后位置,用于終止函數(shù)的執(zhí)行,并控制程序返回調(diào)用該函數(shù)時所處的位置。返回時還可以通過return語句帶回返回值。形式1:return;形式2:return (表達式);4)goto。無條件轉(zhuǎn)移。 loop:; 語句1; 語

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論