- 智能儀器基礎(chǔ)
- 朱一綸主編
- 423字
- 2019-01-09 15:46:49
第2章 智能儀器中的微機系統(tǒng)
在第1章中已提到,智能儀器的主要特征就是儀器與微機系統(tǒng)的結(jié)合。這種結(jié)合主要采取的方式有兩大類:一類是利用PC加上專用的外圍測控設(shè)備;另一類則是采用嵌入式的單片機構(gòu)成專用的智能儀器。這里主要討論第二類嵌入到智能儀器中的微機系統(tǒng)即單片機。
單片機的種類至少有上千種,8位、16位和32位的單片機是目前的主流機型。實際上單片機有過一個別名,叫CSIC(用戶定義的集成電路),當某種需求有了一定的數(shù)量,用戶就可以要求單片機供應(yīng)商針對這種需求設(shè)計一款單片機。因此單片機可實現(xiàn)的功能和單片機的種類也就越來越多。世界上有很多著名的單片機公司,每個公司都有幾個、幾十個單片機系列,每個單片機系列有幾個、幾十個不同的單片機品種。智能儀器中所選用的單片機往往對儀器的智能程度起到?jīng)Q定性的作用。
由于單片機的類型及各公司開發(fā)的單片機所使用的機器碼指令都不相同,在學習和使用單片機時要掌握單片機的主要性能、引腳定義、接口要求和編程方法,以便在智能儀器中應(yīng)用它。
2.1 MCS-51系列單片機
國際市場上眾多類型的單片機中8位單片機因其成本低、易開發(fā)、功能相對強大,可以符合一般智能儀器的控制要求而受到歡迎。到目前為止,Intel公司的MCS-51系列在我國仍是應(yīng)用最為廣泛的單片機系列,且MCS-51系列單片機自身近年來也有了很大的發(fā)展,如Intel公司推出的CMOS增強型單片機8XC51FA/FB、8XC452等的集成度更高,在片內(nèi)集成了更多的功能部件,如A/D、PWM等以及高速的I/O口等。其他如飛利浦公司、西門子公司等也都推出了以80C51為核心,與80C51兼容的8位單片機。因此,這里從智能測量控制儀器的角度來討論MCS-51系列單片機的結(jié)構(gòu)原理、指令系統(tǒng)等基本知識,并簡單介紹MCS-51系列單片機的開發(fā)過程,為后面智能儀器的分析和設(shè)計打下基礎(chǔ)。
2.1.1 MCS-51系列單片機的結(jié)構(gòu)與特點
MCS-51系列單片機的基本型包括8031、8051、8751、8951等不同的芯片,它們的不同點只在于內(nèi)部存儲器構(gòu)造不同,而其余組成部分全部相同。
(1)片內(nèi)帶掩模ROM型(8051):在器件內(nèi)部集成有一定容量的只讀存儲器(掩模ROM),適合于定型大批量應(yīng)用產(chǎn)品的生產(chǎn)。
(2)片內(nèi)帶EPROM型(8751):片內(nèi)含有一定容量可供用戶一次編程的EPROM存儲器,適合小批量自制產(chǎn)品。
(3)片內(nèi)帶E2PROM型(8951):片內(nèi)含有一定容量可供用戶多次擦寫編程的E2PROM存儲器,適合于研制產(chǎn)品樣機和學習開發(fā)。
(4)外接EPROM型(8031):片內(nèi)無ROM,必須外接程序存儲器,適用于研制新產(chǎn)品及學習開發(fā)。
(5)近年來,內(nèi)部自帶Flash程序存儲空間的MCS-51系列單片機產(chǎn)品應(yīng)用越來越廣,因為其開發(fā)容易,功能也越來越多,可以根據(jù)需要選用。
8051單片機的基本構(gòu)成如圖2.1所示。除CPU外,在片內(nèi)集成了以下部件。

圖2.1 8051單片機的基本構(gòu)成
1.片內(nèi)數(shù)據(jù)存儲器RAM
MCS-51的內(nèi)部數(shù)據(jù)存儲器共有256個(字節(jié))單元,地址為00H~FFH。其中地址為00H~7FH的前128個單元用于存放可讀寫的數(shù)據(jù);而地址為80H~FFH的后128個單元被專用寄存器占用,不能供用戶使用。
2.片內(nèi)程序存儲器ROM
8051內(nèi)部共有4KB的掩模ROM,用于存放程序、原始數(shù)據(jù)或表格。
8751內(nèi)部共有4KB的EPROM,用戶可以將程序固化在EPROM之中。
8951內(nèi)部共有4KB的E2PROM,E2PROM是可以多次寫入、擦除的芯片,用戶可以通過開發(fā)機把程序固化在E2PROM之中。
8958單片機內(nèi)部有高達32KB的Flash程序存儲空間。
8031內(nèi)部沒有ROM,但外接一片EPROM就相當于8051。
3.定時器/計數(shù)器
8051內(nèi)部共有兩個16位的定時器/計數(shù)器T0、T1,每個定時器/計數(shù)器都可以設(shè)置成定時或計數(shù)方式,并以其定時或計數(shù)結(jié)果實現(xiàn)對計算機的控制。
4.并行I/O口
MCS-51共有四個8位并行I/O口(P0、P1、P2、P3),用來實現(xiàn)數(shù)據(jù)的并行輸入或輸出,且每個口可以用做輸入,也可以用做輸出。
5.串行口
一個全雙工URAT(通用異步接收發(fā)送器)串行I/O口,可以實現(xiàn)單片機和其他設(shè)備之間的串行通信。
6.中斷控制系統(tǒng)
MCS-51單片機的中斷功能較強,8051共有5個中斷源,每個中斷分為高級和低級兩個優(yōu)先級。
● 片外中斷2個。
● 片內(nèi)定時器/計數(shù)器中斷2個。
● 片內(nèi)串行中斷1個。
7.片內(nèi)振蕩器和時鐘產(chǎn)生電路
8051內(nèi)部有為單片機產(chǎn)生時鐘脈沖序列的時鐘電路,但其石英晶體和微調(diào)電容需外接。基本的單片機系統(tǒng)允許的最高晶體振蕩頻率為12MHz,8951單片機的最高振蕩頻率可達33MHz。
8051單片機的功能方框圖如圖2.2所示,單片機內(nèi)部最核心的部分是CPU,它是單片機的心臟。CPU的主要功能是產(chǎn)生各種控制信號,控制存儲器、輸入/輸出端口的數(shù)據(jù)傳送、數(shù)據(jù)的算術(shù)運算以及位操作處理等。

圖2.2 8051單片機的功能方框圖
2.1.2 MCS-51系列單片機的引腳及功能
在單片機開發(fā)中,硬件的構(gòu)成決定了整個單片機系統(tǒng)的存儲器及外部輸入/輸出設(shè)備的地址,是軟件編程的基礎(chǔ),而硬件電路構(gòu)成時必須了解單片機的引腳定義及功能。MCS-51系列單片機中各種芯片的引腳是相互兼容的,共有40條引腳,采用的是標準的雙列直插式集成電路芯片。如圖2.3所示,其中圖2.3(a)為其引腳圖,圖2.3(b)為其邏輯符號圖。

圖2.3 MCS-51系列單片機的引腳及邏輯符號圖
在40條引腳中,2條用于電源引腳,2條用于外接晶體引腳,4條用于控制引腳,32條為I/O引腳。各信號引腳及功能說明如下。
1.電源引腳Vcc和Vss(2條)
Vcc:接工作電源端+5V。
Vss:接地端。
2.時鐘電路引腳XTAL1和XTAL2(2條)
XTAL1、XTAL2外接晶體引線端。
當使用芯片內(nèi)部時鐘時,此二引線端用于外接石英晶體和微調(diào)電容。
當使用芯片外部時鐘時,此二引線端用于接外部時鐘脈沖信號。
3.端口線(32條)
P0.0~P0.7:P0口8位雙向I/O口線,P0口是一個漏極開路的8位雙向I/O端口,如圖2.3所示。P0口既可作為通用I/O端口(對于內(nèi)部有ROM或EPROM的單片機8051、8751)使用,又可作為地址/數(shù)據(jù)總線使用(外部擴展存儲器時,一方面作為8位數(shù)據(jù)輸入/輸出口,另一方面用來輸出外部存儲器的低8位地址)。作為I/O輸出口時,必須外接上拉電阻,才有高電平輸出。
P1.0~P1.7:P1口8位雙向I/O口線,P1口是一個帶內(nèi)部上拉電阻的8位準雙向I/O口,通常作為通用輸入/輸出口使用。
P2.0~P2.7:P2口8位雙向I/O口線。當訪問外部程序存儲器或外部數(shù)據(jù)存儲器時,P2口用做輸出地址的高8位,與P0口一起構(gòu)成16位的地址總線,因此MCS-51系列單片機的最大程序存儲量為64KB,最大外接數(shù)據(jù)存儲器的存儲量也是64KB。如果不需要輸出高8位地址時,P2口可作為通用I/O口,每一位可以獨立地定義為輸入或輸出。
P3.0~P3.7:P3口8位雙向I/O口線。P3口具有兩種功能:第一功能與P1口一樣,每一位可以獨立地定義為輸入或輸出;第二功能是P3口的8條I/O線可獨立地作為串行輸入/輸出口和其他控制信號線,如圖2.3(a)所示。
4.控制信號引腳(4條)
RST/VPD:復(fù)位信號輸入端/備用電源輸入端。
RST:復(fù)位信號輸入端,高電平有效。當振蕩器正常運行時,在此引腳上保持至少兩個機器周期(24個時鐘振蕩周期)的高電平即可使單片機復(fù)位。
VPD:備用電源輸入端。Vcc掉電期間,此引腳用于接備用電源,當電壓降低到下限值時,備用電源經(jīng)此引腳向內(nèi)部RAM提供電壓,以保護內(nèi)部RAM中的信息不丟失。
EA/VPP:訪問程序存儲器控制信號/固化編程電壓輸入端。
EA:訪問程序存儲器控制信號。
當EA引腳接低電平時,對ROM的讀操作只訪問外部程序存儲器(對8031來說,因內(nèi)部無ROM,所以該引腳必須接地)。
當EA引腳接高電平時,對ROM的讀操作從內(nèi)部程序存儲器0000H單元開始,當PC超過0FFFH時(對8051、8751來說),自動轉(zhuǎn)向外部程序存儲器,最大尋址范圍為0FFFFH,即64KB。
VPP:固化編程電壓輸入端。對于EPROM型單片機,在EPROM編程寫入(固化程序)期間,此引腳用于輸入(一般21V)編程電源。
ALE/PROG:地址鎖存允許信號/EPROM編程脈沖輸入端。
ALE:地址鎖存允許信號。當CPU訪問外部存儲器時,ALE信號(高電平有效)用于控制把P0口輸出的低8位地址鎖存到鎖存器中,以實現(xiàn)低位地址和數(shù)據(jù)的隔離(因為P0口是地址/數(shù)據(jù)分時復(fù)用口)。即使不訪問外部存儲器,ALE端仍以固定的頻率(振蕩器頻率的1/6)輸出正脈沖,作為外部時鐘或外部定時脈沖使用。
如果想知道8051/8031芯片的好壞,可用示波器查看ALE端是否有脈沖信號輸出,如有,則表明芯片基本上是好的。
PROG:EPROM編程脈沖輸入端。對于EPROM型單片機,在EPROM編程寫入(固化程序)期間,此引腳用于輸入編程脈沖(PROG)。
PSEN:外部程序存儲器讀選通信號。
在讀外部ROM期間,每個機器周期PSEN二次有效(低電平),而訪問外部RAM時,是由RD、WR信號控制的,因此可以看出MCS-51系列單片機的程序和數(shù)據(jù)是可以存放在不同的外部存儲器中的,可以分別尋址。
如果想查看一個8051/8031小系統(tǒng)上電后CPU能否正常,到EPROM/ROM中讀取指令碼,也可用示波器查看PSEN端有無脈沖輸出,如有,則說明基本上工作正常。
2.1.3 CHMOS增強型單片機8XC51FA的主要特點
8XC51FA又稱為8XC252,是以8051為核心的一種CHMOS增強型單片機,它與8051芯片的指令系統(tǒng)和引腳兼容,其主要特點是增加了一個可編程的計數(shù)器陣列PCA (Programable Counter Array)。PCA由一個16位的定時器/計數(shù)器和5個16位的比較/捕捉模塊所組成,邏輯結(jié)構(gòu)如圖2.4所示,16位定時器/計數(shù)器作為比較/捕捉模塊的定時標準,因此主要作為定時器使用。每個比較/捕捉模塊都可用做捕捉外部引腳CEXn上輸入電平發(fā)生跳變的時間、軟件定時器、高速輸出、脈沖寬度調(diào)制PWM輸出,而模塊4還可用做系統(tǒng)的監(jiān)視定時器WDT(Watch Dog Timer,又稱為看門狗)。與基本型芯片不同的是,8XC51FA的P1口為雙功能口,其中P1.3~P1.7的第二功能為PCA的輸入/輸出線CEX0~CEX4。

圖2.4 PCA的邏輯結(jié)構(gòu)圖
PCA定時器/計數(shù)器由特殊功能寄存器CH、CL組成,CPU在任何時候都可以對它們進行讀/寫。PCA定時器/計數(shù)器的計數(shù)脈沖可以編程為下列4個信號中的任意一個。
① 振蕩器的12分頻信號。
② 振蕩器的4分頻信號。
③ 定時器T0溢出信號。
④ 外部引腳ECI(P1.2)上輸入信號。
PCA的定時器/計數(shù)器是個加1計數(shù)器,計數(shù)器溢出時置“1”中斷請求標志CF,8XC51FA處于空閑方式時,可以允許或停止PCA定時器/計數(shù)器的計數(shù),與它有關(guān)的特殊功能寄存器還有方式寄存器CMOD和控制寄存器CCON。
控制寄存器CCON用來啟動和停止PCA的定時器/計數(shù)器,地址為0D8H;方式寄存器CMOD用來設(shè)置PCA定時器/計數(shù)器的運行方式,地址為09DH(注意到在基本型8051單片機中,這兩個單元是不用的)。
PCA中有5個比較/捕捉模塊,每一個模塊都有一個自己的方式寄存器CCAPM0~4,它們都是特殊的功能寄存器,其地址分別為0DAH~0DEH,這些寄存器分別控制對應(yīng)模塊的工作方式,其格式完全相同,如表2.1所示。
表2.1 PCA寄存器定義表

通過這5個捕捉模塊使單片機具有一些特殊的功能。
1.16位捕捉方式
PCA中的比較/捕捉模塊采樣外部引腳(CEX0~CEX4)上的輸入電平,當檢測到一個有效跳變時,由硬件將PCA定時器的計數(shù)值裝入模塊捕捉寄存器,捕捉寄存器中的數(shù)值反映了外部引腳輸入發(fā)生跳變時PCA定時器的計數(shù)值,也就是記錄了發(fā)生跳變的時間。利用PCA模塊的捕捉方式可以測量多達5個不同輸入脈沖的周期、寬度、占空比和相位差。
2.軟件定時器和高速輸出方式
5個模塊都可以工作于高速輸出方式,這種高速輸出方式比一般中斷方式的軟件定時輸出在時間上更為精確,因為中斷等時間不影響高速輸出的操作。
3.脈沖寬度調(diào)制器PWM方式
這種方式可用做D/A轉(zhuǎn)換器,PWM輸出脈沖的頻率取決于PCA定時器的計數(shù)脈沖,若振蕩器的頻率為16MHz,則輸出波形的最高頻率為15.6kHz。
4.監(jiān)視定時器WDT(Watch Dog Timer)
監(jiān)視定時器WDT的作用是當系統(tǒng)工作不正常時會自動產(chǎn)生一個復(fù)位信號,迫使系統(tǒng)恢復(fù),一般用在外界干擾信號較大的場合,只有模塊4才可以編程為WDT方式。
8XC51FA中與編程計數(shù)器陣列PCA有關(guān)的特殊功能寄存器一共有19個,均為基本型單片機中不用的單元。8XC51FA的中斷源有7個,其中5個是基本型中所具有的,還有一個定時器T2中斷,與8052相同,此外還有它所獨有的PAC中斷。
2.1.4 MCS-51系列單片機的指令系統(tǒng)
指令系統(tǒng)是一套控制單片機執(zhí)行操作的編碼,是單片機能直接識別的命令,要開發(fā)任何一種單片機,都必須詳細了解這種單片機的指令功能,才能編寫出高效的軟件程序。
MCS-51指令系統(tǒng)具有功能強、尋址方式多、執(zhí)行速度快等特點,特別適合于控制。
MCS-51系列單片機的指令是機器碼指令,即用二進制代碼(或十六進制數(shù))表示的指令,也稱目標代碼指令。只有機器碼指令才能夠被計算機硬件直接識別和執(zhí)行,但要記住這些機器碼指令顯然是很麻煩的。為此,人們想了很多辦法,匯編語言就是其中之一。
匯編語言指令是用助記符來表示的指令。助記符一般為英語單詞的縮寫,如用“ADD”表示加法,用“MOV”表示傳送等。下面是兩條分別用代碼和助記符形式書寫的指令:
代碼指令 助記符 功能 74 0A MOV A,#0AH 將十六進制數(shù)0AH送到累加器A中 24 14 ADD A,#14H 累加器A中的數(shù)與十六進制數(shù)14H相加,結(jié)果存入累加器A
匯編語言指令不能被計算機硬件直接識別和執(zhí)行,必須通過匯編把它變成機器碼指令才能被機器執(zhí)行。匯編語言指令容易記憶,便于程序的編寫和閱讀,是單片機中常用的指令形式。匯編語言的每一條指令都可以通過查表找到與其相對應(yīng)的機器碼,這個過程稱為匯編,現(xiàn)在有專門的編譯程序把匯編語言編寫的程序轉(zhuǎn)換成機器碼指令程序,所以只要掌握匯編語言指令及其編寫程序的方法,就可以編寫程序控制單片機執(zhí)行相應(yīng)的工作。
另外,還有可以通過C語言編寫MCS-51系列單片機的程序,通過編譯程序轉(zhuǎn)換成相應(yīng)的機器碼指令程序,限于篇幅,這里不再討論。
計算機指令大多是通過對數(shù)據(jù)的操作來完成的。這些被操作的數(shù)據(jù),叫做操作數(shù)。所謂尋址方式,就是尋找操作數(shù)所在地址的方式。這里的地址一般是某個存儲單元或寄存器。
MCS-51指令系統(tǒng)的尋址方式有7種,分別是立即尋址、寄存器尋址、間接尋址、直接尋址、變址尋址、相對尋址和位尋址。
MCS-51系列單片機的指令系統(tǒng)由111條指令構(gòu)成,按字節(jié)數(shù)可分為:單字節(jié)指令49條,雙字節(jié)指令45條,三字節(jié)指令17條。按指令執(zhí)行周期分為:單機器周期指令64條,雙機器周期指令45條,兩條四機器周期指令分別為乘法和除法指令。當主頻為12MHz時,一個機器周期為1μs。MCS-51系列單片機的指令系統(tǒng)按指令功能可分為算術(shù)運算指令、邏輯操作指令、數(shù)據(jù)傳送指令、控制轉(zhuǎn)移指令及位操作指令共5大類,主要功能介紹如下。
1.數(shù)據(jù)傳送指令
數(shù)據(jù)傳送操作是一種最基本、最主要的操作。MCS-51的數(shù)據(jù)傳送操作可以在累加器A、工作寄存器R0~R7、內(nèi)部數(shù)據(jù)存儲器、外部數(shù)據(jù)存儲器和程序存儲器之間進行,其中對A、R0~R7的操作最多。數(shù)據(jù)傳送指令一般是把源操作數(shù)傳送到目標操作數(shù),指令執(zhí)行后,源操作數(shù)不變,目標操作數(shù)為源操作數(shù)。傳送指令不影響標志位(寫PSWP除外)。
數(shù)據(jù)傳送指令可分為以下幾類。
① 內(nèi)部RAM數(shù)據(jù)傳送指令。
② 外部RAM數(shù)據(jù)傳送指令。
③ 查表指令。
2.算術(shù)運算指令
MCS-51的算術(shù)操作類指令可分為加法、帶進位加、帶借位減、加1、減1以及其他運算指令共6組。每組有4條指令,除最后一組外,4條指令的源操作數(shù)分別采用寄存器尋址、直接尋址、寄存器間接尋址及立即尋址,而目的操作數(shù)都是累加器A(若有兩個操作數(shù)的話)。
3.邏輯操作指令
邏輯操作類指令包括邏輯與、邏輯或、邏輯異或運算及累加器A清零、求反和移位。
邏輯運算是按位進行的,不產(chǎn)生進位。邏輯與運算中,與“1”相與結(jié)果不變,與“0”相與結(jié)果為0;邏輯或運算中,與“1”相或結(jié)果為1,與“0”相或結(jié)果不變;邏輯異或運算中,與“1”相異或結(jié)果取反,與“0”相異或結(jié)果不變。
4.控制轉(zhuǎn)移指令
轉(zhuǎn)移指令是通過改變程序計數(shù)器PC的值,使PC有條件或無條件地或通過其他方式,從當前的位置轉(zhuǎn)移到一個指定的地址單元去,從而改變程序的執(zhí)行方向。
轉(zhuǎn)移指令分為4大類:無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、調(diào)用指令及返回指令。
5.位操作指令
位操作指令是以位(bit)作為單位來進行運算和操作的。MCS-51系統(tǒng)在硬件方面有一個位處理器,它實際上是一個一位微處理器。它以進位位CY(程序狀態(tài)字PSW.7)作為累加器C,以內(nèi)部RAM和SFR內(nèi)的位尋址區(qū)的單位作為操作數(shù)。與此相應(yīng),有一個專門處理位變量(又稱為布爾變量)的指令子集,以完成對布爾變量的傳送、運算、轉(zhuǎn)移、控制等操作。由于MCS-51系統(tǒng)中有了這個頗具特色的位變量處理子系統(tǒng),使得程序設(shè)計變得更加方便和靈活。例如,在許多情況下可以避免不必要的大范圍的數(shù)據(jù)傳送、屏蔽字節(jié)、測試和轉(zhuǎn)移,在外圍控制的“位?檢測”應(yīng)用中,提供了最佳的代碼和速度。利用位邏輯運算指令,可以實現(xiàn)對各種組合邏輯電路的模擬,即用軟件方法來獲得組合電路的邏輯功能。所有這些都是MCS-51單片機的一個很重要的特點。
位操作指令包括位傳送、條件傳送、位運算等。所有的位訪問均為直接尋址。
MCS-51中的位地址有以下幾種方式:直接使用位地址00H~FFH、位寄存器定義名,如20H、C、OV等;用字節(jié)寄存器名后加位數(shù),如PSW.4、P1.5等;用字節(jié)地址和位數(shù)表示,如20H單元位0到位7,可寫成20.0~20.7。
從MCS-51系列單片機的指令系統(tǒng)中可以看到,這種8位的單片機適用于控制系統(tǒng),但遇到復(fù)雜的數(shù)據(jù)處理和程序設(shè)計就需要選用其他類型的單片機了。
為了便于查詢,附錄A給出了MCS-51系列單片機的全部指令。
- 機器學習及應(yīng)用(在線實驗+在線自測)
- ETL with Azure Cookbook
- 圖形圖像處理(Photoshop)
- 數(shù)控銑削(加工中心)編程與加工
- 深度學習中的圖像分類與對抗技術(shù)
- 可編程控制器技術(shù)應(yīng)用(西門子S7系列)
- Hadoop Real-World Solutions Cookbook(Second Edition)
- Data Wrangling with Python
- 中國戰(zhàn)略性新興產(chǎn)業(yè)研究與發(fā)展·智能制造裝備
- 軟件工程及實踐
- Linux Shell編程從初學到精通
- 簡明學中文版Flash動畫制作
- 中老年人學電腦與上網(wǎng)
- 計算機辦公應(yīng)用培訓(xùn)教程
- Win 7二十一