單片機原理及應用-課程實施大綱_第1頁
單片機原理及應用-課程實施大綱_第2頁
單片機原理及應用-課程實施大綱_第3頁
單片機原理及應用-課程實施大綱_第4頁
單片機原理及應用-課程實施大綱_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一、知識目標1) 掌握MCS-51系列單片機原理與內(nèi)部結(jié)構(gòu),掌握其存儲器結(jié)構(gòu)、總線結(jié)構(gòu)、指令系統(tǒng)、定時器/計數(shù)器、中斷系統(tǒng)和串行接口的相關知識點。2) 掌握MCS-51系列單片機的最小系統(tǒng)構(gòu)成及外圍接口技術。3) 掌握MCS-51系列單片機匯編指令和C51語言的指令格式、編程方法。4) 掌握MCS-51系列單片機應用設計的基本步驟、思路和方法。5) 掌握MCS-51系列單片機系統(tǒng)開發(fā)平臺的使用方法。第1章 單片機基礎知識概述單片機及其發(fā)展概況;單片機的特點和應用;單片機的發(fā)展趨勢;單片機學習的預備知識;Proteus應用簡介。第2章 MCS-51單片機的結(jié)構(gòu)及原理MCS-51單片機的結(jié)構(gòu);引腳

2、功能;存儲器結(jié)構(gòu);CPU時序和工作方式;并行I/O口。第3章 單片機的匯編語言與程序設計MCS-51指令系統(tǒng)概述;尋址方式;數(shù)據(jù)傳送類、算術運算類、邏輯運算與移位類控制轉(zhuǎn)移類、位操作類和I/O口訪問指令。第4章 單片機的C51語言C51的程序結(jié)構(gòu);C51的數(shù)據(jù)結(jié)構(gòu);C51與匯編語言的混合編程;C51仿真開發(fā)環(huán)境。第5章 單片機的中斷系統(tǒng)中斷的概念;中斷控制系統(tǒng);中斷處理過程;中斷的編程和應用舉例。第6章 單片機的定時/計數(shù)器定時/計數(shù)器的結(jié)構(gòu)與工作原理;定時/計數(shù)器的控制;定時/計數(shù)器的工作方式;定時/計數(shù)器的編程和應用。第7章 單片機的串行口及應用 串行通信概述;MCS-51的串行口控制器;

3、串口工作方式及其應用。第8章 單片機接口技術單片機的系統(tǒng)總線;簡單并行I/O口擴展;可編程并行I/O口擴展;D/A轉(zhuǎn)換與DAC0832應用;A/D轉(zhuǎn)換與ADC0809應用;開關量功率接口技術。第9章 單片機應用系統(tǒng)的設計與開發(fā)單片機系統(tǒng)的設計開發(fā)過程;單片機系統(tǒng)的可靠性技術;單片機系統(tǒng)設計開發(fā)應用舉例智能儀器;單片機串行擴展單元介紹。6.2教學重點、難點一、教學重點本課程教材的重點章是第18章,重點的知識點具體如下所列。1) 單片機的概念、特點和應用;單片機的發(fā)展趨勢;單片機學習的預備知識。2) MCS-51單片機的結(jié)構(gòu);引腳功能;存儲器結(jié)構(gòu);CPU時序和工作方式;并行I/O口。3) MCS-

4、51指令系統(tǒng)概述;尋址方式;數(shù)據(jù)傳送類、算術運算類、邏輯運算與移位類控制轉(zhuǎn)移類、位操作類和I/O口訪問指令。4) C51的程序結(jié)構(gòu);C51的數(shù)據(jù)結(jié)構(gòu);C51語言的編程應用。5) 中斷的概念;中斷控制系統(tǒng);中斷處理過程;中斷的編程和應用。6) 定時/計數(shù)器的結(jié)構(gòu)與工作原理;定時/計數(shù)器的控制;定時/計數(shù)器的工作方式;定時/計數(shù)器的編程和應用。7) 串行通信基本概念;MCS-51的串行口控制器;串口工作方式及其應用。8) 單片機的系統(tǒng)總線;簡單并行I/O口擴展;D/A轉(zhuǎn)換與DAC0832應用;A/D轉(zhuǎn)換與ADC0809應用。二、教學難點本課程屬于較為基礎的專業(yè)課,對于微機原理和C語言學得好的同學來

5、說應該不困難,下文所列的只是相對較難的知識點。1) 單片機的特點和應用;單片機的發(fā)展趨勢。2) MCS-51單片機的基本結(jié)構(gòu);引腳功能;存儲器結(jié)構(gòu);CPU時序和工作方式。3) MCS-51指令系統(tǒng)概述;尋址方式;數(shù)據(jù)傳送類、算術運算類、邏輯運算與移位類控制轉(zhuǎn)移類、位操作類和I/O口訪問指令。4) C51的程序結(jié)構(gòu);C51的數(shù)據(jù)結(jié)構(gòu);C51語言的編程應用。5) 中斷控制系統(tǒng);中斷處理過程;中斷的編程和應用。6) 定時/計數(shù)器的結(jié)構(gòu)與工作原理;定時/計數(shù)器的控制;定時/計數(shù)器的工作方式;定時/計數(shù)器的編程和應用。7) 串行通信基本概念;MCS-51的串行口控制器;串口工作方式及其應用。8) D/A

6、轉(zhuǎn)換與DAC0832應用;A/D轉(zhuǎn)換與ADC0809應用。教學內(nèi)容重點:單片機的概念和特點;單片機的主要發(fā)展方向和主流技術;幾種常見的單片機產(chǎn)品。難點:單片機基本概念;單片機、微控制器、嵌入式系統(tǒng)等概念的區(qū)分與聯(lián)系。教學方法多媒體演示、實物演示作業(yè)安排及課后反思作業(yè):P16,第1、2題。思考:試分析一下今后單片機將向那個方向發(fā)展,為什么?課前準備情況及其他相關特殊要求預習1.1參考資料(具體到哪一章節(jié)或頁碼)教材第1-3頁謝維成,楊加國. 單片機原理與應用及C51程序設計(第3版)M. 北京: 清華大學出版社,2014. 第1章7.2教學單元二教學日期第2次課教學目標梳理單片機學習的基本知識,

7、掌握數(shù)制、編碼等基礎知識;了解單片機開發(fā)環(huán)境Proteus及Keil的使用方法。教學內(nèi)容1.2 單片機學習的預備知識1.3 Proteus應用簡介重點:十進制、二進制、十六進制直接的轉(zhuǎn)換;基礎門電路的功能和使用方法。難點:十進制小數(shù)和整數(shù)轉(zhuǎn)換為二進制數(shù)。教學過程1.2 單片機學習的預備知識一、計算機中數(shù)的表示計算機只識別和處理數(shù)字信息,數(shù)字是以二進制數(shù)表示的;它易于物理實現(xiàn),同時,資料存儲、傳送和處理簡單可靠;運算規(guī)則簡單,使邏輯電路的設計、分析、綜合、方便,使計算器具有邏輯性。(一)數(shù)制及數(shù)制之間的轉(zhuǎn)換1、各種進位計數(shù)及其表示方法數(shù)字符號:0、1、2、9 數(shù)碼。數(shù)碼的個數(shù)基數(shù)。進位規(guī)則:逢十

8、進一例如,十進制數(shù),10個數(shù)碼;采用“逢十進一”30681 = 3104+0103+6102+8101+1100例如,二進制數(shù),2個數(shù)碼,采用“逢二進一”(11010100)2 = 127+126+025+124+023+122+021+020總之,N進制數(shù),N個數(shù)碼,“逢N進一”二進制數(shù)與十六進制數(shù)的相互轉(zhuǎn)換a)二進制轉(zhuǎn)換十六進制:規(guī)律是:以小數(shù)點為界限,分別往前往后每四位二進制數(shù)一組進行分組,(整數(shù)部分不夠的位直接在高位補0,小數(shù)部分不夠的位在往其低位補0),之后把每一組轉(zhuǎn)換成對應得到十六進制數(shù)碼即可。b)十六進制轉(zhuǎn)換二進制: 規(guī)律是:上述轉(zhuǎn)換的“逆”,即把每位十六進制數(shù)碼都轉(zhuǎn)換成對應四位

9、二進制數(shù),按照十六進制數(shù)正常的順序排列即可。c)十進制轉(zhuǎn)換十六進制: 方法:可以先轉(zhuǎn)換成二進制數(shù),在轉(zhuǎn)換成十六進制數(shù)(較簡單些)。(二) 有符號數(shù)表示方法1、 機器數(shù)與真值機器只認識二進制數(shù):0、1。這是因為,電路狀態(tài)常有兩個,如通、斷;高電平、低電平;可用0、1表示。這種0、1、0、11在機器中的表現(xiàn)形式機器數(shù)。一般為8位。 無符號數(shù):00000000B、11111111B即00H FFH機器數(shù)有:帶符號數(shù):+1010110B、-1101001 真值符號位和數(shù)值位:計算機中通常都是用最高位來表示一個數(shù)的符號。并且分別用“0”和“1”表示正和負。有符號數(shù)有三種表示方法。原碼、反碼和補碼。a)、

10、原碼(Primary Code)正數(shù)的原碼與原來的數(shù)相同。負數(shù)的原碼符號位“置1”,數(shù)值位不變。舉例(略:+5、-5、+0、-0)原碼數(shù)的范圍:-127+127b)、反碼(Diminished Radix Complement)正數(shù)的反碼與原來的數(shù)相同。負數(shù)的反碼符號位“置1”,數(shù)值位按位取反得到。舉例(略:+5、-5、+0、-0)反碼數(shù)的范圍:-127+127c)、補碼(Complementary Code)正數(shù)的補碼與原來的數(shù)相同。負數(shù)的補碼由它的絕對值求反加1后得到,符號位“置1”。舉例(略:+5、-5、0)數(shù)的范圍:-128+127(三)8421BCD碼(Binary Coded De

11、cimal Code)由于人們習慣上用十進制數(shù)通過計算機輸入輸出數(shù)據(jù),而計算機需要用二進制進行分析計算,因此需要計算機將十進制轉(zhuǎn)換成二進制,影響計算機的工作速度。用二進制數(shù)對每位十進制數(shù)進行編碼稱為BCD碼,或叫二十進制數(shù)。用標識符 BCD表示1、 BCD碼與十進制數(shù)的轉(zhuǎn)換BCD碼與二進制不能直接轉(zhuǎn)換,一般先轉(zhuǎn)換成十進制,再轉(zhuǎn)成二進制。0100 0011B=67D=0110 0111BCD注意:不能將BCD碼看成是二進制數(shù)。1.3 Proteus應用簡介開發(fā)工具PROTEUS單片機仿真軟件開發(fā)工具 Keil集成開發(fā)環(huán)境軟件仿真運行效果教學方法多媒體演示,仿真軟件演示。作業(yè)安排及課后反思作業(yè):P

12、16,第5、6、7題。思考:試分析一下今后單片機將向那個方向發(fā)展,為什么?課前準備情況及其他相關特殊要求預習1.2,1.3節(jié);閱讀教材204頁(閱讀材料1)參考資料(具體到哪一章節(jié)或頁碼)教材第3-16頁。謝維成, 楊加國. 單片機原理與應用及C51程序設計(第3版)M. 北京: 清華大學出版社, 2014. 第1章。單片機課程學習網(wǎng)站(各大電子類專業(yè)網(wǎng)站。7.3教學單元三教學日期第3次課教學目標掌握MCS-51單片機的存儲器結(jié)構(gòu)與復位方式,引腳功能,內(nèi)部結(jié)構(gòu)和工作原理。教學內(nèi)容第2章 MCS-51單片機的結(jié)構(gòu)及原理2.1 MCS-51單片機的結(jié)構(gòu)2.2 MCS-51的存儲器結(jié)構(gòu)2.3 單片機

13、的復位、時鐘與時序2.4 并行I/O口重點:80C51單片機的引腳功能和內(nèi)部結(jié)構(gòu),單片機的存儲器結(jié)構(gòu)與復位方式。難點:單片機的內(nèi)部結(jié)構(gòu)和工作原理。教學過程MCS-51單片機的基本結(jié)構(gòu)2.1.1 MCS-51單片機硬件結(jié)構(gòu)特點1內(nèi)部程序存儲器(ROM)和內(nèi)部數(shù)據(jù)存儲器(RAM)容量(如表2-1所示)。2輸入/輸出(I/O)端口3外部程序存儲器和外部數(shù)據(jù)存儲器尋址空間4中斷與堆棧5定時/計數(shù)器與寄存器區(qū)6指令系統(tǒng)2.1.2 MCS-51單片機內(nèi)部結(jié)構(gòu)1運算器運算器由8位算術邏輯運算單元ALU(Arithmetic Logic Unit)、8位累加器ACC(Accumulator)、8位寄存器B、程

14、序狀態(tài)字寄存器PSW(Program Status Word)、8位暫存寄存器TMP1和TMP2等組成。2控制器主要由程序計數(shù)器PC、指令寄存器IR、指令譯碼器ID、堆棧指針SP、數(shù)據(jù)指針DPTR、時鐘發(fā)生器及定時控制邏輯等組成。2.2 MCS-51單片機的存儲器配置2.2.1 片內(nèi)數(shù)據(jù)存儲器2.2.2 片外數(shù)據(jù)存儲器2.2.3 程序存儲器2.2.1 片內(nèi)數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器結(jié)構(gòu)如圖2-9(a)所示;其具體位地址單元如表2-3所示;專用寄存器的地址映像如表2-4所示。單片機復位電路及復位狀態(tài)1復位電路單片機復位電路包括片內(nèi)、片外兩部分。外部復位電路就是為內(nèi)部復位電路提供兩個機器周期以上的高

15、電平而設計的。MCS-51單片機通常采用上電自動復位和按鍵手動復位兩種方式。如圖2-14所示。2單片機復位后的狀態(tài)單片機運行出錯或進入死循環(huán)時,可按復位鍵重新運行。21個特殊功能寄存器復位后的狀態(tài)為確定值,如表2-6所示。 3、時鐘電路(1)振蕩周期 / 時鐘周期:為單片機提供時鐘信號的振蕩源的周期。(3)機器周期:通常將完成一個基本操作所需的時間稱為機器周期。(4)指令周期:是指CPU執(zhí)行一條指令所需要的時間。一個指令周期通常含有14個機器周期。若80C51單片機外接晶振為12MHz時,則單片機的四個周期的具體值為:振蕩周期1/12MHz1/12s0.0833s時鐘周期1/6s0.167s機

16、器周期1s指令周期14s4、80C51指令時序特殊功能寄存器通用RAM區(qū)位尋址區(qū)00H1FH20H2FH30H7FH80HFFH80H88H90H98HA0HA8HB0HB8HD0HE0HF0H特殊功能寄存器中位尋址外部ROM內(nèi)部ROM(EA=1)外部ROM(EA=0)0000H0000H0FFFH0FFFH1000HFFFFH外 部RAM(I/O口地址)0000HFFFFH內(nèi)部數(shù)據(jù)存儲器(a)外部數(shù)據(jù)存儲器(b)程序存儲器(c)工作寄存器區(qū)P1P2S1P2振蕩周期時鐘周期機器周期機器周期指令周期(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1

17、P2P2P2P2P2P2P2P2P2P2P2二、80C51單片機的引腳功能結(jié)構(gòu)框圖(如上圖)1主電源引腳VCC和VSS2外接晶振引腳XTAL1和XTAL23控制或其他電源復用引腳RST/ VPD、ALE/、和/VPP4輸入/輸出引腳P0、P1、P2、P3(共32根)三、引腳功能(1) 主電源引腳Vcc和Vss VCC: 接+5 V電源正端; VSS: 接+5 V電源地端。 (2) 外接晶體引腳XTAL1和XTAL2 XTAL1: 接外部石英晶體的一端。 在單片機內(nèi)部, 它是一個反相放大器的輸入端, 這個放大器構(gòu)成了片內(nèi)振蕩器。 當采用外部時鐘時, 對于HMOS單片機, 該引腳接地; 對于CHM

18、OS單片機, 該引腳作為外部振蕩信號的輸入端。 XTAL2: 接外部晶體的另一端。 在單片機內(nèi)部, 接至片內(nèi)振蕩器的反相放大器的輸出端。 當采用外部時鐘時, 對于HMOS單片機, 該引腳作為外部振蕩信號的輸入端; 對于CHMOS芯片, 該引腳懸空不接。(3)輸入/輸出(I/O)引腳P0口、 P1口、 P2口及P3口 (a) P0口(39腳32腳): P0.0P0.7統(tǒng)稱為P0口。 (b) P1口(1腳8腳): P1.0P1.7統(tǒng)稱為P1口,可作為準雙向I/O接口使用。 (c) P2口(21腳28腳): P2.0P2.7統(tǒng)稱為P2口,一般可作為準雙向I/O接口。 (d) P3口(10腳17腳):

19、 P3.0P3.7統(tǒng)稱為P3口。教學方法多媒體演示作業(yè)安排及課后反思作業(yè):P34,第5、6、8、9題。 課前準備情況及其他相關特殊要求預習第2章參考資料(具體到哪一章節(jié)或頁碼)教材第17-34頁。謝維成, 楊加國. 單片機原理與應用及C51程序設計(第3版)M. 北京: 清華大學出版社, 2014. 第2章。單片機課程學習網(wǎng)站(7.4教學單元四教學日期第4次課教學目標掌握單片機的尋址方式,指令特點,功能和使用。教學內(nèi)容第3章 單片機的匯編語言與程序設計3.1 匯編語言概述3.2 MCS-51指令系統(tǒng)簡介重點:51單片機匯編語言的指令系統(tǒng);指令表的查閱方法和指令功能的描述。難點:51單片機匯編語

20、言的指令系統(tǒng)。教學過程3.1 匯編語言概述MCS-51單片機指令系統(tǒng)有如下特點:(1)指令執(zhí)行時間快。(2)指令短,約有一半的指令為單字節(jié)指令。(3)用一條指令即可實現(xiàn)2個一字節(jié)的相乘或相除。(4)具有豐富的位操作指令。 (5)可直接用傳送指令實現(xiàn)端口的輸入輸出操作。3.1 MCS-51指令系統(tǒng)的分類、格式及一般說明3.1.1 指令分類3.1.2 指令格式3.1.3 指令描述符號介紹3.1.1 指令分類按指令功能,MCS-51指令系統(tǒng)分為數(shù)據(jù)傳遞與交換、算術運算、邏輯運算、程序轉(zhuǎn)移、布爾處理操作、CPU控制等6類。布爾處理操作類指令又稱位操作指令。3.1.2 指令格式在MCS-51指令中,一般

21、指令主要由操作碼、操作數(shù)組成。指令應具有以下功能:(1)操作碼指明執(zhí)行什么性質(zhì)和類型的操作。例如,數(shù)的傳送、加法、減法等。(2)操作數(shù)指明操作的數(shù)本身或者是操作數(shù)所在的地址。(3)指定操作結(jié)果存放的地址。3.1.3 指令描述符號介紹Rn當前選中的寄存器區(qū)中的8個工作寄存器R0R7(n=07)。Ri當前選中的寄存器區(qū)中的2個工作寄存器R0、R1(i=0,1)。direct8位的內(nèi)部數(shù)據(jù)存儲器單元中的地址。#data包含在指令中的8位常數(shù)。#data16包含在指令中的16位常數(shù)。addr1616位目的地址。addr1111位目的地址。rel8位帶符號的偏移字節(jié),簡稱偏移量。DPTR數(shù)據(jù)指針,可用作

22、16位地址寄存器。bit內(nèi)部RAM或?qū)S眉拇嫫髦械闹苯訉ぶ肺弧累加器。B專用寄存器,用于乘法和除法指令中。C進位標志或進位位,或布爾處理機中的累加器。間址寄存器或基址寄存器的前綴,如Ri,DPTR。/ 位操作數(shù)的前綴,表示對該位操作數(shù)取反,如/bit。片內(nèi)RAM的直接地址或寄存器。()由尋址的單元中的內(nèi)容。箭頭左邊的內(nèi)容被箭頭右邊的內(nèi)容所代替。3.2 尋址方式3.2.1 立即尋址3.2.2 直接尋址3.2.3 寄存器尋址3.2.4 寄存器間接尋址3.2.5 變址尋址3.2.6 相對尋址3.2.7 位尋址3.2.1 立即尋址指令中直接給出操作數(shù)的尋址方式。立即操作數(shù)用前面加有#號的8位或16位

23、數(shù)來表示。例如:MOVA,# 60H;A#60H MOVDPTR,# 3400H;DPTR#3400HMOV30H,# 40H;30H單元#40H 上述三條指令執(zhí)行完后,累加器A中數(shù)據(jù)為立即數(shù)據(jù)60H,DPTR寄存器中數(shù)據(jù)為3400H,30H單元中數(shù)據(jù)為立即數(shù)40H。3.2.2 直接尋址指令中直接給出操作數(shù)地址的尋址方式,能進行直接尋址的存儲空間有SFR寄存器和內(nèi)部數(shù)據(jù)RAM。例如:MOVPSW,# 20H; PSW#20H PSW為直接尋址寄存器的符號地址。 MOVA,30H;A30H內(nèi)部RAM單元中的內(nèi)容30H為直接給出的內(nèi)部RAM的地址。3.2.3 寄存器尋址以通用寄存器的內(nèi)容為操作數(shù)的

24、尋址方式。通用寄存器指A、B 、DPTR以及R0R7 。 例如:CLR A;A0 INC DPTR;DPTRDPTR+1 ADDR5,# 20H;R5#20H+R53.2.4 寄存器間接尋址以寄存器中內(nèi)容為地址,以該地址中內(nèi)容為操作數(shù)的尋址方式。間接尋址的存儲器空間包括內(nèi)部數(shù)據(jù)RAM和外部數(shù)據(jù)RAM。能用于寄存器間接尋址的寄存器有R0,R1,DPTR,SP。其中R0、R1必須是工作寄存器組中的寄存器。SP僅用于堆棧操作。例如:MOV R0,A ;內(nèi)部RAM(R0)A其指令操作過程示意圖如圖3-1所示。又如:MOVX A,R1;A外部RAM(P2R1)其指令操作過程示意圖如圖3-2所示。再如:M

25、OVX DPTR,A;外部RAM(DPTR)A 其指令操作過程示意圖如圖3-3所示。3.2.5 變址尋址變址尋址只能對程序存儲器中數(shù)據(jù)進行操作。由于程序存儲器是只讀的,因此變址尋址只有讀操作而無寫操作,在指令符號上采用MOVC的形式(如圖3-4所示)。例如:MOVC A, A+DPTR;A(A+DPTR)又如,MOVC A, A+PC ;A(A+PC) 這條指令與上條指令不同的是,基址寄存器是PC。3.2.6 相對尋址以當前程序計數(shù)器PC的內(nèi)容為基礎,加上指令給出的一字節(jié)補碼數(shù)(偏移量)形成新的PC值的尋址方式。相對尋址用于修改PC值,主要用于實現(xiàn)程序的分支轉(zhuǎn)移。 例如,SJMP 08H ;P

26、CPC+2+08H 指令操作示意圖如圖3-5所示。3.2.7 位尋址位尋址只能對有位地址的單元作位尋址操作。位尋址其實是一種直接尋址方式,不過其地址是位地址。 例如:SETB 10H ;將10H位置1若22H單元中存放著數(shù)據(jù)40H,22H單元的D0位的位地址為10H,執(zhí)行上述指令后(22H)=41H。 又如:MOV 32H,C ;32H進位位C ORL C ,32H ;CC32H教學方法多媒體演示,借助軟件做演示實驗,增強學生對知識的理解,提高他們對本課程的興趣。作業(yè)安排及課后反思作業(yè):P56,第1、6題。課前準備情況及其他相關特殊要求課前預習3.1,3.2節(jié)參考資料(具體到哪一章節(jié)或頁碼)教

27、材第35-51頁。謝維成, 楊加國. 單片機原理與應用及C51程序設計(第3版)M. 北京: 清華大學出版社, 2014. 第3章。各大電子類專業(yè)網(wǎng)站。7.5教學單元五教學日期第5次課教學目標掌握單片機的尋址方式,指令特點,功能和使用。教學內(nèi)容3.3匯編語言的編程方法重點:51單片機匯編語言的指令系統(tǒng);指令表的查閱方法和指令功能的描述。難點:51單片機匯編語言的指令系統(tǒng)。教學過程3.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令共28條,是將源操作數(shù)送到目的操作數(shù)。指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)被源操作數(shù)取代。數(shù)據(jù)傳送類指令用到的助記符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PU

28、SH、POP8種。源操作數(shù)可采用寄存器、寄存器間接、直接、立即、變址5種尋址方式尋址,目的操作數(shù)可以采用寄存器、寄存器間接、直接尋址3種尋址方式。MCS-51單片機片內(nèi)數(shù)據(jù)傳送途徑如圖3-6所示。1以A為目的操作數(shù)MOV A,Rn;A RnMOV A,direct;A(direct)MOV A,Ri;A(Ri)MOV A,#data;A #data2以Rn為目的操作數(shù)MOV Rn,A;Rn AMOV Rn,direct;Rn (direct)MOV Rn,#data;Rn #data3以直接地址為目的操作數(shù)MOV Ri,A;(Ri) AMOV Ri,direct;(Ri) (direct)MO

29、V Ri,#data;(Ri) #data4以間接地址為目的操作數(shù)MOV Ri,A;(Ri) AMOV Ri,direct;(Ri) (direct)MOV Ri,#data;(Ri) #data例如:設(30H)=6FH,R1=40H,執(zhí)行MOV R1,30H后,30H單元中數(shù)據(jù)取出送入R1間接尋址的40H單元,(40H)=6FH。5以DPTR為目的操作數(shù)MOV DPTR,#data16 ;DPTR #data16例如執(zhí)行 MOV DPTR,#2000H 后,(DPTR)= 2000H。 6訪問外部數(shù)據(jù)RAM MOVX A,DPTR;A (DPTR)MOVX DPTR,A;(DPTR) AM

30、OVX A,Ri;A (P2Ri)MOVX Ri,A;(P2Ri) A7讀程序存儲器MOVC A,A+DPTR;A (A+DPTR)MOVC A,A+PC;A (A+PC)例如已知A=30H,DPTR=3000H, 程序存儲器單元(3030H)=50H,執(zhí)行MOVC A, A+DPTR后,A=50H。8數(shù)據(jù)交換l 字節(jié)交換XCH A,Rn;A RnXCH A ,direct;A(direct)XCH A,Ri;A(Ri)l 半字節(jié)交換XCHD A,Ri;A03(Ri)03SWAP A;A03A479堆棧操作所謂堆棧是在片內(nèi)RAM中按“先進后出,后進先出”原則設置的專用存儲區(qū)。數(shù)據(jù)的進棧出棧由指

31、針SP統(tǒng)一管理。堆棧的操作有如下兩條專用指令: PUSH direct;SP(SP+1),(SP)(direct) POPdirect;(direct)(SP),SP SP-1PUSH是進棧(或稱為壓入操作)指令。指令執(zhí)行過程如圖3-7所示。【例3.1】 將片內(nèi)RAM 30H單元與40H單元中的內(nèi)容互換。方法1(直接地址傳送法): MOV31H,30H MOV30H,40H MOV40H,31H SJMP$方法2(間接地址傳送法): MOVR0,#40H MOVR1,#30H MOVA,R0 MOVB,R1 MOVR1,A MOVR0,B SJMP$方法3(字節(jié)交換傳送法): MOVA,30H

32、 XCHA,40H MOV30H,A SJMP$方法4(堆棧傳送法): PUSH30H PUSH40H POP30H POP40H SJMP$3.3.2 算術運算類指令1加法指令ADD A,Rn;A A + RnADD A,direct;A A +(direct)ADD A,Ri;A A +(Ri)ADD A,#data;A A + #data2帶進位加指令ADDC A,Rn;A A + Rn + CADDC A,direct;A A +(direct)+ CADDC A,Ri;A A +(Ri)+ CADDC A,#data;A A + #data + CC為來自PSW狀態(tài)寄存器中的進位位C

33、。例如,設A=20H,R0=21H,C=1,執(zhí)行指令 ADDC,R0后,A=42H。 3帶借位減指令SUBB A,Rn;A A - Rn - CSUBB A,direct;A A -(direct)- CSUBB A,Ri;A A -(Ri)- CSUBB A,#data;A A - #data C例如,設A=39H,R0=20H,(20H)=32H,C=1,執(zhí)行指令 SUBB,R0后,A=06H。4乘法指令MUL AB;BA ABA和B中各存放一個8位無符號數(shù),指令執(zhí)行后,16位乘積的高8位在B中,低8位存A中。例如,A=30H,B=60H,執(zhí)行 MUL AB 后,A=00H,B=12H。

34、5除法指令 DIV AB;AB商在A中,余數(shù)在B中 A和B中各存放一個8位無符號數(shù),A放被除數(shù),B放除數(shù)。指令執(zhí)行后,A中存放商,B中存入余數(shù)。若B=00H,則指令執(zhí)行后OV=1,A與B不變。 例如,A=30H,B=07H,執(zhí)行 DIV AB 后,A=06H,B=06H。6加1指令INC A;A A + 1INC Rn;Rn Rn + 1INC direct;(direct) (direct)+ 1INC Ri;(Ri)(Ri)+ 1INC DPTR;DPTR DPTR + 1例如,(30H)=22H,執(zhí)行 INC 30H 后,(30H)=23H。7減1指令DEC A;A A - 1DEC R

35、n;Rn Rn - 1DEC direct;direct (direct)- 1DEC Ri;(Ri)(Ri)- 1例如,R0=30H,(30H)=22H,執(zhí)行 DEC R0 后,(30H)=21H。8十進制調(diào)整指令DA A ;把A中按二進制相加的結(jié)果調(diào)整成按BCD碼相加的結(jié)果例如,A=65BCD,B=78BCD,C=0,執(zhí)行下列語句ADDA,BDAA后,A=43 BCD,C=1?!纠?.2】 試把存放在R1R2和R3R4中的兩個16位數(shù)相加,結(jié)果存于R5R6中。解:參考程序如下: MOVA,R2;取第一個數(shù)的低8位 ADDA,R4;兩數(shù)的低8位相加 MOVR6,A;保存和的低8位 MOVA,

36、R1;取第一個數(shù)的高8位 ADDCA,R3;兩數(shù)的高8位相加,并把低8位相加時的進位位加進來 MOVR5,A;把相加的高8位存入R5寄存器中 SJMP $ 教學方法多媒體演示,借助軟件做演示實驗,增強學生對知識的理解,提高他們對本課程的興趣。作業(yè)安排及課后反思作業(yè):P56,第8、9題。課前準備情況及其他相關特殊要求課前預習3.3節(jié)。參考資料(具體到哪一章節(jié)或頁碼)教材第51-56頁。謝維成, 楊加國. 單片機原理與應用及C51程序設計(第3版)M. 北京: 清華大學出版社, 2014. 第3章。7.6教學單元六教學日期第6次課。教學目標掌握C51語言的指令格式,數(shù)據(jù)結(jié)構(gòu),功能和使用。教學內(nèi)容第

37、4章單片機的C51語言 4.1C51的程序結(jié)構(gòu)重點:C51語言的指令格式,數(shù)據(jù)結(jié)構(gòu)。難點:C51語言與通用C語言的區(qū)別。教學過程一、C51 概述C語言是一種編譯型程序設計語言,它兼顧了多種高級語言的特點,并具備匯編語言的功能。目前,使用C語言進行程序設計已經(jīng)成為軟件開發(fā)的一個主流。用C語言開發(fā)系統(tǒng)既可以大大縮短開發(fā)周期,明顯增強程序的可讀性,又便于改進和擴充。而且針對8051的C語言(C51)日趨成熟,已成為了專業(yè)化的實用高級語言。一般來說,C51有如下特點:1)C語言作為一種非常方便的語言而得到廣泛的支持,國內(nèi)最通用的是Keil C51;2)C語言程序本身不依賴于機器硬件系統(tǒng),基本上不作修改

38、就可將程序從不同的單片機中移植過來;3)C提供了很多數(shù)學函數(shù)并支持浮點運算,開發(fā)效率高,故可縮短開發(fā)時間,增加程序可讀性和可維護性。而C51與ASM-51相比,有如下優(yōu)點:1)對單片機的指令系統(tǒng)不要求了解,僅要求對8051 的存貯器結(jié)構(gòu)有初步了解;2)寄存器分配、不同存貯器的尋址及數(shù)據(jù)類型等細節(jié)可由編譯器管理;3)程序有規(guī)范的結(jié)構(gòu),可分成不同的函數(shù),這種方式可使程序結(jié)構(gòu)化;4)具有將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性;5)提供的庫包含許多標準子程序,具有較強的數(shù)據(jù)處理能力;6)由于具有方便的模塊化編程技術,使已編好程序可容易地移植。正是上述這些優(yōu)點,C51如今已成為51

39、系列單片機的主流開發(fā)語言。二、 C51的語法C51的語法與C語言基本相同,因此本書將著重介紹C51與C語言的不同之處,從而有利于讀者更好地把握兩者的相同之處與不同之處,為以后寫C51源程序打好基礎。1)C51的常量和變量C51的常量和變量與C語言的常量和變量基本相同,其不同之處主要在于變量的聲明的形式,C語言的變量聲明的一般格式是:(存儲種類) 數(shù)據(jù)類型變量而在C51中,變量聲明的一般格式則是:(存儲種類) 數(shù)據(jù)類型(存儲器類型)變量其中,“存儲種類”和“存儲器類型”是可選項。變量的存儲種類有四種:自動(auto)、外部(extern)、靜態(tài)(static)和寄存器(register)。在定義

40、一個變量時如果省略存儲種類選項,則該變量將為自動(auto)變量。定義一個變量時除了需要說明其數(shù)據(jù)類型之外,C51編譯器還允許說明變量的存儲器類型。存儲器類型的說明就是指定該變量在C51硬件系統(tǒng)中所使用的存儲區(qū)域,并在編譯時準確的定位。關于C51的存儲器類型,我們將在本章后面的小節(jié)做詳細的介紹。2)C51的數(shù)據(jù)類型類型符號關鍵字所占位數(shù)數(shù)的表示范圍整型有(signed) int16-3276832767(signed) short16-3276832767(signed) long32-2147483648247483647無unsigned int16065535unsigned short

41、 int16065535unsigned long int3204294967295實型有Float323.4e-383.4e38有Double641.7e-3081.7e308字符型有Char8-128127無unsigned char80255除了上述的數(shù)據(jù)類型,C51還有以下四種數(shù)據(jù)類型擴充定義:bit 位變量 位變量是C51的一種擴充數(shù)據(jù)類型,利用它可以定義一個位變量,但不能定義位指針,也不能定義位數(shù)組。它的值是一個二進制位,不是就是0就是,類似一些高級語言中的布爾類型中的True和Flase。Sfr特殊功能寄存器Sfr也是一種擴充數(shù)據(jù)類型,占用一個內(nèi)存單元,值域為0255。利用它可以

42、訪問51單片機內(nèi)部的所有特殊功能寄存器。例如Sfr=0X90上述語句定義了P1為P1端口在片內(nèi)的寄存器,在后面的語句中用P1=255(或P1=0FFH,對P1端口的所有引腳置高電平)之類的語句來操作特殊功能寄存器。Sfr16 16位特殊功能寄存器Sfr16占用兩個內(nèi)存單元,值域為065535。sfr16和sfr一樣用于操作特殊功能寄存器,所不同的是它用于操作占兩個字節(jié)的寄存器,比如定時器T0和T1。當然sfr16也可以像sfr一樣用一個字的方式訪問,比如定時器T2,可以分別以TL2和TH2進行訪問。Sbit 可尋址位位是C51中的一種擴充數(shù)據(jù)類型,利用它可以訪問芯片內(nèi)部的RAM中的可位尋址位或

43、特殊功能寄存器中的可位尋址位。例如定義sfr P1=0X90;sbit P1_1=P11;這樣在以后的程序語句中就可以用P1_1來對P1.1引腳進行讀寫操作了。3)C51的存儲類型在C51中,存儲器類型指定了該變量在硬件系統(tǒng)中所使用的存儲區(qū)域,并在編譯時準確的定位。存儲類型存儲位置長度數(shù)據(jù)范圍Data直接尋址片內(nèi)RAM8位0255Bdata可位尋址片內(nèi)RAM1位0/1Idata間接尋址片內(nèi)RAM8位0255Pdata片外頁RAM8位0255Xdata片外RAM16位065535Code程序ROM16位065535data 區(qū) data區(qū)的尋址是最快的,所以應該把經(jīng)常使用的變量放在data區(qū);但

44、是data區(qū)的空間是有限的。Data區(qū)聲明中的存儲器類型標識符為data ,通常指低128字節(jié)的內(nèi)部數(shù)據(jù)區(qū)存儲的變量,可直接尋址。bdata區(qū) bdata區(qū)實際就是data區(qū)的位尋址區(qū),在這個區(qū)聲明變量就可進行位尋址。bdata區(qū)聲明中的存儲器類型標識符為bdata,指內(nèi)部可位尋址的16字節(jié)存儲區(qū)可位尋址的變量的數(shù)據(jù)類型。idata區(qū) idata區(qū)也用于存放使用比較頻繁的變量,使用寄存器作為指針進行尋址,即在存儲器中設置8位地址進行間接尋址。Idata區(qū)聲明中的存儲類型標識符為idata,指內(nèi)部的256字節(jié)的存儲區(qū),但是只能間接尋址,速度比直接尋址慢。pdata區(qū)和xdata區(qū) pdata和x

45、data區(qū)屬于外部存儲區(qū),外部數(shù)據(jù)區(qū)是可讀寫的存儲區(qū),最多可有64KB。Pdata和xdata區(qū)聲明中的存儲器類型標識符分別為pdata和xdata,xdata存儲器類型標識符可以指定外部數(shù)據(jù)區(qū)64KB內(nèi)的任何地址,而pdata存儲器類型標識符僅指定1頁或256字節(jié)的外部數(shù)據(jù)區(qū)。code區(qū) 程序儲存器的數(shù)據(jù)是不可改變的,程序存儲器區(qū)code 聲明中的標識符為code,在C51中用code存儲器類型標識符來訪問程序存儲區(qū)。4)C51的運算符C51的運算符與C語言的運算符基本相同,以下為C51常用的運算符:算術運算符:+ - * / % + -(加 減 乘 除 取模 自增自減)關系運算符: = (

46、位右移 位左移)& | (按位與 按位或 按位異或 按位取反)5)C51的基本語句C51的基本語句與C語言的基本語句基本相同,如下所示:If-else 選擇語句 switch/case 多分支選擇語句 while 循環(huán)語句 do-while 循環(huán)語句 for 循環(huán)語句C51的基本語句與C語言的基本語句的使用方法和注意事項基本相同,在此不作多余敘述。6)C51的程序結(jié)構(gòu)與一般C語言的結(jié)構(gòu)相同,以main()函數(shù)為程序人口,程序體中包含若干語句還可以包含若干函數(shù),以下為C51函數(shù)的一般格式: 類型 函數(shù)名(參數(shù)表) 數(shù)據(jù)說明部分 語句執(zhí)行部分 其中,類型指定函數(shù)值的類型,即函數(shù)帶回來的值類型。7)

47、C51的頭文件C51的頭文件與C語言的頭文件基本相同。但由于51系列單片機的結(jié)構(gòu)特點,常有的頭文件主要有reg51.h math.h ctype.h stdio.h stdlib.h absacc.h。reg51.h主要定義了51系列單片機的特殊功能寄存器和位寄存器;math.h 主要定義了常用的數(shù)學運算函數(shù);ctype.h主要定義了常用的字符函數(shù);stdio.h主要定義了一般I/O函數(shù);stdlib.h主要定義了常用的標準函數(shù);absacc.h則定義了絕對地址訪問的函數(shù)。如果想進一步了解上述各個頭文件包含的函數(shù),可以參照C51頭文件的相關技術手冊。例:include void main( )

48、數(shù)據(jù)說明部分;語句執(zhí)行部分;8)中斷服務程序51單片機的中斷系統(tǒng)非常重要,可以用C51來聲明中斷和編寫中斷服務程序,中斷過程通過使用interrupt關鍵字和中斷編號04實現(xiàn)。中斷服務程序聲明的一般格式為:返回值 函數(shù)名()interrupt n 其中,對應著中斷源的編號,中斷編號告訴編譯器中斷程序的入口地址,它對應著IE寄存器的使能位,即IE寄存器中的0位對應著外部中斷0,相應的外部中斷0的中斷編號是0。8051單片機的中斷源以及中斷編號如下表所示:中斷編號中斷源入口地址0外部中斷00003H1定時器/計數(shù)器0溢出000BH2外部中斷10013H3定時器/計數(shù)器1溢出001BH4串行口中斷0

49、023H當正在執(zhí)行一個特定的任務時,可能有更緊急的事情需要CPU處理,這就涉及到了中斷優(yōu)先級。高的優(yōu)先級中斷可以中斷正在處理的低的優(yōu)先級中斷程序,因而最好給每種優(yōu)先程序分配不同的寄存器組。在C51中可使用using指定寄存器組,using后的變量為03的常整數(shù),分別表示51單片機內(nèi)的4個寄存器組。中斷服務程序的完整格式如下:返回值函數(shù)名()interrupt n using n 例:unsigned int interrputcnt;unsigned char second;void timer0 (void) interrupt 1 using 2if(+interruptcnt=4000)/*計數(shù)到4000*/second+;/*另一個計數(shù)器*/interruptcnt=0;/*計數(shù)器清零*/介紹完C51的基本語法之后,現(xiàn)在以兩個實例作為參考,兩個實例都分別給出它們的匯編源程序和C51程序以便作比較。例1:清零程序 (將2000H20FFH的內(nèi)容清零) 匯編源程序 ORG 0000HSE01: MOV R0,#00H MOV DPTR,#2000H ;(0000H)送DPTRLOO1: CLR A MOVX DPTR,A ;0送(DPTR) INC DPTR ;DPTR+1

溫馨提示

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

評論

0/150

提交評論