




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機原理及應用全冊配套
精品完整課件1第1章概述1.1單片機的基本概念1.2單片機的發(fā)展概況1.3單片機的特點及應用1.4常用單片機系列介紹1.1單片機的基本概念微機組成結構框圖
單片機組成框圖
單板機:將微處理器、存儲器、I/O接口電路以及簡單的輸入/輸出設備組裝在一塊印刷電路板上,稱單板微型計算機。單片機:將微處理器、存儲器、I/O接口電路和相應實時控制器件集成在一塊芯片上,稱單片微型計算機。
微型計算機:微處理器、存儲器、I/O接口電路由總線有機地連接在一起的整體,稱為微型計算機。
微型計算機系統(tǒng):微型計算機與外圍設備、電源、系統(tǒng)軟件一起構成的系統(tǒng),稱為微型計算機系統(tǒng)。
※通用微機的CPU主要面向數(shù)據(jù)處理,其發(fā)展主要圍繞數(shù)據(jù)處理功能、計算速度和精度的進一步提高。
※單片機主要面向控制,控制中的數(shù)據(jù)類型及數(shù)據(jù)處理相對簡單,所以單片機的數(shù)據(jù)處理功能比通用微機相對要弱一些,計算速度和精度也相對要低一些。通用微機與單片機區(qū)別一
※通用微機中存儲器組織結構主要針對增大存儲容量和CPU對數(shù)據(jù)的存取速度。
※單片機中存儲器的組織結構比較簡單,存儲器芯片直接掛接在單片機的總線上,CPU對存儲器的讀寫按直接物理地址來尋址存儲器單元,存儲器的尋址空間一般都為64KB。通用微機與單片機區(qū)別二※通用微機中I/O接口主要考慮標準外設※單片機應用系統(tǒng)的外設是非標準的通用微機與單片機區(qū)別三1.2單片機的發(fā)展概況
※4位單片機階段(主要用于家用電器、電子玩具等)美國德克薩斯儀器公司TMS-1000
美國國家半導體公司COP402系列日本電氣公司μPD75XX系列美國洛克威爾公司PPS/1系列日本松下公司MN1400系列富士通公司MB88系列
※8位單片機階段(用于工業(yè)控制、智能接口、儀器儀表等)
低檔8位單片機美國Intel公司MCS-48系列莫斯特克(Mostek)、仙童(Fairchild)公司3870(F8)系列摩托羅拉(Motorola)公司6801系列
高檔8位單片機摩托羅拉公司MC6801系列齊洛格公司Z8系列
NEC公司μPD78XX系列
Intel公司的MCS-51系列
超8位單片機
Intel公司8X252、UPI-45283C152Zilog公司Super8Motorola公司MC68HC※16位單片機階段(可用于高速復雜的控制系統(tǒng))
Intel公司MCS-96系列
Intel公司80C96
美國國家半導體公司HPC16040NEC公司783XX系列
※32位單片機1.3單片機的特點及應用
單片機的特點※單片機的存儲器ROM和RAM嚴格區(qū)分※采用面向控制的指令系統(tǒng)※單片機的I/O引腳通常是多功能※單片機的外部擴展能力強單片機的應用特點※體積小,成本低,運用靈活,易于產(chǎn)品化,能方便地組成各種智能化的控制設備和儀器,做到機電一體化?!嫦蚩刂疲茚槍π缘亟鉀Q從簡單到復雜的各類控制任務,因而能獲得最佳的性能價格比?!垢蓴_能力強,適用溫度范圍寬,在各種惡劣的環(huán)境下都能可靠地工作,這是其它類型計算機無法比擬的?!梢苑奖愕貙崿F(xiàn)多機和分布式控制,使整個控制系統(tǒng)的效率和可靠性大為提高。
單片機應用領域
※工業(yè)控制
※儀器儀表
※計算機外部設備與智能接口
※商用產(chǎn)品
※家用電器1.4常用單片機系列介紹MCS系列產(chǎn)品
第一階段(1971~1976年):單片機發(fā)展的初級階段Intel4004
第二階段(1976~1980年):低性能單片機階段MCS-48系列第三階段(1980~1983年):高性能單片機階段MCS-51系列第四階段(1983年至今):16位單片機階段MCS-96系列
INTEL主要單片機系列MCS-51系列單片機的結構特點※CPU的結構※存儲器結構※輸入輸出接口※內部有一個全雙工串行口※布爾處理機8051單片機MOTOROLA單片機Microchip單片機Atmel單片機第2章MCS-51系列單片機的硬件結構2.1MCS-51系列單片機簡介2.2MCS-51系列單片機內部結構與外部引腳說明2.3微處理器2.4存儲器2.5并行輸入/輸出接口2.6定時器/計數(shù)器2.7串行輸入/輸出口2.8MCS-51單片機的中斷系統(tǒng)2.9復位狀態(tài)及復位電路2.1MCS-51系列單片機簡介
兩大系列(51子系列和52子系列)
51子系列:8031、8051、8751
52子系列:8032、8052、87522.2MCS-51系列單片機內部結構與外部引腳說明2.2.1內部結構框圖
MCS-51系列單片機的內部結構框圖如圖2.1所示。
圖2.1MCS-51單片機內部結構框圖2.2.2外部引腳說明圖2.2MCS-51系列單片機引腳及總線結構※主電源引腳
VCC(40腳)VSS(20腳)※外接晶體引腳
XTAL1(19腳)XTAL2(18腳)※輸入/輸出引腳
P0口(39~32腳)P1口(1~8腳)P2口(21~28腳)P3口(10~17腳)表2.1P3口第二功能表引腳第二功能P3.0串行口輸入端P3.1串行口輸出端P3.2外部中斷0請求輸入端,低電平有效P3.3外部中斷1請求輸入端,低電平有效P3.4定時器/計數(shù)器0計數(shù)脈沖輸入端P3.5定時器/計數(shù)器1計數(shù)脈沖輸入端P3.6外部數(shù)據(jù)存儲器寫選通信號輸出端,低電平有效P3.7RXDTXDINT0INT1T0T1WRRD※控制線(30腳)(29腳)(9腳)(31腳)引腳特點
※單片機功能多,引腳數(shù)少,因而許多引腳都具有第二功能。
※單片機對外呈現(xiàn)3總線形式,由P2、P0口組成16位地址總線;由P0口分時復用為數(shù)據(jù)總線;由ALE、PSEN、RST、EA與P3口中的INT0、INT1、T0、T1、WR、RD共10個引腳組成控制總線。2.3微處理器※運算部件
※控制部件及振蕩器
※CPU時序2.3.1運算部件
運算部件以ALU為核心,包括累加器ACC、寄存器B、暫存器、程序狀態(tài)字PSW等許多部件。實現(xiàn)數(shù)據(jù)的算術邏輯運算、位變量處理和數(shù)據(jù)傳輸操作。
1.算術邏輯單元ALU與累加器ACC、寄存器B
ALU:完成8位二進制的加、減、乘、除、加1、減1及BCD加法的十進制調整等算術運算,對8位變量進行邏輯“與”、“或”、“異或”、循環(huán)移位、求補、清零等邏輯運算,具有數(shù)據(jù)傳輸、程序轉移等功能。
ACC:8位寄存器
寄存器B:為ALU進行乘除法運算而設置。不作乘除運算時,可作為通用寄存器使用。
2.程序狀態(tài)字程序狀態(tài)字PSW是一個8位的標志寄存器,它保存指令執(zhí)行結果的特征信息,以供程序查詢和判別。其各位的定義如下:字節(jié)地址D0HCACF0RS1RS0OVPPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0
3.布爾處理機指令系統(tǒng)中的位處理指令集(17條位操作指令),存儲器中的位地址空間,程序狀態(tài)寄存器PSW中的進位標志CY作為位操作"累加器",構成了MCS-51單片機內的布爾處理機。2.3.2控制部件及振蕩器控制部件包括定時和控制電路、指令寄存器、譯碼器以及信息傳送控制等部件。先以主振頻率為基準發(fā)出CPU的時序,對指令進行譯碼,然后發(fā)出各種控制信號,完成一系列定時控制的微操作,用來協(xié)調單片機內部個功能部件之間的數(shù)據(jù)傳誦、數(shù)據(jù)運算等操作,并對外發(fā)出相應的控制信號,并接受處理外接的復位、控制信號。
單片機的定時控制功能是用片內的時鐘電路和定時電路來完成。片內的時鐘產(chǎn)生方式:內部時鐘方式和外部時鐘方式。圖2.3單片機外接晶體的接法
表2.2單片機外部時鐘接法表芯片類型XTAL1XTAL2HMOS型接地接片外振蕩脈沖輸入端(帶上拉電阻)CHMOS型接片外振蕩脈沖輸入端(帶上拉電阻)懸浮接法2.3.3CPU時序
時序:計算機在執(zhí)行命令時,將一條指令分解為若干基本的微操作。這些微操作所對應的脈沖信號在時間上的先后次序稱為計算機的時序。
振蕩周期:振蕩脈沖的周期。
狀態(tài)周期(時鐘周期):兩個振蕩周期為一個狀態(tài)周期。
機器周期:一個機器周期包含6個狀態(tài)周期。
指令周期:執(zhí)行一條指令所占用的全部時間,它以機器周期為單位。圖2.4單周期指令時序(a)單字節(jié)周期指令(如INCA);(b)雙字節(jié)單周期指令(如ADDA,#data)2.4存儲器※程序存儲器※數(shù)據(jù)存儲器從物理空間上:片內ROM、片外ROM、片內RAM、片外RAM。從功能上:片內外統(tǒng)一的ROM、片內RAM、片外RAM。2.4存儲器2.4.1程序存儲器
1.編址與訪問程序計數(shù)器PC:用以存放將要執(zhí)行的指令地址??蓪ぶ返牡刂房臻g為64KB(0000H~0FFFFH)。圖2.5程序存儲器編址圖(a)51子系列;(b)52子系列2.程序的7個特殊入口地址表2.3MCS-51單片機復位、中斷入口地址操作入口地址復位0000H外部中斷00003H定時器/計數(shù)器0溢出000BH外部中斷10013H定時器/計數(shù)器1溢出001BH串行口中斷0023H定時器/計數(shù)器0溢出或T2EX端負跳變(52子系列)002BH2.4.2數(shù)據(jù)存儲器
1.編址與訪問
片內、外數(shù)據(jù)存儲器是兩個獨立的地址空間,單獨編址。片內數(shù)據(jù)存儲器除RAM塊外,還有特殊功能寄存器(SFR)塊。
51子系列:RAM有128個字節(jié)(00H~7FH)
SFR有128個字節(jié)(80H~FFH)
52子系列:RAM有128個字節(jié)(00H~0FFH)
SFR有128個字節(jié)(80H~0FFH)圖2.6數(shù)據(jù)存儲器編址圖(a)51子系列;(b)52子系列2.片內數(shù)據(jù)存儲器00HR0
工作寄存器0組01HR1工07HR708HR0
工作寄存器1組作09HR1
寄0FHR710HR0
工作寄存器2組存11HR1
器17HR718HR0
工作寄存器3組區(qū)19HR11FHR751子系列單片機片內RAM的配置數(shù)據(jù)緩沖區(qū)20H21H22H23H位24H25H尋26H27H址28H29H區(qū)2AH2BH2CH2DH2EH2FH07060504030201000F0E0D0C0B0A090817161514131211101F1E1D1C1B1A191827262524232221202F2E2D2C2B2A292837363534333231303F3E3D3C3B3A393847464544434241404F4E4D4C4B4A494857565554535251505F5E5D5C5B5A595867666564636261606F6E6D6C6B6A696877767574737271707F7E7D7C7B7A797830H31H7EH7FH
1)工作寄存器區(qū)(00H~1FH單元)工作寄存器分成4組,每組8個寄存器(R0~R7)。表2.4工作寄存器組的選擇表PSW.4(RS1)PSW.3(RS0)當前使用的工作寄存器組R0~R7000組(00H~07H)011組(08H~0FH)102組(10H~17H)113組(18H~1FH)
2)位尋址區(qū)(20H~2FH單元)
16個單元(共計128位)位地址:00H~7FH。
3)數(shù)據(jù)緩沖區(qū)
51子系列:80個單元(30H~7FH)
52子系列:208個單元30H~0FFH4)堆棧和堆棧指針圖2.8MCS–51單片機堆棧
3.特殊功能寄存器塊SFRSFR用于控制、管理片內算術邏輯部件、并行I/O口、串行I/O口、定時器/計數(shù)器、中斷系統(tǒng)等功能模塊的工作。
51子系列:18個專用寄存器,3個為雙字節(jié)寄存器,共占用21個字節(jié);
52子系列:21個專用寄存器,5個雙字節(jié)寄存器,共占用26個字節(jié)。表2.5特殊功能寄存器名稱、表示符、地址一覽表表2.5特殊功能寄存器名稱、表示符、地址一覽表2.5并行輸入/輸出接口2.5.1P0口
1.P0口結構
P0口是一個三態(tài)雙向口,可作為地址/數(shù)據(jù)分時復用口,也可作為通用I/O接口。
1位的結構原理如圖2.9所示。圖2.9P0口1位結構圖
2.地址/數(shù)據(jù)分時復用功能從P0口輸出地址或數(shù)據(jù)從P0口輸入數(shù)據(jù)。
3.通用I/O接口功能
※在輸出數(shù)據(jù)時,由于V2截止,輸出級是漏極開路電路,要使"1"信號正常輸出,必須外接上拉電阻。
※P0口作為通用I/O口使用時,是準雙向口。(在輸入數(shù)據(jù)時,應先把口置1)4.端口操作
“讀-修改-寫”操作
ANLP0,A ;(P0)←(P0)∧(A)ORLP0,#data;(P0)←(P0)∨dataDELP0 ;(P0)←(P0)-1
有外部擴展存儲器時,P0被作為地址/數(shù)據(jù)總線口,此時是一個真正的雙向口;沒有外部擴展存儲器時,P0口也可作為通用的I/O接口,但此時只是一個準雙向口。
P0口的輸出級具有驅動8個LSTTL負載的能力,即輸出電流不大于800μA。2.5.2P1口
P1口為準雙向口,其1位的內部結構如圖2.10所示。輸出驅動部分由場效應管V1與內部上拉電阻組成。當其某位輸出高電平時,可以提供拉電流負載,不必外接上拉電阻。
P1口具有驅動4個LSTTL負載的能力。圖2.10P1口1位結構圖
2.5.3P2口圖2.11P2口1位結構圖※作為準雙向通用I/O口使用,工作原理與負載能力與P1相同。
※作為外部擴展存儲器的高8位地址總線使用,輸出高8位地址A8~A15(程序計數(shù)器PC來的高8位地址PCH,或數(shù)據(jù)指針DPTR來的高8位地址DPH)。2.5.4P3口圖2.12P3口1位結構圖2.6定時器/計數(shù)器
定時器/計數(shù)器的特點:
(1)定時器/計數(shù)器有多種方式,可以是計數(shù)方式也可以是定時方式。
(2)定時器/計數(shù)器的計數(shù)值是可變的,計數(shù)的最大值取決于計數(shù)器的位數(shù)。計數(shù)的最大值限定了定時的最大值。
(3)在到達設定的定時或計數(shù)值時發(fā)出中斷申請,以便實現(xiàn)定時控制。51子系列:帶有兩個16位定時器/計數(shù)器T0和T1。52子系列:帶有兩個16位定時器/計數(shù)器T0和T1、T2?!〞r器/計數(shù)器T0、T1的結構※定時器/計數(shù)器T0、T1的四種工作方式2.6.1定時器/計數(shù)器T0、T1的結構圖2.13定時器/計數(shù)器T0、T1的結構框圖
1.16位加法器定時器/計數(shù)器的核心是16位加法計數(shù)器。
TH0、TL0是定時器/計數(shù)器0加法計數(shù)器的高8位和低8位
TH1、TL1是定時器/計數(shù)器1加法計數(shù)器的高8位和低8位。
計數(shù)器:加法計數(shù)器P3.4或P3.5上的輸入脈沖計數(shù)。定時器:加法計數(shù)器對內部機器周期脈沖Tcy計數(shù)。加法計數(shù)器的初值可以由程序設定,設置的初值不同,計數(shù)值或定時時間就不同。
2.定時器/計數(shù)器方式控制寄存器TMOD
通過程序對TMOD設置來選擇四種工作方式。其位定義如下:GATEC/TMIM0GATEC/TM1M0TMOD字節(jié)地址89H
D7D6D5D4D3D2D1D0T1T0
C/T:定時或計數(shù)功能選擇位。
M1、M0:定時器/計數(shù)器工作方式選擇位。
GATE:門控位表2.6定時器/計數(shù)器工作方式M1M0工作方式方式說明00013位定時器/計數(shù)器01116位定時器/計數(shù)器102具有自動重裝初值的8位定時器/計數(shù)器113
3.定時器/計數(shù)器控制寄存器TCONTF1TR1TF0TR0IE1IT1IE0IT0TCON字節(jié)地址88H
D7D6D5D4D3D2D1D0
TF0(TF1):T0(T1)定時器/計數(shù)器溢出中斷標志位。
TR0(TR1):T0(T1)運行控制位。2.6.2定時器/計數(shù)器T0、T1的四種工作方式1.工作方式0圖2.14定時器/計數(shù)器方式0的邏輯結構16位定時器/計數(shù)器(THx8位、TLx低5位構成13位加法計數(shù)器)。計數(shù)值:N=213–x=8192–x計數(shù)范圍:1~8192定時時間:T=N×Tcy=(8192-x)Tcy
定時器/計數(shù)器在每個機器周期的S5P2期間采樣Tx腳輸入信號,若一個機器周期的采樣值為1,下一個機器周期的采樣值為0,則計數(shù)器加1。
識別一個高電平到低電平的跳變需兩個機器周期,對外部計數(shù)脈沖的頻率應小于fosc/24,高電平與低電平的延續(xù)時間均不得小于1個機器周期。
2.工作方式1
16位定時器/計數(shù)器(THx、TLx都是8位加法計數(shù)器)。計數(shù)值:N=216-x=65536-x
計數(shù)范圍:1~65536。定時時間:T=N×Tcy=(65536-x)Tcy3.工作方式2圖2.15定時器/計數(shù)器方式2的邏輯結構計數(shù)值:N=28-x=256-x計數(shù)范圍:1~256。定時值:T=N×Tcy=(256-x)Tcy4.工作方式3圖2.16定時器/計數(shù)器方式3的邏輯結構2.7串行輸入/輸出口2.7.1串行通信的基本概念圖2.17通信的兩種基本方式(a)并行通信;(b)串行通信1.異步傳送方式圖2.18串行異步傳送的字符格式(a)字符格式;(b)有空閑位的字符格式
串行異步傳送中,通信雙方必須事先約定:
※字符格式
※波特率2.同步傳送圖2.19同步通信的格式圖2.20串行通信數(shù)據(jù)傳送的三種方式(a)單工方式;(b)半雙工方式;(c)全雙工方式2.7.2MCS-51單片機的串行口1.功能與結構表2.7串行口的工作方式SM0SM1工作方式功能波特率00方式0移位寄存器方式,用于并行I/O擴展fosc/1201方式18位通用異步接收器/發(fā)送器可變10方式29位通用異步接收器/發(fā)送器fosc/32或fosc/6411方式39位通用異步接收器/發(fā)送器可變串行口控制寄存器SCONSM0SM1SM2RENTB8RB8T1RISCON字節(jié)地址98HD7D6D5D4D3D2D1D0
SM0、SM1:選擇串行口四種工作方式。
SM2:多機通信控制位。
REN:允許串行接收控制位。
TB8:發(fā)送數(shù)據(jù)D8位。
RB8:接收數(shù)據(jù)D8位。
TI:發(fā)送中斷標志位。
RI:接收中斷標志位。串行數(shù)據(jù)緩沖器字節(jié)地址99HSBUF
電源控制寄存器SMODCF1CF0PDIDLD7D6D5D4D3D2D1D0PCON
字節(jié)地址97H
SMOD:串行口波特率系數(shù)控制位。2.串行口的工作方式
●發(fā)送
CPU執(zhí)行一條寫SBUF的指令,如MOVSBUF,A,就啟動了發(fā)送過程?!窠邮赵赗I=0的條件下,將REN(SCON.4)置1就啟動一次接收過程。
RXD為串行數(shù)據(jù)接收端,TXD依然輸出同步移位脈沖。1)方式0圖2.21串行口方式0結構示意圖2)方式1圖2.22串行口方式1、2、3結構示意圖
●發(fā)送
CPU執(zhí)行一條寫SBUF指令便啟動了串行口發(fā)送,數(shù)據(jù)從TXD輸出。●接收允許接收控制位REN被置1,接受器就開始工作,跳變檢測器以所選波特率的16倍速率采樣RXD引腳上的電平。當采樣到從1到0的負跳變時,啟動接收控制器接收數(shù)據(jù)。
※如果RI=0、SM2=0,接收控制器發(fā)出"裝載SBUF"信號,將8位數(shù)據(jù)裝入接收數(shù)據(jù)緩沖器SBUF,停止位裝入RB8,并置RI=1,向CPU申請中斷。
※如果RI=0、SM2=1,那么只有停止位為1才發(fā)生上述操作。
※RI=0、SM2=1且停止位為0,所接收的數(shù)據(jù)不裝入SBUF,數(shù)據(jù)將會丟失。
※如果RI=1,則所接收的數(shù)據(jù)在任何情況下都不裝入SBUF,即數(shù)據(jù)丟失。
3)方式2與方式3
方式2、方式3:9位異步通信接口。一幀信息:1位起始位、9位數(shù)據(jù)位和1位停止位。
發(fā)送數(shù)據(jù)時,第9位數(shù)據(jù)由SCON中的TB8位提供。接收數(shù)據(jù)時,當?shù)?位數(shù)據(jù)移入移位寄存器后,將8位數(shù)據(jù)裝入SBUF,第9位數(shù)據(jù)裝入SCON中的RB8。
3.波特率設置方式0:波特率=fosc/12。方式2:波特率=2SMOD×fosc/64
方式1和方式3:波特率=2SMOD×定時器/計數(shù)器T1溢出率/32
定時器/計數(shù)器T1溢出率=計數(shù)速率/[256-(TH1)]4.多機通信圖2.23主從式多機通信系統(tǒng)
主機發(fā)出的信息有兩類:
※地址:用來確定需要和主機通信的從機。串行傳送的第9位數(shù)據(jù)為1。
※數(shù)據(jù):串行傳送的第9位數(shù)據(jù)為0。
從機:利用SCON寄存器中的SM2位的控制功能。
※接收時,若RI=0,則只要SM2=0,接收總能實現(xiàn);若SM2=1,則發(fā)送的第9位TB8必須為0接收才能進行。
從機在接收地址時,應使SM2=1,以便接收到主機發(fā)來的地址,從而確定主機是否打算和自己通信,一經(jīng)確認后,從機應使SM2=0,以便接收TB8=0的數(shù)據(jù)。
主從多機通信的過程:
(1)使所有的從機的SM2位置1,以便接收主機發(fā)來的地址。
(2)主機發(fā)出一幀地址信息,其中包括8位需要與之通信的從機地址,第9位為1。
(3)所有從機接收到地址幀后,各自將所接收到的地址與本機地址相比較,對于地址相同的從機,使SM2位清零以接收主機隨后發(fā)來的所有信息;對于地址不符合的從機,仍保持SM2=1的狀態(tài),對主機隨后發(fā)來的數(shù)據(jù)不予理睬,直至發(fā)送新的地址幀。
(4)主機給已被尋址的從機發(fā)送控制指令和數(shù)據(jù)(數(shù)據(jù)幀的第9位為0)。2.8MCS-51單片機的中斷系統(tǒng)2.8.1中斷的基本概念
中斷:CPU對系統(tǒng)中或系統(tǒng)外發(fā)生的某個事件的一種響應過程。
中斷系統(tǒng):實現(xiàn)中斷功能的硬件系統(tǒng)和軟件系統(tǒng)統(tǒng)稱為中斷系統(tǒng)。
中斷系統(tǒng)需要解決的問題:
※中斷源:中斷請求信號的來源。涉及到中斷請求信號的及時撤除問題。
※中斷響應與返回:CPU采集到中斷請求信號后,怎樣轉向特定的中斷服務子程序及執(zhí)行完中斷服務子程序怎樣返回被中斷的程序繼續(xù)正確地執(zhí)行。涉及到CPU響應中斷的條件、現(xiàn)場保護等問題。※優(yōu)先級控制2.8.2中斷源
1.外部中斷外部中斷是指從單片機外部引腳、輸入中斷請求信號的中斷,即外部中斷源有兩個。外部中斷請求、有兩種觸發(fā)方式:電平觸發(fā)及跳變(邊沿)觸發(fā)。TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0TCON字節(jié)地址98H
IT0(IT1):外部中斷0(或1)觸發(fā)方式控制位。
IT0(或IT1)置0:電平觸發(fā)方式
IT0(或IT1)置1:跳變觸發(fā)方式
IE0(IE1):外部中斷0(或1)的中斷請求標志位。
若外部中斷設置為跳變觸發(fā)方式,CPU在每個機器周期都采樣。為了保證檢測到負跳變,輸入到引腳上的高電平與低電平至少應保持1個機器周期。對于電平觸發(fā)的外部中斷,由于CPU對引腳沒有控制作用,也沒有相應的中斷請求標志位,因此需要外接電路來撤除中斷請求信號。圖2.24撤除外部中斷請求的電路
ANLP1,#0FEHORLP1,#01H
2.內部中斷內部中斷是單片機芯片內部產(chǎn)生的中斷。內部中斷:定時器/計數(shù)器T0、T1的溢出中斷;串行口的發(fā)送/接收中斷。2.8.3中斷控制
1.中斷允許控制中斷源的中斷開放或關閉是由內部的中斷允許寄存器IE的各位來控制的。EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1D0IE字節(jié)地址A8H
EA:中斷允許總控位。
ET2:定時器/計數(shù)器T2的溢出中斷允許位,
ES:串行口中斷允許位。
ET1:定時器/計數(shù)器T1的溢出中斷允許位。
EX1:外部中斷1()的中斷允許位。
ET0:定時器/計數(shù)器T0的溢出中斷允許位。
EX0:外部中斷0()的中斷允許位。
2.中斷優(yōu)先級控制
MCS-51單片機的中斷源有兩個用戶可控的中斷優(yōu)先級,從而可實現(xiàn)二級中斷嵌套。中斷系統(tǒng)遵循三條規(guī)則:
(1)正在進行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷,一直到該中斷服務程序結束,返回了主程序且執(zhí)行了主程序中的一條指令后,CPU才響應新的中斷請求。
(2)正在進行的低優(yōu)先級中斷服務程序能被高優(yōu)先級中斷請求所中斷,實現(xiàn)兩級中斷嵌套。
(3)CPU同時接收到幾個中斷請求時,首先響應優(yōu)先級最高的中斷請求。PT2PSPT1PX1PT0PX0D7D6D5D4D3D2D1D0IP字節(jié)地址B8HPT2:定時器/計數(shù)器T2的中斷優(yōu)先級控制位,只用于52子系列。PS:串行口的中斷優(yōu)先級控制位。PT1:定時器/計數(shù)器T1的中斷優(yōu)先級控制位。PX1:外部中斷的中斷優(yōu)先級控制位。PT0:定時器/計數(shù)器T0的中斷優(yōu)先級控制位。PX0:外部中斷的中斷優(yōu)先級控制位。表2.8中斷優(yōu)先級
中斷源同級的中斷優(yōu)先級
外部中斷0
定時器/計數(shù)器0中斷外部中斷1
定時器/計數(shù)器1中斷串行口中斷定時器/計數(shù)器2中斷最高
最低圖2.25中斷系統(tǒng)的邏輯結構示意圖2.8.4中斷響應的條件、過程與時間
1.中斷響應的條件單片機響應中斷的條件為中斷源有請求(中斷允許寄存器IE相應位置1),且CPU開中斷(即EA=1)。且滿足:
※無同級或高級中斷正在處理。
※現(xiàn)行指令執(zhí)行到最后1個機器周期且已結束。
※若現(xiàn)行指令為RETI或訪問IE、IP的指令時,執(zhí)行完該指令且緊隨其后的另一條指令也已執(zhí)行完畢。
2.中斷響應過程
(1)根據(jù)中斷請求源的優(yōu)先級高低,對相應的優(yōu)先級狀態(tài)觸發(fā)器置1。
(2)保護斷點,即把程序計數(shù)器PC的內容壓入堆棧保存。
(3)清內部硬件可清除的中斷請求標志位(IE0、IE1、TF0、TF1)。
(4)把被響應的中斷服務程序入口地址送入PC,從而轉入相應的中斷服務程序執(zhí)行。
3.中斷響應時間中斷響應時間:CPU檢測到中斷請求信號到轉入中斷服務程序入口所需要的機器周期數(shù)。單步操作實現(xiàn)方法把一個外部中斷(如/INT0)設置為電平激活方式,在中斷服務程序的末端尾寫上指令:JNBP3.2,$;在/INT0(P3.2)變高前,原地等待
JBP3.2,$;在/INT0變低前,原地等待
RETI;返回并執(zhí)行一條指令。2.9復位狀態(tài)及復位電路2.9.1復位狀態(tài)
復位引腳RST上只要出現(xiàn)10ms以上的高電平,單片機就實現(xiàn)復位。表2.9MCS-51單片機復位狀態(tài)表寄存器復位狀態(tài)寄存器復位狀態(tài)PC0000HTCON00HA00HT2CON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0~P3FFHSCON00H圖2.26復位電路2.9.2復位電路第3章MCS-51單片機指令系統(tǒng)和匯編語言程序示例3.1MCS-51單片機指令系統(tǒng)概述3.2尋址方式3.3數(shù)據(jù)傳送類指令3.4算術運算類指令3.5邏輯運算及移位指令3.6控制轉移類指令3.7子程序調用與返回指令3.8位操作類指令3.9匯編程序格式與偽指令3.10匯編程序設計示例3.1MCS-51單片機指令系統(tǒng)概述※指令、指令系統(tǒng)的概念※
MCS-51單片機指令系統(tǒng)及其指令格式3.1.1指令、指令系統(tǒng)的概念
指令是使計算機內部執(zhí)行的一種操作,提供給用戶編程使用的一種命令。計算機能夠執(zhí)行的全部操作所對應的指令集合,稱為這種計算機的指令系統(tǒng)。
指令的三種屬性:
功能屬性:指每條指令都對應一個特定的操作功能
時間屬性:指一條指令執(zhí)行所用的時間,一般用機器周期來表示;
空間屬性:指一條指令在程序存儲器中存儲所占用的字節(jié)數(shù)。指令的描述形式:機器語言形式,采用機器語言編寫的程序稱目標程序;匯編語言形式,采用匯編語言編寫的程序稱源程序。匯編:匯編語言程序→機器語言程序匯編有兩種方式:機器匯編和手工匯編。3.1.2MCS-51單片機指令系統(tǒng)及其指令格式
MCS-51單片機指令系統(tǒng)共有111條指令:
功能:數(shù)據(jù)傳送、算術操作、邏輯操作、程序轉移位操作等五大類;
空間屬性:單字節(jié)指令(49條)、雙字節(jié)指令(46條)和最長的三字節(jié)指令(只有16條)。
時間屬性:單機器周期指令(64條)、雙機器周期指令(45條)和只有乘、除法兩條4個機器周期的指令。
指令結構:每條指令通常包括操作碼和操作數(shù)。
操作碼:表示指令將進行何種操作;
操作數(shù):表示參加操作的數(shù)的本身或操作數(shù)所在的地址。匯編語言指令格式:[標號:]操作碼助記符[目的操作數(shù)][,源操作數(shù)][;注釋]※無操作數(shù)、單操作數(shù)、雙操作數(shù)
一些符號的約定意義:
※Ri和Rn:表示當前工作寄存器區(qū)中的工作寄存器,i取0或1,表示R0或R1。n取0~7,表示R0~R7。
※#data:表示包含在指令中的8位立即數(shù)。
※#data16:表示包含在指令中的16位立即數(shù)。
※rel:以補碼形式表示的8位相對偏移量,-128~127?!?/p>
addr16和addr11:分別表示16位直接地址和11位直接地址?!鵧irect:表示直接尋址的地址?!鵥it:表示可位尋址的直接位地址。※(X):表示X單元中的內容?!?(X)):表示以X單元的內容為地址的存儲器單元內容?!?和→符號:“/”表示取反?!啊北硎静僮髁鞒獭?.2尋址方式※立即尋址※寄存器尋址※寄存器間接尋址※直接尋址※變址尋址※相對尋址※位尋址3.2.1立即尋址操作數(shù)直接出現(xiàn)在指令中,緊跟在操作碼的后面,作為指令的一部分與操作碼一起存放在程序存儲器中,可以立即得到并執(zhí)行,不需要經(jīng)過別的途徑去尋找。例:MOV
A,#30H※數(shù)的前面冠以"#"符號作前綴。3.2.2寄存器尋址在指令選定的某寄存器中存放或讀取操作數(shù),以完成指令規(guī)定的操作。例:MOV
A,R0※R0~R7、Acc、Cy、DPTR、AB。3.2.3寄存器間接尋址由指令指出某一寄存器的內容作為操作數(shù)地址的尋址方法,稱為寄存器間接尋址。例:MOVA,@R1※寄存器中的內容不是操作數(shù)本身,而是操作數(shù)的地址,到該地址單元中才能得到操作數(shù),寄存器起地址指針的作用。
※只有Ri、DPTR才能用于寄存器間接尋址。
※內部RAM(@R0、@R1);
外部RAM(@R0、@R1、@DPTR)。圖3.1寄存器間接尋址示意圖
3.2.4直接尋址指令中直接給出操作數(shù)所在的存儲器地址,以供取數(shù)或存數(shù)的尋址方式稱為直接尋址。例:MOVA,40H
機器碼:E540※數(shù)的前面冠以"#"符號作前綴。
※直接尋址可用于訪問片內RAM的低128字節(jié)、SFR。3.2.5變址尋址例:MOVCA,@DPTR※變址尋址可用于訪問程序存儲器(@A+DPTR、@A+PC)。圖3.2變址尋址示意圖3.2.6相對尋址以當前程序計數(shù)器PC值加上指令中給出的偏移量rel,而構成實際操作數(shù)地址的尋址方法。
※當前PC值是指相對轉移指令的存儲地址加上該指令的字節(jié)數(shù)。當前PC值是對相對轉移指令取指結束時的值。
※偏移量rel是有符號的單字節(jié)數(shù),以補碼表示。3.2.7位尋址在位操作指令中直接給出位操作數(shù)的地址。例:MOVC,40H
機器碼:92H40H※可以對片內RAM中的128位和特殊功能寄存器SFR中的93位進行尋址。3.3數(shù)據(jù)傳送類指令※訪問片內數(shù)據(jù)存儲器的一般數(shù)據(jù)傳送指令※片內特殊傳送指令※片外數(shù)據(jù)存儲器數(shù)據(jù)傳送指令※訪問程序存儲器的數(shù)據(jù)傳送指令3.3.1訪問片內數(shù)據(jù)存儲器的一般數(shù)據(jù)傳送指令實現(xiàn)數(shù)在片內RAM單元之間、寄存器之間、寄存器與RAM單元之間的傳送。
格式:
MOV<目的操作數(shù)>,<源操作數(shù)>;目的操作數(shù)單元←源操作數(shù)(或單元)※注意兩個操作數(shù)的各種尋址方式的組合方式。圖3.3訪問片內RAM的一般傳送指令操作關系圖
表3.1訪問片內RAM的一般傳送指令表
例1:設內部RAM(30H)=40H,(40H)=10H,(10H)=00H,(P1)=CAH,分析程序執(zhí)行后各單元及寄存器、P2口的內容。MOVR0,#30H MOVA,@R0 MOVR1,A MOVB,@R1 MOV@R1,P1 MOVP2,P1 MOV10H,#20H 3.3.2片內特殊傳送指令
※堆棧操作指令※數(shù)據(jù)交換指令1.堆棧操作指令
進棧指令:保存片內RAM單元(低128字節(jié))或特殊功能寄存器SFR的內容;
出棧指令:恢復片內RAM單元(低128字節(jié))或特殊功能寄存器SFR的內容。
※注意堆棧先進后出的原則。(SP)←(SP)-1修改指針,指向新棧頂
(direct)←((SP)+1)把棧頂?shù)臄?shù)據(jù)彈出到直接尋址單元中去
PUSHdirect;
POPdirect;
((SP))←direct把直接地址單元的內容壓入SP所指單元內
(SP)←(SP)+1修改指針,使其指向棧頂上的一個存數(shù)單元
例2若在外部程序存儲器中2000H單元開始依次存放0~9的平方值,數(shù)據(jù)指針(DPTR)=3A00H,用查表指令取得2003H單元的數(shù)據(jù)后,要求保持DPTR中的內容不變。MOVA,#03HPUSHDPHPUSHDPLMOVDPTR,#2000HMOVCA,@A+DPTRPOPDPLPOPDPH
2.數(shù)據(jù)交換指令數(shù)據(jù)交換指令作雙向傳送,指令執(zhí)行后,兩操作數(shù)均未沖掉、丟失。
數(shù)據(jù)傳送指令一般都是將操作數(shù)自源地址單元傳送到目的地址單元。指令執(zhí)行后,源地址單元的操作數(shù)不變,目的地址單元的操作數(shù)則修改為源地址單元的操作數(shù)。例3設(R0)=30H,30H=4AH,(A)=28H,分析執(zhí)行下列指令后的結果。
XCHA,@R0XCHDA,@R0SWAPA3.3.3片外數(shù)據(jù)存儲器數(shù)據(jù)傳送指令
MCS-51單片機CPU對片外擴展的數(shù)據(jù)存儲器RAM或I/O口進行數(shù)據(jù)傳送,必須采用寄存器間接尋址的方法,通過累加器A來完成。MOVXA,@DPTR ;(A)←((DPTR)) E6MOVXA,@Ri ;(A)←((Ri)) E2、E3MOVX@DPTR,A ;((DPTR))←(A) F0MOVX@Ri,A;((Ri))←(A) F2、F3例4設外部RAM(0203H)=FFH,分析以下指令執(zhí)行后的結果。
MOVDPTR,#0203HMOVXA,@DPTRMOV30H,A MOVA,#0FHMOVX@DPTR,A3.3.4訪問程序存儲器的數(shù)據(jù)傳送指令訪問程序存儲器的數(shù)據(jù)傳送指令又稱作查表指令,采用基址寄存器加變址寄存器間接尋址方式,把程序存儲器中存放的表格數(shù)據(jù)讀出,傳送到累加器A。
MOVCA,@A+DPTR;(A)←((A)+(DPTR))93MOVCA,@A+PC ;(PC)←(PC)+1,(A)←((A)+(PC))83
例:從片外程序存儲器2000H單元開始存放0~9的平方值,分別以PC和DPTR作為基址寄存器進行查表得9的平方值。(設MOVC指令所在地址(PC)=1FF0H)MOVA,#09H ;(A)←09HADDA,#0FH ;用加法指令進行地址調整MOVCA,@A+PC;(A)←((A)+(PC)+1)3.4算術運算類指令※加、減法指令※十進制調整指令※乘、除法指令3.4.1加、減法指令圖3.4加減法指令形式結構圖(a)加減法指令關系圖;(b)加1、減1指令關系圖
必須按照二進制進行加減運算表3.2加減法指令表
例:設(A)=49H,(R0)=6BH,分析執(zhí)行指令ADDA,R0后的結果。例:設(A)=C3H,數(shù)據(jù)指針低位(DPL)=ABH,CY=1,分析執(zhí)行指令ADDCA,DPL后的結果。例:設(A)=52H,(R0)=B4H,分析執(zhí)行如下指令后的結果
CLRCSUBBA,R0
例:設(R0)=7EH,(7EH)=FFH,(7FH)=38H,(DPTR)=10FEH,分析逐條執(zhí)行下列指令后各單元的內容。INC@R0INCR0INC@R0INCDPTRINCDPTRINCDPTR3.4.2十進制調整指令若(A)3~0>9或(AC)=1,則(A)3~0←(A)3~0+06H若(A)7~4>9或(CY)=1,則(A)7~4←(A)7~4+06HDAA;
※兩個壓縮BCD碼按二進制相加,必須在加法指令ADD、ADDC后,經(jīng)過本指令調整后才能得到正確的壓縮BCD碼和數(shù),實現(xiàn)十進制的加法運算。
※DA指令不能對減法進行十進制調整。做減法運算時,可采用十進制補碼相加,然后用DAA指令進行調整。
例:對BCD碼加法65+58→DBH,進行十進制調整。
例11設片內RAM30H,31H單元中分別存放著兩位BCD碼表示的被減數(shù)和減數(shù),兩數(shù)相減的差仍以BCD碼的形式存放在32H單元中??捎孟旅娴某绦驅崿F(xiàn):CLRCMOVA,#9AHSUBBA,31H ;求減數(shù)的十進制補碼ADDA,30H ;作十進制補碼加法DAA ;進行BCD調整MOV32H,A ;將BCD碼的差送存32H單元3.4.3乘、除法指令※乘法指令※除法指令1、乘法指令MULAB;(B)←((A)×(B))15~8(A)←((A)×(B))7~0CY←0機器碼:A4H
※乘積16位數(shù)中的低8位存放在A中,高8位存放在B中。
※乘積大于0FFH,OV置1,否則OV清零。
※乘法指令執(zhí)行后CY=0。2.除法指令DIVAB;?(A)←(A)÷(B)之商,(B)←(A)÷(B)之余數(shù)
(CY)←0,(OV)←0機器碼:84H※商存于累加器A中,余數(shù)存于寄存器B中?!M位標志位CY和溢出標志位OV均被清零?!鬊中的內容為0時,溢出標志OV被置1,而CY仍為0。3.5邏輯運算及移位指令圖3.5邏輯指令形式結構圖
與加、減法指令尋址方式相同的邏輯指令;(b)與加、減法指令尋址方式不同的邏輯指令表3.3邏輯操作指令表表3.3邏輯操作指令表
例:(P1)=C5H=11000101B,屏蔽P1口高4位而保留低4位。
邏輯“或”指令常用來使字節(jié)中某些位置“1”,其它位保持不變。例:若(A)=C0H,(R0)=3FH,(3FH)=0FH,執(zhí)行指令
ORLA,@R0
邏輯“異或”指令常用來使字節(jié)中某些位進行取反操作,其它位保持不變。欲某位取反該位與“1”相異或;欲某位保留則該位與“0”
相異或。還可利用異或指令對某單元自身異或,以實現(xiàn)清零操作。例:若(A)=B5H=10110101B,執(zhí)行下列操作:
XRLA,#0F0HMOV30H,AXRLA,30H
用移位指令還可以實現(xiàn)算術運算,左移一位相當于原內容乘以2,右移一位相當于原內容除以2。例:設(A)=5AH=90,且CY=0,則執(zhí)行指令RLA后,(A)=B4H=90。執(zhí)行指令RRA后,(A)=2DH=45。執(zhí)行指令RLCA后,(A)=B4H=90。執(zhí)行指令RRCA后,(A)=2DH=45。3.6控制轉移類指令※無條件轉移指令※條件轉移指令3.6.1無條件轉移指令表3.4無條件轉移指令
1.LJMP(長轉移指令)
※16位目標地址(addr16)可以使程序從當前地址轉移到64KB程序存儲器地址空間的任意地址。
※執(zhí)行時間長,字節(jié)多。
2.AJMP(絕對轉移指令)
AJMP的機器碼是由11位直接地址addr11和指令操作碼00001組成:a10?a9a800001a7a6a5a4a3a2a1a0
目的地址:由AJMP指令所在位置的地址PC值加上該指令字節(jié)數(shù)2,構成當前PC值。取當前PC值的高5位與指令中提供的11位直接地址形成轉移的目的地址,即:轉移目的地址(PC)PC15PC14PC13PC12PC11a10a9a8a7a6a5a4a3a2a1a0
※
程序可轉移的位置只能是和PC當前值在同一2KB范圍內。
※
本指令轉移可以向前也可以向后,指令執(zhí)行后不影響狀態(tài)標志位。
※
若addr11相同,則AJMP指令的機器碼相同,但轉移的目的地址卻可能不同。
3.SJMP(相對短轉指令)
※指令的操作數(shù)rel用8位帶符號數(shù)補碼表示。
※轉移范圍:PC當前值向前轉128字節(jié),向后轉127字節(jié)。
※轉移目的地址=SJMP指令所在地址+2+rel※rel=FEH,目的地址就是SJMP指令的地址
SJMP$指令無限循環(huán),進入等待狀態(tài)。
4.JMP@A+DPTR(相對長轉移指令)
以數(shù)據(jù)指針DPTR的內容為基址,以累加器A的內容為相對偏移量,在64KB范圍內無條件轉移。特點:轉移地址可以在程序運行中加以改變。例:根據(jù)累加器A的值,轉不同處理程序的入口。
MOVDPTR,#TABLE JMP@A+DPTR
TABLE:AJMPTAB1 AJMPTAB2 AJMPTAB3 ……3.6.2條件轉移指令條件轉移指令是當某種條件滿足時,程序轉移執(zhí)行;條件不滿足時,程序仍按原來順序執(zhí)行。表3.5條件轉移指令
1.判零條件轉移指令判零條件轉移指令以累加器A的內容是否為0作為轉移的條件。
※執(zhí)行該指令不作任何運算,也不影響標志位。
例:將片外RAM首地址為DATA1的一個數(shù)據(jù)塊轉送到片內RAM首地址為DATA2的存儲區(qū)中。數(shù)據(jù)為零終止傳送。
MOVR0,#DATA1 MOVR1,#DATA1LOOP:MOVXA,@R0HERE:JZHERE MOV@R1,A INCR0 INCR1 SJMPLOOP
2.比較轉移指令先對兩個規(guī)定的操作數(shù)進行比較,根據(jù)比較的結果來決定是否轉移。
※比較是進行一次減法運算,但其差值不保存,兩個數(shù)的原值不受影響,而標志位要受到影響。
※利用標志位CY作進一步的判斷,可實現(xiàn)三分支轉移。
例:當從P1口輸入數(shù)據(jù)為01H時,程序繼續(xù)執(zhí)行,否則等待,直到P1口出現(xiàn)01H。
MOVA,#01H WAIT:CJNEA,P1,WAIT
3.減1條件轉移指令把第一操作數(shù)減1,并把結果仍保存在第一操作數(shù)中,然后判斷是否為零。
※指令對于構成循環(huán)程序是十分有用
例:將內部RAM從DATA單元開始的10個無符號數(shù)相加,相加結果送SUM單元保存。(設相加結果不超過8位二進制數(shù))
MOVR0,#0AH MOVR1,#DATACLRA LOOP:ADDA,@R1INCR1 DJNZR0,LOOPMOVSUM,A3.7子程序調用與返回指令※子程序調用指令※返回指令※空操作指令3.7.1子程序調用指令子程序調用指令有長調用和絕對調用兩條。3.7.2返回指令返回指令:對應兩條調用指令的子程序返回指令RET;對應從中斷服務程序的返回指令RETI。兩點不同:
※從使用上,RET指令必須作子程序的最后一條指令;RETI必須作中斷服務程序的最后一條指令。
※RETI指令除恢復斷點地址外,還恢復CPU響應中斷時硬件自動保護的現(xiàn)場信息。執(zhí)行RETI指令后,將清除中斷響應時所置位的優(yōu)先級狀態(tài)觸發(fā)器,使得已申請的同級或低級中斷申請可以響應;而RET指令只能恢復返回地址。3.7.3空操作指令
NOP3.8位操作類指令
位操作也稱布爾變量操作,它是以位(bit)作為單位來進行運算和操作的。
MCS-51單片機內部有一個功能相對獨立的布爾處理機,借用進位標志CY作為位累加器,有位存儲器(位尋址區(qū)中的各位),指令系統(tǒng)中有17條專門進行位處理的指令集。位處理指令可以完成以位為對象的數(shù)據(jù)轉送、運算、控制轉移等操作。
位地址的表示方法:※直接位地址表示,如D5H。※點表示,如PSW.5?!幻Q表示,如F0?!脩舳x名稱表示,如用戶定義用FLG代替F0。
例:利用位操作指令,模擬下圖所示硬件邏輯電路的功能。圖3.6硬件邏輯電路圖3.9匯編程序格式與偽指令
1.匯編程序格式
[標號:]操作碼助記符[源操作數(shù)][,目的操作數(shù)][;注釋]
2.偽指令
偽指令不要求計算機做任何操作,也沒有對應的機器碼,不產(chǎn)生目標程序,不影響程序的執(zhí)行,僅僅是能夠幫助進行匯編的一些指令。常用的偽指令:※
設置目標程序起始地址偽指令ORG
格式:[符號:]ORG地址※結束匯編偽指令END
格式:[符號:]END※定義字節(jié)偽指令DB
格式:[標號:]DB項或項表※定義字偽指令DW
格式:[標號:]DW項或項表※預留存儲空間偽指令DS
格式:[標號:]DS表達式※等值偽指令EQU
格式:標號:EQU項※位地址定義偽指令BIT
格式:標號:BIT位地址3.10匯編程序設計示例3.10.1算術、邏輯處理程序例:將一個雙字節(jié)數(shù)存入片內RAM。設該待存雙字節(jié)數(shù)高字節(jié)在工作寄存器R2中,低字節(jié)在累加器A中,要求高字節(jié)存入片內RAM的36H單元,低字節(jié)存入35H單元。
例:多字節(jié)無符號數(shù)相加。設被加數(shù)與加數(shù)分別在以ADR1與ADR2為初址的片內數(shù)據(jù)存儲器區(qū)域中,自低字節(jié)起,由低到高依次存放;它們的字節(jié)數(shù)為L,要求加得的和放回被加數(shù)的單元。
程序流程框圖
例:將R1、R2、R3、R4四個工作寄存器中的BCD碼數(shù)據(jù)依次相加,要求中間計算結果與最后的和都仍為BCD碼,且存入片內RAM。設四個工作寄存器中的BCD碼數(shù)據(jù)相加后其和仍為2位BCD碼,無溢出;(R1)+(R2)后的和存入片內RAM的30H單元,再加(R3)后的和存入31H單元,總的和存入32H單元。
例:使雙字節(jié)數(shù)依次右移1位。設該雙字節(jié)數(shù)的高字節(jié)已在工作寄存器R2中,低字節(jié)已在累加器A中。
例:多字節(jié)數(shù)求補。設該多字節(jié)數(shù)由低字節(jié)到高字節(jié)依次存放在片內RAM的以30H為起始地址的區(qū)域中,求補后放回原處。
例:統(tǒng)計自P1口輸入的字串中正數(shù)、負數(shù)、零的個數(shù)。設R0、R1、R2三個工作寄存器分別為統(tǒng)計正數(shù)、負數(shù)、零的個數(shù)的計數(shù)器。
例:雙字節(jié)無符號數(shù)乘法子程序設計。3.10.2數(shù)制轉換程序例:將某8位二進制數(shù)轉換為BCD碼。設8位二進制數(shù)已在A中,轉換后存于片內RAM的20H、21H單元。例:將某十進制數(shù)轉換為ASCII碼。設該十進制數(shù)已在A中。例:編寫將某BCD碼數(shù)據(jù)轉換為ASCII碼的子程序。設待轉換的BCD碼數(shù)據(jù)已在累加器A中,且在程序存儲器中按序放有與BCD碼數(shù)據(jù)對應的ASCII碼的表格,其首地址為TAB。3.10.3
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中物理實驗班《大氣壓強實驗操作指導》
- 企業(yè)服務質量管理實戰(zhàn)指南
- 工作流程優(yōu)化辦公空間需求表
- 項目執(zhí)行過程中的經(jīng)驗教訓總結與成果展示
- 寓言故事中的社會現(xiàn)象解讀與反思
- 藝術創(chuàng)作繪畫技巧知識題庫
- 智能制造產(chǎn)業(yè)鏈協(xié)同合作協(xié)議
- 制造業(yè)自動化技術應用題庫
- 企業(yè)研發(fā)新產(chǎn)品試制合同
- 商務會議中的合作往來文書范本
- 城區(qū)綠地養(yǎng)護服務費項目成本預算績效分析報告
- 新部編人教版六年級道德與法治下冊全冊全套課件
- 糧油機械設備更新項目資金申請報告-超長期特別國債投資專項
- 《中國古代寓言》導讀(課件)2023-2024學年統(tǒng)編版語文三年級下冊
- 個體戶的食品安全管理制度文本
- 部編版道德與法治七年級下冊每課教學反思
- 自考14237《手機媒體概論》備考試題庫(含答案)
- LKJ2000型監(jiān)控裝置特殊情況下的操作課件講解
- 高考英語688高頻詞匯excel版
- QCT1170-2022汽車玻璃用功能膜
- HG/T 6312-2024 化工園區(qū)競爭力評價導則(正式版)
評論
0/150
提交評論