




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機原理與應用教材:單片機原理與應用及C51程序設計(第4版)清華大學出版社謝維成,楊加國西華大學第1章基礎知識主要內容:信息在計算機中的表示。單片機概述。51單片機及主要品種。重點:數在計算機內的表示。51單片機概念和特點。1.1信息在計算機中的表示1.1.1數在計算機內的表示計算機中的數通常有兩種:無符號數和有符號數。
無符號數<-----
二進制形式表示
例如:123表示成01111011B。
有符號數---
機器數,它的數值稱為機器數的真值。3符號位數值位機器數在計算機中有三種表示法:
原碼、反碼和補碼。+0-1機器數在計算機中表示:41.原碼符號位絕對值注意:(1)原碼表示范圍為-(2n-1-1)~+(2n-1-1),例如:8位的范圍為-127~+127。(2)原碼表示時,-0的編碼為10000000,+0的編碼為00000000。(假設機器字長為8位)【例1-1】求+76、-45的原碼(機器字長8位)因為
+76
=76=1001100B
-45
=45=101101B所以[+76]原=01001100B[-45]原=10101101B格式:52.反碼符號位0絕對值符號位1絕對值各位取反格式:正數負數注意:(1)反碼表示范圍為-(2n-1-1)~+(2n-1-1),例如:8位的范圍為-127~+127。(2)反碼表示時,-0的編碼為11111111,+0的編碼為00000000。(假設機器字長為8位)63.補碼
【例1-3】求+76、-45的補碼(機器字長8位)。因為[+76]原=01001100B[-45]原=10101101B所以[+76]補=01001100B[-45]補=11100111B
符號位0絕對值符號位1絕對值各位取反格式:正數負數+17注意:(1)補碼表示范圍為-(2n-1-1)~+(2n-1),例如:8位的范圍為-128~+127。(2)補碼表示時,-0的編碼為00000000,+0的編碼為00000000。(假設機器字長為8位)[X]補
[-X]補
【例1-4】已知+45的補碼為00101101B,用求補運算求-45的補碼。因為[45]補
[-45]補所以
[-45]補=11010010+1=11010011B8求補運算:一個二進制數,符號位和數值位一起取反,末位加1。求補運算具有以下的特點:94.補碼的加減運算補碼的加、減法運算規則如下:[X+Y]補=[X]補+[Y]補[X-Y]補=[X]補-[Y]補=[X]補+[-Y]補=[X]補+{[Y]補}求補即:補碼表示時,求兩個數之和[X+Y]補,直接用兩個數相加([X]補+[Y]補);求兩個數之差[X-Y]補,可以直接用兩個數相減[X]補-[Y]補,也可以先對減數[Y]補求補運算,然后再與被減數[X]補相加。10【例1-5】假設計算機字長為8位,完成下列補碼運算。① (+76)+(-45)因為 [+76]補=01001100B[-45]補=11010011B
[+76]補=01001100B+ [-45]補=11010011B所以[(+76)+(-45)]補=[+76]補+[-45]補=00011111B=[+31]補100011111B②
(+76)-(+45)因為 [+76]補=01001100B[+45]補=00101101B
所以[(+76)-(+45)]補=[+76]補-[+45]補=[+76]補+{[+45]補}求補=00011111B=[+31]補5.十進制數的表示
十進制編碼又稱為BCD碼。分壓縮BCD碼和非壓縮BCD碼。壓縮BCD碼又稱為8421碼,它是用四位二進制編碼來表示一位十進制符號。11例如:十進制數124的壓縮BCD碼為000100100100。
十進制數4.56的壓縮BCD碼為0100.01010110。十進制符號壓縮BCD編碼十進制符號壓縮BCD編碼000005010110001601102001070111300118100040100910011.1.2字符在計算機內的表示美國信息交換標準代碼ASCII碼AmericanStandardCodeforInformationInterchange12數字符號0~9:30H—39h26個大寫字母:41H—5AH26個小寫字母:61H—7AH1.2單片機概述1.2.1單片機的基本概念
單片機屬于微型計算機的一種,是把微型計算機中的微處理器、存儲器、I/O接口、定時器/計數器、串行接口、中斷系統等電路集成在一塊集成電路芯片上形成的微型計算機。因而被稱為單片微型計算機,簡稱為單片機。單片機按照用途可分為通用型和專用型兩大類。在單片機使用上注意以下幾個相互有相同點也有區別的概念“(1)單板機:(2)單片機:(3)多板機:131.2.2單片機發展及其主要品種1.4位單片機2.8位單片機3.16位單片機4.32位單片機
在1978年以前各廠家生產的8位單片機,由于集成度的限制,一般都沒有串行接口,只提供小范圍的尋址空間(小于8KB),性能相對較低,稱為低檔8位單片機。
在1978年以后,集成電路水平提高,出現了一些高性能的8位單片機,它們的尋址能力達到了64KB,片內集成了4-8KB的ROM,片內除了帶并行I/O口外,還有串行I/O接口,甚至有些還集成A/D轉換器。這類單片機稱為高檔8位單片機。141.2.3單片機的主要特點(1)在存儲器結構上,單片機的存儲器采用哈佛(Harvard)結構。ROM和RAM是嚴格分開的。ROM稱為程序存儲器,只存放程序、固定常數和數據表格。RAM則為數據存儲器,用作工作區及存放數據。(2)在芯片引腳上,大部份采用分時復用技術。(3)在內部資源訪問上,通過用特殊功能寄存器(SFR)的形式。(4)在指令系統上,采用面向控制的指令系統。(5)內部一般都集成一個全雙工的串行接口。(6)單片機有很強的外部擴展能力。151.3.4單片機的應用1.單機應用(1)工業自動化控制。(2)智能儀器儀表。(3)計算機外部設備和智能接口(4)家用電器。2.多機應用3.單片機的等級(1)民用級或商用級。溫度適應能力在0
C~70C,適用于機房和一般的辦公環境。(2)工業級。溫度適應能力在-40C~85C,適用于工廠和工業控制中,對環境的適應能力較強。(3)軍用級。溫度適應能力在-65C~125C,運用于環境條件苛刻,溫度變化很大的野外。主要用在軍事上。16171.351單片機及主要品種3大系列:51系列、PIC系列和AVR系列1.3.151單片機概述Intel公司生產的51單片機及其他公司生產的采用51內核單片機。1.3.251單片機的主要品種1.MCS-51系列單片機美國Intel公司、1980年,包含51和52兩個子系列。51子系列,有8031、8051、8751三種機型,52子系列,有8032、8052、8752三種機型。采用兩種半導體工藝生產:HMOS工藝和CHMOS工藝。采用CHMOS的器件在編號中用一個C來加以區別:如80C31、80C51等。182.ATMEL公司的AT89系列單片機美國20世紀80年代中期成立,技術優勢是Flash存儲器技術。AT89C5X系列單片機與MCS-51單片機完全兼容,代表產品為AT89C51系列和AT89S5X系列。除了具有MCS-51/52系列的特點外,AT89C51系列片內集成4k/8k字節Flash閃速存儲器,工作頻率可達24MHZ。AT89S5X系列是在AT89C5X系列之后推出的新機型,代表產品為AT89S51和AT89S52。在繼承了AT89C5X系列的所有軟硬件資源的前提下,作了以下方面的改進:片內集成雙數據指針(DPTR),增加看門狗定時器(WDT)、在系統編程(ISP,也稱在線編程)、串行外設接口(SPI),工作頻率上限提高到33MHZ。目前,AT89S5X系列在實際中得到了廣泛應用。193.STC系列51單片機STC是深圳宏晶科技有限公司生產的單片機系列符號。宏晶公司是中國單片機技術的領航者,致力于高性能單片機的設計和制造。具有自主知識產權,處于國際領先地位。4.SST公司的SST89系列單片機SST89系列單片機是美國SST公司推出的高可靠、小扇區結構的51內核單片機。所有產品均帶IAP(在應用可編程)和ISP(在系統可編程)功能,不占用用戶資源,通過串行接口即可在系統仿真和編程。204.SiliconLabs公司51單片機5.華幫W77系列、W78系列單片機1.3.3其他系列的8位單片機1.PIC系列單片機PIC系列單片機是美國Microchip公司開發的單片機,有多種機型,其8位單片機主要有PIC10、PIC12、PIC16、PIC18幾個系列。與51單片機主要在這幾個方面不一樣:21(1)總線結構:51的總線結構是馮-諾依曼型,計算機在同一個存儲空間取指令和數據,兩者不能同時進行;而PIC的總線結構是哈佛結構,程序和數據可以同時進行訪問。(2)流水線結構:MCS-51的取指和執行采用單指令流水線結構,即取一條指令,執行完后再取下一條指令;而PIC的取指和執行采用雙指令流水線結構,當一條指令被執行時,允許下一條指令同時被取出,這樣就實現了單周期指令。(3)寄存器組:PIC的所有寄存器,包括I/O口,定時器和程序計數器等都采用RAM結構形式,而且都只需要一個指令周期就可以完成訪問和操作;而MCS-51需要兩個或兩個以上的周期才能改變寄存器的內容。222.AVR系列單片機AVR單片機是1997年由ATMEL公司研發出的增強型內置Flash的RISC(ReducedInstructionSetCPU)精簡指令集高速8位單片機。指令簡單,寬度固定,指令周期短,具備1MIPS/MHz(百萬條指令每秒/兆赫茲)的高速處理能力。AVR單片機特點如下:1)AVR單片機硬件結構采取8位機與16位機的折中策略。2)AVR單片機內嵌高質量的Flash程序存儲器,擦寫方便,支持ISP和IAP,便于產品的調試、開發、生產、更新。3)AVR單片機的I/O線全部可單獨設定為輸入/輸出,可上拉電阻輸入/輸出,可高阻輸入,驅動能力強。功能強大,使用靈活。234)AVR單片機片內具備多種獨立的時鐘分頻器,分別供URAT、I2C、SPI使用。5)AVR單片機包含豐富的外部設備。6)低功耗。習題:1、2、3、4、5單片機原理與應用教材:單片機原理與應用及C51程序設計(第4版)清華大學出版社謝維成,楊加國西華大學第2章單片機基本原理主要內容:MCS-51單片機的中央處理器結構存儲器的組織外部引腳及片內總線252.151系列單片機簡介2.251系列單片機的結構原理2.351系列單片機的外部引腳及片外總線2.451系列單片機的工作方式2.551系列單片機的時序章節262.1MCS-51系列單片機簡介MCS-51系列單片機是美國Intel公司在1980年推出的高性能8位單片機,它包含51和52兩個子系列。對于51子系列,主要有8031、8051、8751三種機型,它們的指令系統與芯片引腳完全兼容,僅片內程序存儲器有所不同,8031芯片不帶ROM,8051芯片帶4KROM,8751芯片帶4KEPROM。51子系列的主要特點:◆8位CPU。◆片內帶振蕩器,頻率范圍1.2~12MHZ。◆片內帶128字節的數據存儲器。◆片內帶4K的程序存儲器。◆程序存儲器的尋址空間為64K字節。◆片外數據存儲器的尋址空間為64K字節。◆128個用戶位尋址空間。27◆21個字節特殊功能寄存器。◆4個8位的并行I/O接口:P0、P1、P2、P3。◆2個16位定時器/計數器◆2個優先級別的5個中斷源。◆1個全雙工的串行I/O接口,可多機通信。◆111條指令,含乘法指令和除法指令。◆片內采用單總線結構。◆有較強的位處理能力。◆采用單一+5V電源。對于52子系列,有8032、8052、8752三種機型。52子系列與51子系列相比大部分相同,不同之處在于:片內數據存儲器增至256字節;8032芯片不帶ROM,8052芯片帶8KROM,8752芯片帶8KEPROM;有3個16位定時器/計數器;6個中斷源。本書以51子系列的8051介紹MCS-51單片機的基本原理2851子系列的主要特點:2.2MCS-51系列單片機的結構原理2.2.1MCS-51系列單片機的基本組成29PSENALERESETXLAT1P0.0~P0.7P2.0~P2.7RAM地址寄存器RAMP0鎖存器P2鎖存器EPROM或ROM程序地址寄存器緩沖器B寄存器ACC暫存器2暫存器1ALUPSWSPPC增量器PCDPTRP0驅動器P2驅動器特殊功能寄存器指令寄存器定時及控制P1鎖存器P3鎖存器P1驅動器P3驅動器振蕩器VssP1.0~P1.7P3.0~P3.7EAXLAT2Vcc2.2.2MCS-51系列單片機的內部結構302.2.38051的中央處理器(CPU)1.運算部件以算術邏輯運算單元ALU為核心,包含累加器ACC(A)、B寄存器、暫存器1、暫存器2、標志寄存器PSW等部件。
邏輯運算單元ALU:8位的運算器,可以實現算術運算、邏輯運算,數據傳輸、程序轉移等功能。
累加器ACC(A):參與絕大多數運算處理。寄存器B稱為輔助寄存器:輔助累加器ACC(A)完成乘法和除法運算。
標志寄存器PSW:用于保存指令執行的狀態,以供程序查詢和判別;4位狀態標志和2位控制標志。D7D6D5D4D3D2D1D0CACF0RS1RS0OV-PPSWC(PSW.7):進位或借位標志位。AC(PSW.6):輔助進位或借位標志位。F0(PSW.5):用戶標志位。RS1、RS0(PSW.4、PSW.3):寄存器組選擇位OV(PSW.2):溢出標志位。P(PSW.0):偶校驗標志位。RS1RS0工作寄存器組000組(00H-07H)011組(08H-0FH)102組(10H-17H)113組(18H-1FH)33【例2-1】試分析下面指令執行后,累加器A,標志位C、AC、OV、P的值。
MOVA,#67H
ADDA,#58H
加法運算過程如下:
67H=01100111B58H=01011000B
01100111B
+
01011000B
10111111=0BFH則執行后累加器A中的值為0BFH,由相加過程得C=0、AC=0、OV=1、P=1。2.控制部件
包括定時和控制電路、指令寄存器、指令譯碼器、程序指針PC、PC增量器、堆棧指針SP、數據指針DPTR以及信息傳送控制部件等。程序指針寄存器PC是一個16位的寄存器,8051單片機通過PC控制從程序存儲器取指令。堆棧指針寄存器SP,8位,用于控制對堆棧空間進行操作,堆棧空間位于片內數據存儲器。數據指針寄存器DPTR,16位,DPTR作指針控制對片外64KB數據存儲器進行訪問。可分為高8位(DPH)和低8位(DPL)。3.AT89S5X單片機的雙數據指針和輔助寄存器
AT89S5X單片機,兩個數據指針寄存器DPTR0(DPTR)和DPTR1,兩個輔助寄存器AUXR和AUXR1。其中:DPS=0,選擇數據寄存器DPTR0;DPS=1,選擇數據寄存器DPTR1;默認DPS=0。D7D6D5D4D3D2D1D0
-------DPSA2H3737D7D6D5D4D3D2D1D0
---WDIDLEDISRTO--DISALE8EH其中:DISALE:ALE的禁止/允許位。ALE=0,ALE信號有效,發ALE脈沖;DISRTO:禁止/運行看門狗定時器WDT溢出時輸出復位信號。DISRTO=0,WDT溢出時,允許向RST引腳輸出一個高電平脈沖,使單片機復位。DISRTO=1,禁止。WDIDLE:WDT在空閑模式下的禁止/允許位。
WDIDLE=0,允許WDT在空閑模式下計數;
WDIDLE=0,禁止。復位時,AUXR寄存器值為0。2.2.48051的存儲器結構存儲器存放程序,一般由只讀存儲器芯片構成,又可簡稱為ROM;也可存放固定不變的常數和數據表格,數據存儲器:存放數據,一般用隨機存儲器構成,所以又可簡稱為RAM。通常用作工作區及存放數據。程序存儲器:1.程序存儲器1) 程序存儲器的編址與訪問程序存儲器總容量為64KB,地址范圍0000H~0FFFFH。從物理結構分片內和片外,8031和8032片內沒有集成程序存儲器,8751情況與8051片內集成4KB,8052和8752內部集成了8KB程序存儲器。
片內程序存儲器地址范圍0000H~0FFFH(1FFFH),片外程序存儲器地址范圍0000H~FFFFH。片內和片外通過芯片上(—EA)片外程序存儲器選用端引腳區分。具體見下圖:2) 程序存儲器的特殊地址地址特點0000H復位地址0003H外部中斷0中斷入口地址000BH定時/計數器0中斷入口地址0013H外部中斷1中斷入口地址001BH定時/計數器1中斷入口地址0023H串行口中斷入口地址002BH定時/計數器2中斷入口地址(僅52子系列有)2.數據存儲器1)片內數據存儲器分為片內隨機存儲塊和特殊功能寄存器(SFR)塊。片內隨機存儲塊128或256(52)字節,地址范圍00H~7FH或FFH(52)。
特殊功能寄存器(SFR)塊128字節,地址范圍80H~0FFH;片內隨機存儲塊按功能又可以分成以下幾個部分:工作寄存器組區、位尋址區、一般RAM區和堆棧區。(1)工作寄存器組區(通用寄存器)00H~1FH單元,共32個字節。分4組,稱為0組、1組、2組和3組。每組8個,依次用R0~R7表示和使用。組的選擇見前面。(2)位尋址區。20H~2FH單元,16字節,128位。可以按位方式使用,位地址范圍為00H~7FH。字節單元地址D7D6D5D4D3D2D1D020H070605040302010021H0F0E0D0C0B0A090822H171615141312111023H1F1E1D1C1B1A191824H272625242322212025H2F2E2D2C2B2A292826H373635343332313027H3F3E3D3C3B3A393828H474645444342414029H4F4E4D4C4B4A49482AH57565554535251502BH5F5E5D5C5B5A59582CH67666564636261602DH6F6E6D6C6B6A69682EH77767574737271702FH7F7E7D7C7B7A7978(3)一般RAM區。30H~7FH或FFH(52)是一般RAM區,也稱為用戶RAM區,共80(208)字節,用字節地址按字節方式使用。(4)堆棧區與堆棧指針。存儲器中按“先入后出、后入先出”的原則進行管理的一段存儲區域。通過堆棧指針SP管理。堆棧有入棧和出棧兩種操作,入棧時先改變堆棧指針SP,再送入數據,出棧時先送出數據,再改變堆棧指針SP。根據入棧方向堆棧一般分兩種:向上生長型和向下生長型。向上生長型堆棧
向下生長型堆棧8051單片機堆棧:向上生長型,位于片內隨機存儲塊,以字節為單位,復位時,SP的初值為07H,因此復位時堆棧實際上是從08H開始。(5)特殊功能寄存器。
除PC外,8051有18個特殊功能寄存器,其中3個為雙字節,共占用21個字節。對于52子系列,特殊寄存器有21個,其中5個為雙字節,共占用26個字節。CPU專用寄存器:累加器A(E0H),寄存器B(F0H),程序狀態寄存器PSW(D0H),堆棧指針SP(81H),數據指針DPTR(82H、83H)。并行接口:P0~P3(80H、90H、A0H、B0H)。串行接口:串口控制寄存器SCON(98H),串口數據緩沖器SBUF(99h),電源控制寄存器PCON(87H)。定時/計數器:方式寄存器TMOD(89H),控制寄存器TCON(88H),初值寄存器TH0、TL0(8CH、8AH)/TH1、TL1(8DH、8BH)。中斷系統:中斷允許寄存器IE(A8H),中斷優先級寄存器IP(B8H)。定時/計數器2相關寄存器:定時/計數器2控制寄存器T2CON(CBH),定時/計數器2自動重裝寄存器RLDL、RLDH(CAH、CBH),定時/計數器2初值寄存器TH2、TL2(CDH、CCH)(僅52子系列有)。見書表2.4。注意:字節地址能夠被8整除的特殊功能寄存器,既能按字節方式處理,也能按位方式處理。2) 片外數據存儲器
片外用RAM芯片擴展,最多為64KB,地址范圍為0000H~0FFFFH。通過DPTR作指針間接方式訪問。低端的256字節,也可用兩位十六進制地址編址,地址范圍為00H~0FFH,用R0和R1間接方式訪問。8051單片機的存儲器地址空間程序存儲器64KB,地址范圍為0000H—0FFFFH片內數據存儲器256B,地址范圍為00H—0FFH片外數據存儲器64KB,地址范圍為0000H—0FFFFH片外數據存儲器低256B,地址范圍為0000H—0FFFFH位數據256B,地址范圍為00H—0FFH注意:第一,64K的程序存儲器和64K的片外數據存儲器地址空間都為0000H—0FFFFH,地址空間是重疊的,它們如何區分呢?第二,位數據、片內數據存儲器和片外數據存儲器的低256字節的地址空間是重疊的,它們如何區分呢?512.2.58051的輸入/輸出接口
4個8位的并行I/O接口:P0、P1、P2和P3。既可以作輸入,也可以作輸出,既可按8位處理,也可按位方式使用。輸出時具有鎖存能力,輸入時具有緩沖功能。1.P0口地址/數據分時復用接口。通用的I/O接口
作通用的I/O接口,輸出時,須外接上拉電阻。輸入時,須先向輸出鎖存器寫寫“1”。2.P1口只能作通用I/O接口使用。通用I/O輸入時,也須先向輸出鎖存器寫寫“1”。3.P2口
通用I/O接口高8位地址線。通用I/O輸入時,也須先向輸出鎖存器寫寫“1”。4.P3口
通用I/O接口每一根線還具有獨立的第二種功能P3口的引腳第二功能P3.0
RXD串行口輸入端P3.1
TXD串行口輸出端P3.2
外部中斷0請求輸入端,低電平有效P3.3外部中斷1請求輸入端,低電平有效P3.4
定時/計數器0外部計數脈沖輸入端P3.5
定時/計數器1外部計數脈沖輸入端P3.6—WR外部數據存儲器寫信號,低電平有效P3.7
—RD外部數據存儲器讀信號,低電平有效通用I/O輸入時,也須先向輸出鎖存器寫“1”。P3口的結構2.3MCS-51系列單片機的外部引腳及片外總線57一.輸入/輸出引腳(1)P0口(39~32腳):P0.0~P0.7統稱為P0口。在不接片外存儲器與不擴展I/O口時,作為準雙向輸入/輸出口。在接有片外存儲器或擴展I/O口時,P0口分時復用為低8位地址總線和雙向數據總線。(2)P1口(1~8腳):P1.0~P1.7統稱為P1口,可作為準雙向I/O口使用。對于52子系列,P1.0與P1.1還有第二功能:P1.0可用作定時器/計數器2的計數脈沖輸入端T2,P1.1可用作定時器/計數器2的外部控制端T2EX。(3)P2口(21~28腳):P2.0~P2.7統稱為P2口,一般可作為準雙向I/O口使用;在接有片外存儲器或擴展I/O口且尋址范圍超過256字節時,P2口用作高8位地址總線。(4)P3口(10~17腳):P3.0~P3.7統稱為P3口。除作為準雙向I/O口使用外,還可以將每一位用于第二功能,而且P3口的每一條引腳均可獨立定義為第一功能的輸入輸出或第二功能。58二.控制線(1)ALE/PROG(30腳):地址鎖存信號輸出端。ALE在每個機器周期內輸出兩個脈沖。(2)
(29腳):片外程序存儲器讀選通信號輸出端,低電平有效。(3)RST/VPD(9腳):RST即為RESET,VPD為備用電源。當單片機振蕩器工作時,該引腳上出現持續兩個機器周期的高電平,就可實現復位操作,使單片機回復到初始狀態。上電時,考慮到振蕩器有一定的起振時間,該引腳上高電平必須持續10ms以上才能保證有效復位。(4)/VPP(31腳):EA為片外程序存儲器選用端。該引腳低電平時,選用片外程序存儲器,高電平或懸空時選用片內程序存儲器。三.主電源引腳VCC(40腳):接+5V電源正端。VSS(20腳):接+5V電源地端。59四.外接晶體引腳XTAL1、XTAL2(19、18腳):當使用單片機內部振蕩電路時,這兩個引腳用來外接石英晶體和微調電容,如圖(a)。當采用外部時鐘時,對于HMOS單片機,XTAL1引腳接地,XTAL2接片外振蕩脈沖輸入(帶上拉電阻);對于CHMOS單片機,XTAL2引腳接地,XTAL1接片外振蕩脈沖輸入(帶上拉電阻),如圖(b)和(c)。XTAL1XTAL2外部振蕩信號XTAL1XTAL2VccVssR外部振蕩信號XTAL2XTAL1VccVssR(a)內部時鐘方式(b)HMOS工藝外接時鐘(c)CHMOS工藝外接時鐘602.3.2片外總線結構控制總線:P3第二功能和RST、EA、ALE和PSEN控制線。61地址總線:16位(A15~A0),尋址范圍都為64KB。P0低8位,P2高8位。數據總線:8位(D7~D0),P0口直接提供。用戶I/O線:P1口,P3口第二功能沒有使用的信號線,P0、P2口(沒有用作地址線、數據線時)2.4MCS-51系列單片機的工作方式2.4.1復位方式在時鐘電路工作以后,當外部電路使得RST端出現2個機器周期(24個時鐘周期)以上的高電平,系統內部復位。復位有兩種方式:上電復位和按鈕復位。如圖所示。VccRSTVssMCS-51VccRSTVssMCS-511k1k200
(a)上電復位電路(b)按鈕復位電路62特殊功能寄存器初始內容特殊功能寄存器初始內容A00HTCON00HPC0000HTL000HB00HTH000HPSW00HTL100HSP07HTH100HDPTR0000HSCON00HP0~P3FFHSBUFXXXXXXXXBIPXX000000BPCON0XXX0000BIE0X000000BTMOD00H632.4.2程序執行方式2.4.3單步執行方式單步執行:在外部單步脈沖的作用下,使單片機一個單步脈沖執行一條指令后就暫停下來,再一個單步脈沖再執行一條指令后又暫停下來。它通常用于調試程序、跟蹤程序執行和了解程序執行過程。
單片機沒有單步執行中斷,MCS-51單片機的單步執行也要利用中斷系統完成。MCS-51的中斷系統規定,從中斷服務程序中返回之后,至少要再執行一條指令,才能重新進入中斷。
將外部脈沖加到INT0引腳,平時讓它為低電平,通過編程規定INT0為電平觸發。那么,不來脈沖時INT0總處于響應中斷的狀態。在INT0的中斷服務程序中安排下面的指令:PAUSE0:JNBP3.2,PAUSE0;若INT0=0,不往下執行PAUSE1:JBP3.2,PAUSE1;若INT0=1,不往下執行RETI;返回主程序執行下一條指令642.4.4AT89S5X單片機的空閑和掉電方式1.空閑工作方式空閑工作方式:CPU進入睡眠狀態,即CPU停止工作(實際是關斷送給CPU的時鐘信號),而片內外的功能部件任然繼續工作,內部RAM、SFR、PC、SP、PSW、P0~P3端口等都保持進入空閑工作方式前的狀態不變。空閑工作方式的進入是CPU通過執行指令把電源控制寄存器PCON中的IDL位置1實現。65D7D6
D5D4D3D2D1D0PCONSMOD—
——GF1GF0PDIDLSMOD(PCON.7):波特率加倍位。GF1、GF0:通用標志位。PD(PCON.1):掉電方式位。當PD=1時,進入掉電方式。IDL(PCON.0):空閑方式位。當IDL=1時,進入空閑方式。2.4.4AT89S5X單片機的空閑和掉電方式2.掉電工作方式PCON寄存器的PD位置1,進入掉電工作方式。振蕩器和片內的功能部件都停止工作,芯片的VCC可由備用電源供電。內部RAM和SFR等都保持進入掉電工作方式前的狀態不變。66空閑工作方式和掉電工作方式的退出也有兩種:一種是硬件復位;一種是外部中斷。
672.4.5AT89S5X單片機的ISP編程方式1.AT89S5X單片機Flash存儲器編程概述在系統編程(ISP),有串行和并行兩種編程模式,通常采用串行編程模式。特點:常規電壓4-5V。接口簡單,下載接口通常直接和開發板做在一起,通過ISP下載編程器和微機的USB接口連接。在編程過程中一般同時完成擦除、寫入、校驗和加密工作。2.AT89S5X單片機Flash存儲器加密3.AT89S5X單片機ISP接口MOSI(串行數據輸入線,P1.5引腳)、MISO(串行數據輸出線,P1.6引腳)和SCK(串行時鐘線,P1.7引腳)3根線,同時需要將RST接VCC。2.5MCS-51系列單片機的時序2.5.1時鐘周期、機器周期和指令周期指令周期:計算機取一條指令至執行完該指令需要的時間稱為指令周期。機器周期:機器周期是單片機的基本操作周期,每個機器周期包含S1、S2、
、S66個狀態,每個狀態包含2拍P1和P2,每一拍為一個時鐘周期(振蕩周期)。因此,一個機器周期包含12個時鐘周期。依次可表示為S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2。68時鐘周期(振蕩周期):單片機內部時鐘電路產生(或外部時鐘電路送入)的信號周期。69S1S2S3S4S5S6讀操作碼讀無效(丟失)單字節單機器周期指令S1S2S3S4S5S6讀操作碼讀第二個字節雙字節單機器周期指令70S1S2S3S4S5S6讀操作碼S1S2S3S4S5S6三次讀操作無效(丟失)單字節、雙機器周期指令的時序712.5.2.訪問外部ROM的時序
用到P0和P2口,P0分時用做低位地址總線和數據總線,P2口用做高8位地址總線。
控制信號ALE和72訪問外部ROM過程如下:(1)在S1P2時刻ALE信號有效。(2)在P0口送出ROM地址低8位,在P2口送出ROM地址高8位。A0~A7只持續到S2P2結束,故在外部要用鎖存器加以鎖存,用ALE作為鎖存信號。A8~A15在整個讀指令過程都有效,不必再接鎖存器。到S2P2前ALE失效。(3)在S3P1時刻開始低電平有效,用它來選通外部ROM的使能端,所選中ROM單元的內容,即指令,從P0口讀入到CPU,然后失效。(4)在S4P2后開始第2次讀人,過程與第1次相同。73用到P0和P2口,P0分時用做低位地址總線和數據總線,P2口用做高8位地址總線。
控制信號ALE、、和2.5.3.訪問外部RAM的時序74訪問外部RAM的過程如下:(1)在第一次ALE有效到第二次ALE有效之間的過程,是和讀外部程序ROM過程一樣的,即P0口送出ROM單元低8位地址,P2口送出高8位地址,然后在有效后,讀入ROM單元的內容。(2)第二次ALE有效后,P0口送出RAM單元的低8位地址,P2口送出RAM單元的高8位地址。(3)第二個機器周期的第一次ALE信號不再出現,此時也保持高電位(無效),而在第二個機器周期的S1P1時讀信號開始有效,可用來選通RAM芯片,然后從P0口讀出RAM單元的數據。(4)第二機器周期的第二次ALE信號仍然出現,也進行一次外部ROM的讀操作,但仍屬于無效的操作。若是對外部RAM進行寫操作,則應用
寫信號來選通RAM芯片,其余的過程與讀操作是相似的。習題2、4、5、7、9、10、11、1475單片機原理與應用教材:單片機原理與應用及C51程序設計(第4版)清華大學出版社謝維成,楊加國西華大學77第3章
單片機匯編程序設計學習重點:51單片機的尋址方式51單片機的指令系統常用匯編程序設計77章節3.151系列單片機匯編指令格式及標識3.251單片機指令的尋址方式3.351單片機的指令系統3.451單片機匯編程序常用偽指令3.551單片機匯編程序設計783.1MCS-51系列單片機匯編指令格式及標識3.1.1指令格式[標號:]操作碼助記符[目的操作數][,源操作數][;注釋](1)操作碼助記符表明指令的功能,不同的指令有不同的指令助記符,它一般用說明其功能的英文單詞的縮寫形式表示。(2)操作數用于給指令的操作提供數據、數據的地址或指令的地址,操作數往往用相應的尋址方式指明。(3)標號是該指令的符號地址,后面須帶冒號。(4)注釋是對該指令的解釋,前面須帶分號。79指令:計算機完成基本操作的命令。指令系統:一種計算機能夠執行的全部指令的集合。指令通常由操作碼和操作數兩部分組成。3.1.2指令中用到的標識符(1)Ri和Rn:表示當前工作寄存器區中的工作寄存器,i取0或1,表示R0或R1。n取0~7,表示R0~R7。(2)#data:表示包含在指令中的8位立即數。(3)#data16:表示包含在指令中的16位立即數。(4)rel:以補碼形式表示的8位相對偏移量,范圍為-128~127,主要用在相對尋址的指令中。(5)addr16和addr11:分別表示16位直接地址和11位直接地址。(6)direct:表示直接尋址的地址。(7)bit:表示可位尋址的直接位地址。80(8)(X):表示X單元中的內容。(9)(10)/和→符號:“/”表示對該位操作數取反,但不影響該位的原值。“→”表示操作流程,將箭尾一方的內容送入箭頭所指一方的單元中去。3.2MCS-51系列單片機尋址方式MCS-51單片機的尋址方式按操作數的類型,可分為數的尋址和指令尋址,數的尋址有:常數尋址(立即尋址)、寄存器數尋址(寄存器尋址)、存儲器數尋址(直接尋址方式、寄存器間接尋址方式、變址尋址方式)和位尋址,指令的尋址有絕對尋址和相對尋址,813.2.1常數尋址——立即尋址立即尋址:操作數是常數,直接在指令中給出,常數前面以“#”符號作前綴。例如:MOVA,#20H3.2.2寄存器數尋址——寄存器尋址寄存器尋址:操作數存放在寄存器中,指令中直接給出寄存器名稱的尋址方式。寄存器:八個通用寄存器R0~R7、累加器A、寄存器B和數據指針寄存器DPTR。例如:MOVA,R03.2.3存儲器數尋址1.直接尋址直接尋址:操作數在存儲器中,指令中直接提供存儲單元的地址的尋址方式。對象:片內數據存儲器和特殊功能寄存器。例如:MOVA,20H執行后累加器A的內容為30H2.寄存器間接尋址寄存器間接尋址:操作數在存儲器中,存儲單元的地址存放在寄存器中,在指令中通過寄存器來提供的存儲單元的地址。形式為:@寄存器名。例如:MOVA,@R0執行后累加器A的內容為12H3.變址尋址變址尋址:操作數在存儲器中,操作數的地址由基址寄存器中的內容加上變址寄存器中的內容得到。基址寄存器:數據指針寄存器DPTR和程序計數器PC變址寄存器:累加器A訪問對象:程序存儲器。例如:MOVCA,@A+DPTR執行后累加器A中的內容為30H3.2.4位尋址位尋址:操作數是二進制位的尋址方式。位地址的表示方式:(1)直接位地址(00H~0FFH)。例如,20H。(2)字節地址帶位號。例如,20H.3表示20H單元的3位。(3)特殊功能寄存器名帶位號。例如,P0.1表示P0口的1位。(4)位符號地址。例如,TR0是定時/計數器T0的啟動位。3.2.5指令尋址1.絕對尋址絕對尋址:指令的操作數中直接提供目的位置的地址或地址的一部分。2.相對尋址相對尋址:相對轉移指令中,由當前程序計數器PC值加上指令中給出的偏移量rel得到目的位置的地址。注意:(1)當前PC值是指轉移指令執行時的PC值,它等于轉移指令的地址加上轉移指令的字節數。實際上是轉移指令的下一條指令的地址。(2)偏移量rel是8位有符號數,以補碼表示,它的取值范圍為-128~+127。當為負值時向前轉移,當為正數時向后轉移。相對尋址的目的地址為:目的地址=當前PC+rel=轉移指令的地址+轉移指令的字節數+rel3.351系列單片機的指令系統分五大類:數據傳送指令、算術運算指令、邏輯操作指令、控制轉移指令和位操作指令。3.3.1數據傳送指令指令系統中數量最多、使用也最頻繁的一類指令。共29條,涉及到8個助記符:MOV、MOVX、MOVC、XCH、XCHD、PUSH、POP和SWAP。89分組格式功能說明片內數據存儲器傳送指令MOVA,#dataMOVA,RnMOVA,directMOVA,@RiA←#dataA←RnA←(direct)A←(Ri)以A為目的操作數。MOVRn,AMOVRn,directMOVRn,#dataRn←ARn←(direct)Rn←#data以Rn為目的操作數。MOVdirect,AMOVdirect,RnMOVdirect,directMOVdirect,@RiMOVdirect,#data(direct)
←A(direct)
←Rn(direct)
←(direct)(direct)
←(Ri)(direct)
←#data以直接地址direct為目的操作數。MOV@Ri,AMOV@Ri,directMOV@Ri,#data(Ri)
←A(Ri)←(direct)(Ri)←#data以間接地址@Ri為目的操作數。MOVDPTR,#data16DPTR←#data16以DPTR為目的操作數。90分組格式功能說明片內數據存儲器傳送指令MOVDPTR,#data16DPTR←#data16以DPTR為目的操作數。片外數據存儲器傳送指令MOVXA,@RiMOVXA,@DPTRA←(Ri)A←(DPTR)把片外數據存儲器的內容讀到A。MOVX@Ri,AMOVX@DPTR,A(Ri)←A(DPTR)←A把A的內容寫到片外數據存儲器。程序存儲器傳送指令MOVCA,@A+DPTR
MOVCA,@A+PCA←(A+DPTR)A←(A+PC)把程序存儲器的內容讀到A。數據交換指令XCHA,RnXCHA,directXCHA,@RiXCHD
A,@RiSWAP
AA<=>RnA<=>(direct)A<=>(Ri)A0~3<=>(Ri)0~3A0~3<=>A4~7前3條A和Rn、(direct)、(Ri)字節交換第4條A和(Ri)半字節交換SWAP累加器A高低4位互換堆棧操作指令PUSHdirectPOP
directSP←SP+1(SP)←(direct)(direct)←(SP)SP←SP-1PUSH入棧POP出棧說明如下:1.數據傳送指令不影響。2.源操作數和目的操作數中的Rn和@Ri不能相互配對。如不允許有“MOVRn,Rn”,“MOV@Ri,Rn”這樣的指令。如果涉及到相應處理,可通過累加器A中間處理。3.片外數據存儲器、程序存儲器都只能通過累加器A傳送,程序存儲器只能讀,不能寫。4.堆棧操作指令通常是用來保存和恢復數據,如果多個數據的保存和恢復,要先入棧的數據后出棧恢復,后入棧的數據先出棧恢復。92【例3-1】將R0的內容送R6 MOVA,R0 MOVR6,A
【例3-2】若入棧保存時入棧的順序為:
PUSHA PUSHB
則出棧的順序為:
POPB POPA3.3.2算術運算指令算術運算指令實現、減、乘、除運算。共24條,涉及8個助記符:ADD、ADDC、INC、SUBB、DEC、MUL、DIV和DA。分為五組:加法指令、減法指令、乘法指令、除法指令和十進制調整指令。分組格式功能說明加法指令ADDA,RnADDA,directADDA,@RiADDA,#dataA←A+RnA←A+(direct)A←A+(Ri)A←A+#data一般的加法指令累加器A和第2個操作數相加,結果送回A。
ADDCA,RnADDCA,directADDCA,@RiADDCA,#dataA←A+Rn+CA←A+(direct)+CA←A+(Ri)+CA←A+#data+C帶進位加法指令累加器A和第2個操作數相加,再加進位,結果送回A。
INCAINCRnINCdirectINC@RiINCDPTRA←A+1Rn←Rn+1(direct)←(direct)+1(Ri)←(Ri)+1DPTR←DPTR+1加1指令分組格式功能說明減法指令SUBBA,RnSUBBA,directSUBBA,@RiSUBBA,#dataA←A-Rn-CA←A-(direct)-CA←A-(Ri)-CA←A-#data-C帶借位減法指令累加器A和第2個操作數相減,再加減位,結果送回A。DECADECRnDECdirectDEC@RiA←A-1Rn←Rn-1direct←
(direct)-1(Ri)←(Ri)-1減1指令乘法指令MULABA←A×B積低8位B←A×B積高8位A和B中兩個8位無符號相乘,結果送B和A除法指令DIVABA←A÷B的8位商B←A÷B的8位余數A和B中兩個8位無符號相除,結果送B和A十進制調整指令DAA對A中的結果按BCD碼調整95說明:1.算術運算指令執行要影響標志位。其中:ADD、ADDC和SUBB指令要影響CY、AC、OV和P標志位,INC和DEC只影響P標志位;MUL指令執行后CY復位,當積大于255時,OV為1,否則,OV為0;DIV指令執行后一般情況下CY和OV都清0,而當B寄存器中的除數為0時,CY和OV置1。2.51單片機只有帶借位減法,沒有一般減法,一般減法可通過帶借位減法實現,只需要執行帶借位減法前先把借位清零。3.51單片機的乘法和除法指令都只有一條,針對的只能是無符號數。4.十進制調整指令只有一條DAA,只能用在ADD或ADDC指令的后面,用來對兩個二位壓縮的BCD碼數通過用ADD或ADDC指令相加后存于累加器A中的結果進行調整,使之得到正確的十進制結果。調整過程:(1)若累加器A的低四位為十六進制的A~F或輔助進位標志AC為1,則累加器A中的內容做加06H調整。(2)若累加器A的高四位為十六進制的A~F或進位標志CY為1,則累加器A中的內容做加60H調整。【例3-3】求R3←
R2
-
R1。程序: MOVA,R2 CLRC SUBBA,R1 MOVR3,A【例3-4】在R3中有十進制數67,在R2中有十進制數85,用十進制運算,運算的結果放于R5中。程序: MOVA,R3 ADDA,R2 DAA MOVR5,A3.3.3邏輯操作指令邏輯操作指令對操作數按邏輯量處理。共24條指令,涉及到9個助記符:ANL、ORL、XRL、CLR、CPL、RL、RR、RLC和RRC。分為五組:邏輯與、邏輯或、邏輯異或、邏輯清零和求反以及循環移位指令。分組格式功能說明邏輯與指令ANLA,Rn
ANLA,directANLA,@Ri
ANLA,#dataANLdirect,AANLdirect,#data
A←
Aù
RnA←
Aù(direct)A←
Aù(Ri)A←
Aùdata(direct)←(direct)ùA(direct)←(direct)ùdataA的數據和第2個操作數的數據按位相與,結果送回A中。邏輯或指令ORLA,Rn
ORLA,directORLA,@RiORLA,#dataORLdirect,AORLdirect,#data
A←
Aú
RnA←
Aú(direct)A←
Aú(Ri)A←
Aúdata(direct)←(direct)úA(direct)←(direct)údataA的數據和第2個操作數的數據按位相或,結果送回A中。分組格式功能說明邏輯異或指令XRLA,RnXRLA,directXRLA,@Ri
XRLA,#dataXRLdirect,AXRLdirect,#data
A←
A"
RnA←
A"(direct)A←
A"(Ri)A←
A"data(direct)←(direct)"A(direct)←(direct)"dataA的數據和第2個操作數的數據按位相異或,結果送回A中。邏輯清零和求反指令CLRACPLAA←
0A←
/A累加器A清零累加器A取反循環移位指令RLARRARLCARRCA累加器A循環左移累加器A循環右移帶進位的循環左移帶進位的循環右移100說明:1.邏輯與通常用于實現對指定位清0,其余位不變;邏輯或通常用于實現對指定位置1,其余位不變;邏輯異或通常用于實現指定位取反,其余位不變。2.循環移位指令通常用于把一個字節各位依次取出使用。【例3-5】寫出完成下列功能的指令段。(1)
對累加器A中的1、3、5位清0,其余位不變。
ANLA,#11010101B(2)
對累加器A中的2、4、6位置1,其余位不變。
ORLA,#01010100B(3)
對累加器A中的0、1位取反,其余位不變。
XRLA,#00000011B3.3.4控制轉移指令控制轉移指令用于改變程序執行的順序,實現循環結構和分支結構。共17條,涉及到12個助記符:LJMP、AJMP、SJMP、JMP、JZ、JNZ、CJNE、DJNZ、ACALL、LCALL、RET和RETI。分為四組:無條件轉移指令、條件轉移指令、子程序調用及返回指令。分組格式功能說明無條件轉移指令
LJMP
addr16PC←addr16長轉移指令AJMP
addr11PC10~0
←addr11絕對轉移指令SJMP
relPC←PC+2+rel相對轉移指令JMP
@A+DPTRPC←A+DPTR間接轉移指令條件轉移指令JZrelJNZrel若A=0,則PC←PC+2+rel若A10,則PC←PC+2+rel累加器A判零條件轉移指令判非0指令判非0指令CJNEA,#data,relCJNERn,#data,relCJNE@Ri,#data,relCJNEA,direct,rel比較轉移指令分組格式功能說明條件轉移指令DJNZRn,relDJNZdirect,rel先將第1個操作數中的內容減1,再判斷內容是否等于零,若不為零,則轉移減1不為零轉移指令子程序調用指令LCALLaddr16PC←PC+3SP←SP+1(SP)←PC7~0
SP←SP+1(SP)←PC15~8
PC←addr16長調用指令ACALL
addr11PC←PC+2SP←SP+1(SP)←PC7~0
SP←SP+1(SP)←PC15~8PC10~0←addr11絕對調用指令返回指令RETPC15~8←(SP)SP←SP-1PC7~0←(SP)SP←SP-1子程序返回指令RETIPC15~8←(SP)SP←SP-1PC7~0←(SP)SP←SP-1中斷優先級觸發位清零中斷返回指令103說明:1.無條件轉移指令當指令執行后,程序將無條件地轉移到指令指定的地方。條件轉移指令當條件滿足時,程序轉移到指定位置,條件不滿足時,程序將繼續順次執行。2.LJMP和AJMP是絕對轉移,其他都是相對轉移。LJMP可實現程序存儲器64KB空間范圍內轉移,AJMP實現當前位置2KB空間內轉移,相對轉移轉移范圍為-128--+127字節。3.子程序調用指令轉移前會先將當前的PC值(指令執行的PC值)入棧保存。RET(RETI)放在子程序(中斷服務子程序)的最后位置,用來返回主程序的斷點位置,RETI和RET基本操作相同,只是RETI在回主程序前要將先將相應的中斷優先級觸發位清零。4.對于SJMP指令,在單片機匯編程序設計中,通常在最后位置放一條:HERE:SJMPHERE(或SJMP$),轉移到指令自己本身,進入等待狀態,使程序不再向后執行以避免執行后面的內容而出錯。5.JMP
@A+DPTR是51單片機中唯一一條間接轉移指令,這條指令一般和一個無條件轉移指令表一起實現多分支轉移程序,因而又稱為多分支轉移指令,具體情況后面程序設計部分介紹。6.累加器A判零條件轉移指令和比較轉移指令通常用來實現分支結構,減1不為零轉移指令通常用來實現循環結構。104【例3-6】把片外RAM的30H單元開始的數據塊傳送到片內RAM的40H開始的位置,直到出現零為止。片內、片外數據傳送以累加器A過渡。每次傳送一個字節,通過循環處理,直到處理到傳送的內容為0結束。程序如下: MOVR0,#30H MOVR1,#40HLOOP:MOVXA,@R0 MOV@R1,A INCR1 INCR0 JNZLOOP SJMP$105【例3-7】統計片內RAM中30H單元開始的20個數據中0的個數,放于R7中。用R2做循環變量,最開始置初值為20;用R7做計數器,最開始置初值為0;用R0做指針訪問片內RAM單元,最開始置初值為30H;用DJNZ指令對R2減1轉移進行循環控制,在循環體中用指針R0依次取出片內RAM中的數據,判斷如為0,則R7中的內容加1。程序段如下:MOVR0,#30HMOVR2,#20MOVR7,#0LOOP:MOVA,@R0CJNEA,#0,NEXTINCR7NEXT:INCR0DJNZR2,LOOPSJMP$3.3.5位操作指令位操作指令共有17條,涉及到12個助記符:MOV、CLR、SETB、ANL、ORL、JC、JNC、JB、JNB和JBC。分為三組:位傳送、位邏輯運算、位控制轉移等操作。分組格式功能說明位傳送MOV
C,bitMOV
bit,CC←(bit)(bit)←C位運算器C與一般位之間的相互傳送。位邏輯運算
CLR
CCLR
bitC←0(bit)←0位清0SETB
CSETB
bitC←1(bit)←1位置1CPL
CCPL
bitC←/C(bit)←/(bit)位取反ANL
C,bitANL
C,/bitC←C∧(bit)C←C∧/(bit)位與ORL
C,bitORL
C,/bitC←C∨(bit)C←C∨/(bit)位或分組格式功能說明位控制轉移指令JC
relJNC
rel若C=1,則轉移,PC←PC+2+rel;若C=0,則轉移,PC←PC+2+rel;以C為條件的位轉移指令JB
bit,relJNB
bit,relJBC
bit,rel若(bit)=1,則轉移,PC←PC+3+rel;若(bit)=0,則轉移,PC←PC+3+rel;若(bit)=1,則轉移,PC←PC+3+rel,且(bit)←0;以bit為條件的位轉移指令空操作指令NOPPC←PC+1108說明:1.位傳送必須有位運算器C參與,不能直接實現兩位之間的傳送。2.位邏輯運算指令通常用來實現各種各樣的邏輯功能。3.位轉移指令通常用來實現各種位測試。4.空操作指令執行時,不做任何操作,但要消耗一個機器周期時間,常常用它來構造延時程序。109位邏輯運算指令可以實現各種各樣的邏輯功能。【例3-8】利用位邏輯運算指令編程實現圖所示硬件邏輯電路的功能。程序:MOVC,P1.0ANLC,P1.1CPLCORLC,/P1.2MOVF0,CMOVC,P1.3ORLC,P1.4ANLC,F0CPLCMOVP1.5,CSJMP$110【例3-15】從片外RAM的30H單元處開始有100個數據,統計當中正數、0和負數的個數,分別放于R5、R6、R7中。設用R2作計數器,用DJNZ指令對R2減1轉移進行循環控制,在循環體外設置R0指針,指向片外RAM30H單元,對R5、R6、R7清零,在循環體中用指針R0依次取出片外RAM中的100個數據,然后判斷,如大于0,則R5中的內容加1;如等于0,則R6中的內容加1;如小于0,則R7中的內容加1。程序:MOVR2,#100MOVR0,#30HMOVR5,#0MOVR6,#0MOVR7,#0LOOP:MOVXA,@R0CJNEA,#0,NEXT1INCR6SJMPNEXT3NEXT1:CLRCSUBBA,#80HJCNEXT2INCR7SJMPNEXT3NEXT2:INCR5NEXT3:IN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫內科灸法
- 休閑農業場地租賃安全合同
- 餐廳股份購買與地方特色食材引進合同范本
- 礦業權出讓與礦業項目投資合作協議范本
- 昌平區高端裝備制造業高質量發展投資合同
- 茶葉電商平臺入駐合同標準范本
- 書店充值活動策劃方案
- 膠粉聚苯顆粒外墻保溫涂料飾面工程施工方案
- 房車項目娛樂及通信設備技術方案
- 公司加工車間管理制度
- 粒子加速器用30-4000 MHz級固態功率源系統 征求意見稿
- SL631水利水電工程單元工程施工質量驗收標準第1部分:土石方工程
- 2025年湖南出版中南傳媒招聘筆試參考題庫含答案解析
- GB/T 44880-2024因果矩陣
- (高清版)TDT 1075-2023 光伏發電站工程項目用地控制指標
- 談談如何做好科研工作課件
- 預制梁場建設驗收標準
- JX820D型便攜式吸引器使用說明書
- 中小學廁所蹲位數量統計表
- 總平施工方案
- discovery教程
評論
0/150
提交評論