版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
前言本課件配套機械工業(yè)出版社出版的《單片機原理及應(yīng)用(第2版)》(曹克澄主編)教材而制作的,參與本課件制作的人員由上海電機學院曹克澄(第3章、第4章、第6章、第8章)、四川信息職業(yè)技術(shù)學院熊建云(第1章、第2章)、安徽機電職業(yè)技術(shù)學院余丙榮(第5章)、遼寧機電職業(yè)技術(shù)學院周兵(第7章、第9章)組成,曹克澄對本課件進行統(tǒng)稿,由于時間倉促,本課件有不足之處,懇請讀者提出寶貴意見,并懇請讀者提出修改建議。E-mail:caokc@http://第1章基礎(chǔ)知識第2章MCS-51系列單片機的結(jié)構(gòu)和時序第3章MCS-51系列單片機指令系統(tǒng)第4章MCS-51系列單片機中斷系統(tǒng)與定時/計數(shù)器第5章存儲器擴展技術(shù)第6章并行I/O擴展技術(shù)第7章串行通信技術(shù)第8章I/O設(shè)備接口技術(shù)第9章單片機應(yīng)用系統(tǒng)設(shè)計http://第1章基礎(chǔ)知識本章重點:了解微型計算機的基本結(jié)構(gòu)和工作原理;掌握單片機的概念及應(yīng)用場合;掌握計算機中的數(shù)制與編碼。1.1微型計算機簡介1.2單片機簡介1.3計算機中的數(shù)制與編碼
本章小結(jié)http://1.1微型計算機簡介1.1.1微型計算機的發(fā)展
1.微型計算機的發(fā)展第一代微處理器例:Intel4004→4位第二代微處理器例:Intel8080→8位第三代微處理器例:Intel8086→16位第四代微處理器例:Intel80486→32位第五代微處理器例:Intel公司的Pentiumg→64位http://2.微型計算機的應(yīng)用數(shù)值計算控制信息處理與管理人工智能http://1.1.2微型計算機的組成及工作原理
1.微型計算機的常用術(shù)語位(bit):
位是計算機所能表示的最基本、最小的數(shù)據(jù)單位。位有兩種狀態(tài):0和1。字節(jié)(Byte):一個連續(xù)的8位二進制數(shù)稱為一個字節(jié),即:
1Byte=8bit,通常以字節(jié)為單位來存放數(shù)據(jù)。字(Word):是計算機內(nèi)部進行數(shù)據(jù)處理的基本單位。字通常與計算機內(nèi)部的寄存器、算術(shù)邏輯單元、數(shù)據(jù)總線的寬度相一致。http://存儲器容量更大單位:
KB(1KB=1024B=210B)
MB(1MB=1024KB=220B)
GB(1=1024MB=230B)
指令(instruction):是規(guī)定計算機進行某種操作的命令。
指令系統(tǒng)(instructionset):指一臺計算機所能執(zhí)行的全部指令。程序(program):是指令的有序集合,是一組為完成某種任務(wù)而編制的指令序列。http://2.微型計算機的組成http://(1)中央處理單元(CPU)
CPU主要由運算器、控制器組成。(2)存儲器存儲器的主要功能是存放程序和數(shù)據(jù)。存儲器中存放二進制數(shù)的單元稱為存儲單元。http://(3)輸入/輸出接口(I/O接口)完成外設(shè)與CPU的連接;轉(zhuǎn)換數(shù)據(jù)傳送速度;轉(zhuǎn)換電平;將I/O設(shè)備的狀態(tài)信息反饋給CPU等。
(4)總線(Bus)總線是將CPU、存儲器和I/O接口等相對獨立的功能部件連接起來,并傳送信息的公共通道。數(shù)據(jù)總線DB(DataBus):雙向通信總線。地址總線AB(AddressBus):單向通信總線??刂瓶偩€CB(ControlBus):單向通信總線。http://3.微型計算機的工作原理(1)取指令CPU選中存儲單元;CPU向存儲器發(fā)出讀取數(shù)據(jù)的控制信號;CPU通過DB讀入指令代碼。(2)分析、執(zhí)行指令過程CPU讀取指令代碼后進行譯碼;CPU根據(jù)譯碼結(jié)果發(fā)出為完成此指令所需要的控制信號;執(zhí)行指令所規(guī)定的操作。http://1.2單片機簡介常見計算機:http://一般計算機的結(jié)構(gòu):http://顯示器主機鼠標鍵盤微型計算機系統(tǒng)http://運算器控制器CPU存儲器輸入接口電路輸入設(shè)備輸出設(shè)備輸出接口電路硬件系統(tǒng)軟件系統(tǒng)+什么是單片機?
單片機就是將組成微型計算機的CXPU、存儲器(RAM和ROM)、輸入/輸出接口等幾個部分,全部集成在一塊芯片內(nèi)所組成的微型計算機,就稱為單片機。http://1.2.1單片機的發(fā)展概況單片機的發(fā)展方向低電源、低功耗外圍接口電路內(nèi)裝化工藝的進步及抗干擾能力的提高存儲能力和Internet連接http://1.2.2單片機的特點體積小、結(jié)構(gòu)簡單、可靠性高;控制功能強;低電壓、低功耗優(yōu)異的性能/價格http://1.2.3單片機的應(yīng)用http://汽車電子家用電器航空航天醫(yī)療設(shè)備工業(yè)控制儀器儀表通信產(chǎn)品1.2.4MCS-51系列單片機簡介MCS-51系列基本產(chǎn)品型號:8051、8031、8751稱為51子系列。不同型號MCS-51單片機CPU處理能力和指令系統(tǒng)完全兼容,只是存儲器和I/O接口的配置有所不同。http://
硬件配置基本配置:1.
8位CPU2.片內(nèi)ROM/EPROM、RAM3.片內(nèi)并行I/O接口4.片內(nèi)16位定時器/計數(shù)器5.片內(nèi)中斷處理系統(tǒng)6.片內(nèi)全雙工串行I/O口http://1.3計算機中的數(shù)制與編碼1.3.1數(shù)制數(shù)制:是按進位原則進行計數(shù)的一種方法,即進位計數(shù)制。十進制數(shù)(1)記數(shù)符號:0、1、2、3、4、5、6、7、8、9;書寫時用“D”作后綴(一般省略)。(2)進位原則:“逢十進一”。(3)按權(quán)展開式:http://二進制數(shù)(1)記數(shù)符號:0、1;書寫時用“B”作后綴。(2)進位原則:“逢二進一”;(3)按權(quán)展開式:http://十六進制數(shù)(1)記數(shù)符號:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F;書寫時用“H”作后綴。(2)進位原則:“逢十六進一”;(3)按權(quán)展開式:http://http://記?。菏M制與十進制、十六進制與二進制對應(yīng)關(guān)系。1.3.2數(shù)制之間的相互轉(zhuǎn)換1.二進制及其他進制轉(zhuǎn)換為十進制數(shù)二進制、八進制和十六進制轉(zhuǎn)換十進制的方法是:將二進制、八進制或十六進制寫成按權(quán)展開式,然后各項相加,則得相應(yīng)的十進制數(shù)?!纠堪讯M制數(shù)10101.1011B轉(zhuǎn)換成相應(yīng)的十進制數(shù)。解:10101.1011B
=1×24+0×23+1×22+0×21+1×20
+1×2-1+1×2-3+1×2-4
=21.6875Dhttp://2.十進制數(shù)轉(zhuǎn)換成二進制數(shù)十進制數(shù)據(jù)轉(zhuǎn)換成二進制數(shù)是將整數(shù)部分按“除2倒讀余數(shù)法”的原則進行轉(zhuǎn)換;小數(shù)部分按“乘2順讀整數(shù)法”的原則進行轉(zhuǎn)換。【例】把十進制數(shù)15.625轉(zhuǎn)換成為對應(yīng)二進制數(shù)。解:所以十進制數(shù)15.625=1111.101Bhttp://3.二進制數(shù)與十六進制數(shù)相互轉(zhuǎn)換二進制數(shù)轉(zhuǎn)換成十六進制數(shù)時,從小數(shù)點開始,分別向左、向右每4位二進制數(shù)劃為一組,整數(shù)部分不足4位前面添0,小數(shù)部分不足4位后面添0,然后每一組(4位二進制數(shù))用1位十六進制數(shù)代替(4位二進制數(shù)與1位十六進制數(shù)對應(yīng)關(guān)系見表),小數(shù)點位置保持不變。
【例】二進制數(shù)1111000111.100101B轉(zhuǎn)換成為十六進制數(shù)。解:
1111000111.100101B=001111000111.10010100B
=3C7.94Hhttp://3.二進制數(shù)與十六進制數(shù)相互轉(zhuǎn)換十六進制數(shù)轉(zhuǎn)換成二進制數(shù)時,1位十六進制數(shù)用4位二進制數(shù)來替換,小數(shù)點位置保持不變?!纠繉⑹M制數(shù)2F5.CH轉(zhuǎn)換成為二進制數(shù)解:
2F5.CH=001011110101.1100B
=1011110101.11B4.十進制數(shù)轉(zhuǎn)換十六進制數(shù)先將十進制數(shù)轉(zhuǎn)換成二進制數(shù),再將二進制數(shù)轉(zhuǎn)換成十六進制數(shù)。http://1.3.3二進制數(shù)的算術(shù)運算1.加法運算加法規(guī)則:
0+0=0;0+1=1;1+0=1;1+1=10進位原則:逢二進位。【例】求0111B與0110B之和。解:0111……(7)
+)0110……(6)
1101……(13)∴0111B+0110B=1101Bhttp://2.減法運算減法規(guī)則:
0-0=0;1-0=1;1-1=0;0-1=1(借位)【例】求1110B-0101B=?解:1110……(14)
-)0101……(5)
1001……(9)∴1110B-0101B=1001Bhttp://3.乘法運算在計算機系統(tǒng)中,都是將乘法作為連續(xù)的加法來執(zhí)行。其中,自身相加的數(shù)為被乘數(shù),相加的次數(shù)為乘數(shù)?!纠壳?101B×11B=?解:1101B×11B=1101B+1101B+1101B
=100111B 4.除法運算除法可以歸結(jié)為連續(xù)的減法,即從被除數(shù)中不斷地減去除數(shù),所減的次數(shù)是相除的商,而剩下的值則是相除的余數(shù)。注意:因為減法可以轉(zhuǎn)換為加法(見二進制數(shù)補碼的加減運算),所以除法也能轉(zhuǎn)換成加法。這樣,二進制數(shù)的加、減、乘、除都可以轉(zhuǎn)換加法運算。http://1.3.4二進制數(shù)的邏輯運算1.邏輯與運算
運算規(guī)則
0∧0=0;0∧1=0;1∧0=0;1∧1=1
記憶口訣:有0為0,全1為1。2.邏輯或運算
運算規(guī)則
0∨0=0;0∨1=1;1∨0=1;1∨1=1
記憶口訣:有1為1,全0為0。http://3.邏輯異或運算
運算規(guī)則
0⊕0=0;0⊕1=1;1⊕0=1;1⊕1=0
記憶口訣:相同為0,不同為1(僅指兩位異或運算)。4.邏輯非運算
運算規(guī)則
記憶口訣:取反。http://1.3.5計算機中數(shù)的表示與編碼1.計算機中數(shù)的表示在計算機中,為了運算的方便,數(shù)的最高位用來表示正、負數(shù)。最高位為“0”表示正數(shù),最高位為“1”表示負數(shù)。真值:帶“+、-”號的數(shù)。機器數(shù):數(shù)碼化了的帶符號數(shù)。http://【例】正數(shù)59H真值和機器數(shù)表示法。解:真值的表示法:+1011001B或+59H
機器數(shù)表示法:01011001B或59H【例】-59H真值和機器數(shù)表示法。解:真值的表示法:-1011001B或-59H
機器數(shù)表示法:11011001B或D9Hhttp://微型計算機中一個符號數(shù)的機器數(shù)的表示方法有原碼、反碼、補碼等三種表示法。原碼:用最高位表示符號位,后面各位表示該數(shù)的絕對值。(注意:符號位:0代表+,1代表-)【例】
(+56)原碼=00111000B=38H
(-56)原碼=10111000B=B8H從例題中可以看出:一個負數(shù)的原碼只要在其對應(yīng)的正數(shù)原碼基礎(chǔ)上加80H就可以方便地求出其原碼。(-56)原碼=(+56)原碼+80H=38H+80H=B8Hhttp://反碼:正數(shù)的反碼與原碼相同;負數(shù)的反碼是在其原碼的基礎(chǔ)上,保留符號位不變,數(shù)值位各位取反。【例】
(+56)反碼=00111000B=38H
(-56)反碼=11000111B=C7H從例題中可以看出:一個負數(shù)的反碼只要在其對應(yīng)的正數(shù)反碼(即原碼)基礎(chǔ)上各位取反就可以方便地求出其反碼。而取反的方法也很簡單,只要用FFH去減該數(shù)即可。(-56)反碼=FFH-(+56)原碼=FFH-38H=C7Hhttp://Why?補碼:正數(shù)的補碼與原碼、反碼相同;負數(shù)的補碼是在其反碼的基礎(chǔ)上加1即可?!纠?/p>
(+56)補碼=00111000B=38H
(-56)補碼=(-56)反碼+1=C7H+1=C8H從求反碼的方法中可以推導(dǎo):(-56)補碼=(-56)反碼+1=FFH-(+56)原碼+1
=100H-(+56)原碼=100H-38H=C8Hhttp://負數(shù)原碼、反碼、補碼求法歸納:(負數(shù))原碼=(對應(yīng)正數(shù))原碼+80H(負數(shù))反碼=FFH-(對應(yīng)正數(shù))原碼(負數(shù))補碼=100H-(對應(yīng)正數(shù))原碼http://http://注意:在原碼和反碼,0有兩種表示法,即+0和-0的表示法不同;而在補碼中0的表示法只有一種。2.二進制編碼BCD碼:用二進制數(shù)表示的十進制數(shù)稱為二進制編碼的十進制數(shù)。非壓縮BCD碼:8位碼表示1位十進制數(shù)(高4位填0)的編碼。壓縮的BCD碼:8位碼表示2位十進制數(shù)(高4位、低4位各代表一位十進制數(shù))。非法碼:4位代碼在1010B~1111B范圍時。(2個BCD碼的運算可能出現(xiàn)非法碼,這時要對所得結(jié)果進行調(diào)整。)http://ASCII碼:美國標準信息交換碼(即ASCII碼)。字符0~9的ASCII碼:30H~39H大寫英文字母A~Z的ASCII碼:41H~5AH小寫英文字母a~z的ASCII碼:61H~7AHhttp://本章小結(jié)微型計算機的基本結(jié)構(gòu)和常用術(shù)語單片機的概念單片機的特點及應(yīng)用場合計算機不同中數(shù)制及相互轉(zhuǎn)換二進制數(shù)的自述運算和邏輯運算符號數(shù)的表示形式:原碼、反碼、補碼BCD碼和ASCII碼http://第2章MCS-51系列單片機的結(jié)構(gòu)和時序本章重點:了解51系列單片機基本結(jié)構(gòu);了解51系列單片機的引腳名稱及功能;掌握存儲器(內(nèi)RAM)結(jié)構(gòu);掌握PSW寄存器各位名稱及功能;掌握復(fù)位后PC、PSW的狀態(tài)。2.1MCS-51系列單片機的結(jié)構(gòu)與引腳2.2MCS-51系列單片機的存儲器結(jié)構(gòu)2.3MCS-51系列單片機的時鐘電路和時序2.4MCS-51系列單片機的復(fù)位與掉電處理
本章小結(jié)http://2.1MCS-51系列單片機的結(jié)構(gòu)與引腳2.1.1MCS-51系列單片機的內(nèi)部結(jié)構(gòu)8031無http://http://2.1.2MCS-51系列單片機內(nèi)部主要組成部分介紹1.中央處理器(CPU)(1)運算器運算器由ALU(算術(shù)及邏輯運算單元)、A(累加器)、B寄存器、PSW(程序狀態(tài)字寄存器)和暫存器等組成,主要功能用于實現(xiàn)算術(shù)運算和邏輯運算。(2)控制器控制器由程序計數(shù)器PC、指令寄存器、指令譯碼器、堆棧指針SP、數(shù)據(jù)指針DPTR、定時與控制邏輯電路等組成。單片機的執(zhí)行指令是在控制下進行的。
http://程序計數(shù)器PC:是一個16位的專用寄存器,用來存放即將要執(zhí)行的指令地址,可對64KB的程序存儲器直接尋址。
注:PC沒有地址,是不可尋址的,因此用戶無法對它進行直接讀寫。但可以通過轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,實現(xiàn)程序的轉(zhuǎn)移。指令寄存器:指令寄存器是一個8位的寄存器,用于暫存待執(zhí)行的指令代碼,等待譯碼。(2)控制器http://8051單片機中共有256個RAM單元,包括低128個單元(地址為00H~7FH)的內(nèi)部RAM區(qū)和高128B(地址為80H~FFH)的特殊功能寄存器區(qū)。8051單片機共有4KB的內(nèi)部ROM,用于存放程序或表格,稱為程序存儲器。2.內(nèi)部數(shù)據(jù)存儲器3.內(nèi)部程序存儲器http://四個雙向的8位并行I/O口,每個端口可以按字節(jié)輸入或輸出,每一條I/O線也可以單獨用作輸入或輸出。
8051片內(nèi)有一個全雙工的串行口,以實現(xiàn)單片機和其他設(shè)備之間的串行數(shù)據(jù)傳送。4.I/O端口5.串行口http://
8051帶有2個16位的計數(shù)器,既可以作為定時器用于對被控系統(tǒng)進行定時控制,也可以作為計數(shù)器用于產(chǎn)生各種不同頻率的矩形波及用于測量脈沖寬度等。
8051單片機有5個中斷源,2個中斷優(yōu)先級。
6.定時/計數(shù)器7.中斷控制系統(tǒng)http://2.1.3MCS-51系列單片機的引腳1.電源線:VCC(+5V)、VSS(地)2.振蕩電路:XTAL1、XTAL23.復(fù)位引腳:RST4.并行口:P0、P1、P2、P35.EA:訪問程序存儲控制信號6.PSEN:外部ROM讀選通信號7.ALE:地址鎖存控制信號注:P0、P2、P3口還具有第二功能http://P0、P2、P3口的第二功能http://2.2MCS-51系列單片機的存儲器結(jié)構(gòu)MCS-51單片機內(nèi)部有程序存儲器和數(shù)據(jù)存儲器兩大類。程序存儲器:用于存放程序和常數(shù)。——ROM類存儲器(4KB,但8031片內(nèi)無ROM)數(shù)據(jù)存儲器:MCS-51系列單片機的數(shù)據(jù)存儲器由片內(nèi)數(shù)據(jù)存儲器(采用8位二進制數(shù)尋址),用于存放中間結(jié)果或暫存數(shù)據(jù),部分單元作為特殊功能寄存器?!猂AM類存儲器http://在物理結(jié)構(gòu)上分為四個存儲空間:片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器。從邏輯上分為三個存儲器地址空間:⑴片內(nèi)、片外統(tǒng)一編址的64KB程序存儲器地址空間0000H~FFFFH;⑵64KB的外部數(shù)據(jù)存儲器或擴展I/O口地址空間0000H~FFFFH;⑶256B的片內(nèi)數(shù)據(jù)存儲器地址空間00H~FFH(包括低128B的內(nèi)部RAM地址00H~7FH和高128B的特殊功能寄存器地址空間)。http://2.2.1程序存儲器外部ROM60KB內(nèi)部ROM4KBEA=1外部ROM4KBEA=0FFFFH1000H0FFFH0000H0FFFH0000H注:程序存儲器用MOVC指令訪問http://http://2.2.2數(shù)據(jù)存儲器特殊功能寄存器128B內(nèi)部RAM128B外部RAM64KBFFH80H7FH00HFFFFH0000H注1:用MOV指令讀寫注2:用MOVX指令讀寫http://內(nèi)部數(shù)據(jù)存儲器FFH80H7FH30H2FH20H1FH00H特殊功能寄存器SFR用戶RAM區(qū)位尋址區(qū)通用寄存器區(qū)http://1.通用寄存器區(qū)通用寄存器區(qū)共分4個區(qū),每個區(qū)有8個單元,每個區(qū)的8個單元從低地址到高地址分別命名為R0-R7。復(fù)位后當前工作寄存器區(qū)為0區(qū),可以通用對PSW中的RS1、RS0的設(shè)置改變當前工作寄存器區(qū)。
RS1RS0被選寄存器組
000區(qū)
011區(qū)
102區(qū)
113區(qū)R7…R0R7…R0R7…R0R7R6R5R4R3R2R1R01FH|18H17H|10H0FH|08H07H06H05H04H03H02H01H00H3區(qū)2區(qū)1區(qū)0區(qū)http://2.位尋址區(qū)字節(jié)地址為20H~2FH,既可作RAM,也可位操作共有16個RAM單元,共128位,位地址為00H~7FH。注意:雖然位地址和字節(jié)地址的表現(xiàn)形式可以一樣,但因為位操作與字節(jié)操作的指令不同,所以不會混淆。http://2.位尋址區(qū)字節(jié)地址位地址D7D6D5D4D3D2D1D02FH7FH7EH7DH7CH7BH7AH79H78H2EH77H76H75H74H73H72H71H70H……22H17H16H15H14H13H12H11H10H21H0FH0EH0DH0CH0BH0AH09H08H20H07H06H05H04H03H02H01H00Hhttp://3.
通用RAM區(qū):也稱用戶RAM區(qū)。在該區(qū)域內(nèi),只能進行字節(jié)尋址。A、堆棧(Stack)是按照“先進后出,后進先出”的原則來存取數(shù)據(jù)的一個內(nèi)部RAM區(qū)域,這個存儲器區(qū)域的一端是固定的,另一端是活動的,每個存儲單元是不能按字節(jié)任意訪問的。B、在使用堆棧之前,應(yīng)規(guī)定堆棧的起始位置(固定端),稱為棧底。堆棧最后壓入或即將彈出數(shù)據(jù)的單元(活動端),稱棧頂。http://67HA3H46H棧底PUSH指令POP指令SP堆棧指針http://4.特殊功能寄存器21個SFR的地址離散地分部在內(nèi)部數(shù)據(jù)存儲器的80H-FFH地址空間。SFR占用21個單元,其余的大部分是空余單元,它們沒有定義不能作內(nèi)部RAM使用。有11個SFR具有位地址,可以進行位尋址,對應(yīng)的位也有位名稱,它們的字節(jié)地址正好能被8整除。http://4.特殊功能寄存器1)累加器ACC:最常用的8位特殊功能寄存器,大部分指令的操作數(shù)取自于ACC,許多運算結(jié)果也存放在ACC中。A是累加器ACC的助記符。2)B寄存器:一個8位寄存器,主要用于乘法和除法操作。在其他指令中,作為一般的內(nèi)部RAM使用。3)程序狀態(tài)字寄存器PSW:一個8位的寄存器,用于存放程序運行中的各種狀態(tài)信息。CyACF0RS1RS0OVPPSWhttp://Cy:進位標志位。在進行加(或減)法運算時,若操作結(jié)果的最高位(D7位)有進位(或借位)時,Cy=1;否則Cy=0。AC:輔助進位標志位。在進行加(或減)運算時,若操作結(jié)果的低半字節(jié)(D3位)向高半字節(jié)產(chǎn)生進位(或借位)時,AC=1;否則AC=0。F0:用戶標志位。RS1、RS0:當前工作寄存器區(qū)選擇位。http://OV:溢出標志位。當進行補碼運算時,運算結(jié)果超出-128~+127范圍時,即溢出,則OV=1;沒有溢出,則OV=0。
出現(xiàn)下列情況即為溢出(運算后OV=1):正數(shù)加正數(shù)為負數(shù);負數(shù)加負數(shù)為正數(shù);正數(shù)減負數(shù)為負數(shù);負數(shù)減正數(shù)為正數(shù);乘法時結(jié)果B≠0;除法運算時除數(shù)為0。P:奇偶校驗標志位。每條指令執(zhí)行完后,該位始終跟蹤累加器A中1的數(shù)目的奇偶性。如果A中有奇數(shù)個1,則P=1;否則P=0。http://【例】若A=96H,執(zhí)行ADDA,#84H后,判斷Cy、AC、OV、P的狀態(tài)。解:執(zhí)行該指令
A96H+84HA1AH=00011010BCy=1,AC=0,OV=1,P=1【例】若A=36H,執(zhí)行ADDA,#3BH后,則:
A=71H,Cy=0,AC=1,OV=0,P=0負數(shù)負數(shù)正數(shù)Why?http://4)堆棧指針SP:用于存放當前堆棧操作的單元地址,并根據(jù)入棧指令(PUSH)或出棧指令(POP)修改其內(nèi)容,SP始終指向棧頂。系統(tǒng)復(fù)位后,SP初始化為07H。5)數(shù)據(jù)指針DPTR:DPTR可以作為一個16位SFR使用,也可以作為兩個獨立的8位寄存器DPH和DPL來使用,其中DPH為8位,DPL為低8位。如:DPH=34H,DPL=A6H,則DPTR=34A6H。6)I/O端口鎖存器P0~P3:P0~P3為四個8位的特殊功能寄存器,它們有字節(jié)地址和位地址。當I/O端口某一位用于輸入時,必須在相應(yīng)口鎖存器的對應(yīng)位先寫入1。7)其它的SFR有:TMOD、TCON、T0(TH0和TL0組成)、T1(由TH1和TL1組成)、IE、IP、SCON、SBUF、PCON等。http://2.3MCS-51單片機的時鐘電路和時序2.3.1振蕩器和時鐘電路時鐘頻率范圍要求在1.2MHz~12MHz之間。內(nèi)部振蕩器方式外部引入方式XTAL1單片機XTAL2
內(nèi)部振蕩器方式外部引入方式1。.。XTAL2單片機XTAL1
外部時鐘源+5Vhttp://2.3.2時序單位時鐘周期(又稱為振蕩周期):是指振蕩器產(chǎn)生一個振蕩脈沖信號所用的時間,是振蕩頻率的倒數(shù),稱為拍節(jié)。狀態(tài)周期:振蕩脈沖信號經(jīng)過內(nèi)部時鐘電路二分頻之后產(chǎn)生的單片機時鐘信號的周期(用S表示)稱為狀態(tài)周期。機器周期:是指CPU完成某一個規(guī)定操作所需的時間。MCS-51單片機的一個機器周期包含6個狀態(tài),并依次表示為S1~S6,每個狀態(tài)分為2個節(jié)拍。依次表示為:S1P1、S1P2、S2P1、…、S6P1、S6P2。指令周期:CPU執(zhí)行一條指令所需要的時間稱為指令周期。MCS-51單片機指令周期根據(jù)指令的不同,可包含有1或2或4個機器周期。http://不同晶振頻率下的各周期情況http://2.4MCS-51單片機的復(fù)位與掉電處理2.4.1復(fù)位與復(fù)位電路復(fù)位1.復(fù)位條件:RST引腳是復(fù)位信號的輸入端,復(fù)位信號是高電平有效,其有效時間應(yīng)持續(xù)24個振蕩脈沖周期(即二個機器周期)以上。
【例】若使用頻率為6MHz的晶振,則復(fù)位信號持續(xù)時間至少為多少μs?解:∵fosc=6MHz
∴MC=12/fosc=12/6MHz=2μs
∴t=4μs所以復(fù)位信號至少持續(xù)4μs。http://復(fù)位后寄存器的狀態(tài)寄存器復(fù)位狀態(tài)寄存器復(fù)位狀態(tài)PC0000HTCON00HACC00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0~P3FFHSCON00HIP××000000BSBUF不定IE0××00000BPCON0×××××××B(NMOS)TMOD00H0×××0000B(CHMOS)http://復(fù)位電路上電復(fù)位手動電平復(fù)位手動脈沖復(fù)位http://2.4.2掉電處理掉電保護方式當遇到單片機掉電時,可以把HMOS型的8051單片機的RST/VPD引腳作為備用電源端,只要Vcc上的電壓低于VPD上的電壓時,備用電源通過VPD端給內(nèi)部RAM供電,以低功耗保持內(nèi)部RAM中的數(shù)據(jù)。掉電保護電路http://2.4.2掉電處理節(jié)電工作方式由片內(nèi)SFR中的電源控制寄存器PCON的低4位來控制待機和掉電兩種方式,其格式如下:位D7D6D5D4D3D2D1D0位名稱SMOD———GF1GF0PDIDL●IDL:待機方式位。若IDL=1,進入待機方式;●PD:掉電方式位。若PD=1,進入掉電方式;●GF1、GF0:通用標志位。由用戶置位或復(fù)位;●SMOD:串行口波特率加倍位。當PD和IDL同時為1,則先進入掉電工作方式。復(fù)位后,PCON中有定義的位均為0。
只有CHMOS型單片機(如80C51)才有節(jié)電工作方式,有兩種節(jié)電方式即待機和掉電保護方式。http://本章小結(jié)內(nèi)部數(shù)據(jù)存儲器結(jié)構(gòu)當前工作寄存器組如何選擇堆棧的定義ACC、B、DPTR、SP等SFR的名稱及功能程序狀態(tài)字PSW各位名稱及功能時鐘電路復(fù)位狀態(tài)及復(fù)位電路http://第3章MCS-51系列單片機指令系統(tǒng)本章重點:掌握匯編指令的基本格式;掌握51系列單片機的尋址方式;掌握51系列單片機的各指令;能閱讀程序并能編寫簡單程序。3.1指令系統(tǒng)簡介3.2尋址方式3.3MCS-51系列單片機指令系統(tǒng)3.4匯編語言程序設(shè)計本章小結(jié)http://3.1指令系統(tǒng)簡介3.1.1指令的基本格式匯編語言指令格式
[標號:]操作碼[第一操作數(shù)][,第二操作數(shù)][,第三操作數(shù)][;注釋]說明:帶有方括號[……]的部分代表可選項?!纠?/p>
LOOP:MOVA,#31H;將立即數(shù)31H送累加器A中http://操作碼第一操作數(shù)第二操作數(shù)標號注釋機器語言指令格式(1)單字節(jié)指令格式:操作碼【例】匯編語言指令
ADDA,R0對應(yīng)的機器語言是:
28(2)雙字節(jié)指令格式:操作碼操作數(shù)【例】匯編語言指令
ADDA,#31H
對應(yīng)的機器語言是:
2431(3)三字節(jié)指令格式:操作碼第一操作數(shù)第二操作數(shù)【例】匯編語言指令
MOV30H,#7AH
對應(yīng)的機器語言是:
75307Ahttp://3.1.2單片機指令分類數(shù)據(jù)傳送指令:是將數(shù)據(jù)從一個(塊)存儲地方傳送到另一個(塊)地方的傳送,原存儲地方數(shù)據(jù)不變。算術(shù)運算指令:是對數(shù)據(jù)進行加法、減法、乘法、除法、加1、減1以及十進制調(diào)整指令。邏輯運算指令:是對數(shù)據(jù)進行與、或、異或、非及移位操作??刂妻D(zhuǎn)移指令:是實現(xiàn)程序的轉(zhuǎn)移或子程序的調(diào)用。位操作指令
:是對數(shù)據(jù)的某一位進行操作,包括置1、清零、位傳送及位的邏輯運算。http://3.1.3指令系統(tǒng)中的常用符號Rn:n=0-7,代表工作寄存器R0―R7。@Ri:代表工作寄存器Ri間接尋址8位存儲單元,存儲單元地址00H-FFH。其中i=0、1,Ri代表工作寄存器R0、R1。direct:代表8位地址,該8位地址可以是內(nèi)RAM的任何一個地址(00H-7FH),也可以為SFR(特殊功能寄存器)中的任何一個(80H-FFH)。#data:為8位的立即數(shù),該數(shù)為真正參與運算或傳送的數(shù)據(jù)。#data16:為16位的立即數(shù),該數(shù)為參與傳送的數(shù)據(jù)。http://addr16:為16位目的地址,用于LCALL、LJMP二個指令中,可以實現(xiàn)在64K程序存儲器范圍內(nèi)調(diào)用子程序或轉(zhuǎn)移。addr11:為11位目的地址,用于ACALL、AJMP二個指令中,可以實現(xiàn)在下條指令地址所在的2K范圍內(nèi)調(diào)用子程序或轉(zhuǎn)移。rel:為帶符號的8位偏移地址,用于SJMP和所有的條件轉(zhuǎn)移指令,可以在下條指令地址所在的-128-+127的程序存儲器范圍內(nèi)轉(zhuǎn)移。DPTR:數(shù)據(jù)指針,可用作16位地址寄存器。A:累加器ACC。http://B:通用寄存器,主要用于乘法MUL和除法DIV指令中。Cy:代表進位標志位或在布爾處理器中的累加器。bit:位地址。片內(nèi)RAM中的位尋址單元及SFR中的可尋址位。/bit:在位操作指令中,表示對該位(bit)先取反,再進行傳送或運算,不改變該位(bit)的原值。
http://3.2尋址方式尋址就是尋找操作數(shù)的地址,尋找操作數(shù)地址的方式,稱為操作數(shù)地址的尋址方式,簡稱尋址方式。
3.2.1立即尋址方式
立即尋址方式就是指令中直接給出操作數(shù)的尋址方式。其特征是操作數(shù)前帶有“#”,指令中的操作數(shù)也稱為立即數(shù)?!纠縈OV
A,#7AH
上述指令將數(shù)7AH送到A中執(zhí)行后A=7AH,過程如右圖。http://6DHA7AH立即數(shù)3.2.2直接尋址方式直接尋址方式就是指令中給出操作數(shù)地址的尋址方式,即指令中給出的數(shù)據(jù)作為地址,該地址對應(yīng)存儲單元中的數(shù)據(jù)才是真正的操作數(shù)?!纠吭O(shè)內(nèi)RAM7AH單元中的內(nèi)容為6DH,則執(zhí)行指令
MOVA,7AH后,A中的內(nèi)容為6DH,即A=6DHhttp://43H14H…7BH7AH…A6DH6DH注意:7AH單元中的數(shù)據(jù)沒有變化3.2.3寄存器尋址方式寄存器尋址方式就是對指令中指出的某一寄存器中的數(shù)作為操作數(shù)的尋址方式?!纠咳绻鸕1=56H,則執(zhí)行指令MOVA,R1后,累加器A=56H。http://93H14H6BHA3HR3R2R1R0A56H56HR1中的內(nèi)容沒有變3.2.4寄存器間接尋址方式寄存器間接尋址方式就是將指令指定的寄存器中的內(nèi)容作為地址,將該地址所對應(yīng)的存儲單元中的數(shù)據(jù)作為真正參與運算或傳送的操作數(shù)的尋址方式。寄存器間接尋址也簡稱寄存器間址。注意:與寄存器尋址方式的格式不同在于寄存器前加@。http://93H【例】如果R0=30H,(30H)=B3H,則執(zhí)行指令
MOVA,@R0后,
A=B3H。指令
MOVA,@R0的工作過程示意點擊頁面。14HB3H…30H31H30H…R0AB3Hhttp://3.2.5變址尋址方式
變址尋址方式就是將指令指定的變址寄存器和基址寄存器的內(nèi)容相加形成操作數(shù)地址的尋址方式?!纠咳绻鸄=30H,DPTR=2000H,(2030H)=45H,執(zhí)行指令
MOVCA,@A+DPTR是將累加器A中的內(nèi)容與DPTR中的內(nèi)容相加,其和作為程序存儲器的地址,找到程序存儲器中該地址所對應(yīng)的單元,將該單元中的內(nèi)容送累加器A中。http://30H00H00H20上例指令
MOVCA,@A+DPTR的工作過程點擊頁面。http://20H…30HDPHDPL…A2030H3DH…B5H…2031H…202FH…20H00H+93H93H3.2.6相對尋址方式
相對尋址方式就是將程序計數(shù)器PC當前的值(執(zhí)行本指令后的PC值)加上指令中給出的相對偏移量rel形成程序轉(zhuǎn)移的目的地址賦值給PC,這種尋址方式就稱為相對尋址方式。相對偏移量rel用補碼表示,其范圍為-128~+127?!纠咳绻斍癙C=2030H,則執(zhí)行指令
SJMP0A3H后,
PC=2030H+2+0A3H(補碼,其值是負的)
=1FD5H即程序轉(zhuǎn)到1FD5H處取指、執(zhí)行。http://
注意:在相對尋址方式時,在rel為正數(shù)和負數(shù)兩種不同情況下,目的地址PC的求法可以用下列不同的公式求:當rel為正數(shù)時,
PC目的=PC當前+當前指令字節(jié)數(shù)+rel當rel為負數(shù)時,
PC目的=PC當前+當前指令字節(jié)數(shù)+rel-100H在人工匯編時,往往知道PC目的和PC當前,需要求rel,如果PC目的>PC當前,采用第一個公式;如果PC目的≤PC當前,采用第二個公式。http://3.2.7位尋址方式位尋址就是對內(nèi)部RAM和特殊功能寄存器的可尋址位的內(nèi)容進行操作的尋址方式。這種尋址方式只是對指令指定的1位進行操作,其尋址方式與直接尋址方式相同?!纠咳绻鸄=74H,則執(zhí)行指令
SETBACC.3后,A=7CH,見下圖。http://執(zhí)行前A01110100執(zhí)行后A011111003.3MCS-51系列單片機指令系統(tǒng)3.3.1數(shù)據(jù)傳送指令1.內(nèi)部RAM中一般數(shù)據(jù)傳送指令這類數(shù)據(jù)傳送指令的格式為:
MOV目的操作數(shù),源操作數(shù)該指令的功能將源操作數(shù)傳送到目的操作數(shù)中,而源操作數(shù)中的數(shù)據(jù)保持不變。即:(目的地址)←(源地址)或立即數(shù)數(shù)據(jù)傳送指令對PSW一般沒有影響,但如果目的單元為A,則影響PSW中的P標志位。http://(1)以累加器A為目的的數(shù)據(jù)傳送指令
1)MOV
A,Rn
;A←Rn,n=0-72)MOV
A,@Ri
;A←(Ri),i=0,13)MOV
A,direct;A←(direct)4)MOV
A,#data;A←datahttp://93H1)指令:MOV
A,Rn
;A←Rn,n=0-7功能:該指令是將寄存器Rn中的內(nèi)容送到累加器A中,Rn中的內(nèi)容保持不變?!纠咳绻斍癛0=56H,A=93H,則執(zhí)行指令:
MOVA,R0
結(jié)果:A=56H14H6BHA3H56HR3R2R1R0A56Hhttp://93H2)指令:MOV
A,@Ri
;A←(Ri),i=0,1功能:該指令是將寄存器Ri中的內(nèi)容作為數(shù)據(jù)存儲器的地址,將該地址對應(yīng)單元中的內(nèi)容送到累加器A中,該單元及Ri中的內(nèi)容保持不變?!纠咳绻斍癛0=30H,(30H)=0B3H,A=93H,執(zhí)行指令:
MOVA,@R0
結(jié)果:A=B3H14HB3H…30H31H30H…R0AB3Hhttp://43H3)指令:MOV
A,direct;A←(direct)功能:該指令是將數(shù)據(jù)存儲器地址為direct單元中的內(nèi)容送到累加器A中,該單元中的內(nèi)容保持不變?!纠咳绻斍埃?0H)=6DH,A=43H,則執(zhí)行指令:
MOV
A,40H
結(jié)果:A=6DH14H6DH…41H40H…A6DHhttp://43H4)指令:MOV
A,#data;A←data功能:該指令是將立即數(shù)data送到累加器A中。注意:與MOV
A,direct的形式與功能的區(qū)別
【例】如果當前A=43H,則執(zhí)行指令:
MOV
A,#40H
結(jié)果:A=40H14H6DH…41H40H…A40H立即數(shù)http://(2)以寄存器Rn為目的的數(shù)據(jù)傳送指令
1)
MOV
Rn,A;Rn←A,n=0-72)MOV
Rn,direct;Rn←(direct)3)MOV
Rn,#data;Rn←datahttp://A3H93H1)指令:MOV
Rn,A;Rn←A
,n=0-7功能:該指令是將累加器A中的內(nèi)容送到寄存器Rn中,A中的內(nèi)容保持不變?!纠咳绻斍癛1=A3H,A=93H,則執(zhí)行指令:
MOV
R1,A結(jié)果:R1=93H14H6BH56HR3R2R1R0A93Hhttp://6DHB3H2)指令:MOV
Rn,direct;Rn←(direct)功能:該指令是將數(shù)據(jù)存儲器地址為direct單元中的內(nèi)容送到Rn中,該單元中的內(nèi)容保持不變?!纠咳绻斍?41H)=73H,R1=6DH,則執(zhí)行指令:
MOV
R1,41H
結(jié)果:R1=73H14H6DH78HR2R1R042H73H41HA3H40H73Hhttp://6DHB3H3)指令:MOV
Rn,#data
;Rn←data功能:該指令是將立即數(shù)data送到寄存器Rn中?!纠咳绻斍埃?1H)=73H,R1=6DH,則執(zhí)行指令:
MOV
R1,#40H
結(jié)果:R1=40H14H6DH78HR2R1R042H40H41HA3H40H73Hhttp://立即數(shù)(3)以直接地址為目的的數(shù)據(jù)傳送指令
1)MOV
direct,A;(direct)←A2)MOV
direct,Rn
;(direct)←Rn3)MOV
direct,@Ri;(direct)←(Ri)4)MOV
direct,#data;(direct)←data5)MOV
direct1,direct2;(direct1)←(direct2)http://B3H93H1)指令:MOV
direct,A;(direct)←A
功能:該指令是將累加器A的內(nèi)容送到地址為direct的數(shù)據(jù)存儲器單元中,累加器A中的內(nèi)容保持不變?!纠咳绻斍皟?nèi)存情況如圖所示,執(zhí)行指令:
MOV
30H,A
結(jié)果:(30H)=93H14H…30H31H30H…R0A93Hhttp://B3H2)指令:MOV
direct,Rn
;(direct)←Rn,n=0-7功能:該指令是將寄存器Rn的內(nèi)容送到地址為direct的數(shù)據(jù)存儲器單元中,寄存器Rn中的內(nèi)容保持不變。【例】如果當前內(nèi)存情況如圖所示,執(zhí)行指令:
MOV
30H,R0結(jié)果:(30H)=30H14H…30H31H30H…R030Hhttp://3)指令:MOV
direct,@Ri
;(direct)←(Ri),i=0,1功能:該指令是將寄存器Ri的內(nèi)容作為地址,該地址所對應(yīng)內(nèi)存單元中的數(shù)據(jù)送到地址為direct的內(nèi)存單元中?!纠咳绻斍皟?nèi)存情況如圖所示,執(zhí)行指令:
MOV
31H,R0結(jié)果:(31H)=0B3H14H…B3H31H30H…R030Hhttp://B3H73HB3H4)指令:
MOV
direct,#data;(direct)←data功能:該指令是將立即數(shù)data送到地址為direct的內(nèi)存單元中?!纠咳绻斍?41H)=73H,則執(zhí)行指令:
MOV
41H,#40H
結(jié)果:(41H)=40H42H40H41HA3H40H立即數(shù)http://5)指令:MOVdirect1,direct2;(direct1)←(direct2)功能:該指令是將內(nèi)存單元地址為direct2的單元中的數(shù)據(jù)送到地址為direct1的內(nèi)存單元中?!纠咳绻斍皟?nèi)存情況如圖所示,執(zhí)行指令:
MOV
31H,30H結(jié)果:(31H)=0B3H14H…B3H31H30H…R030Hhttp://B3H(4)以寄存器間址@Ri為目的的數(shù)據(jù)傳送指令
1)MOV
@Ri,A;(Ri)←A,i=0,12)MOV
@Ri,direct;(Ri)←(direct)3)MOV
@Ri,#data;(Ri)←datahttp://B3H93H1)指令:
MOV
@Ri,A;(Ri)←A,i=0,1
功能:該指令是將累加器A的內(nèi)容送到以寄存器Ri中的數(shù)據(jù)作為地址對應(yīng)的數(shù)據(jù)存儲器單元中,累加器A中的內(nèi)容保持不變?!纠咳绻斍癛0=30H,(30H)=0B3H,A=93H,則執(zhí)行指令:
MOV
@R0,A
結(jié)果:(R0)=93H
即(30H)=93H
而R0=30H14H…30H31H30H…R0A93Hhttp://B3H2)指令:MOV
@Ri,direct;(Ri)←(direct)功能:該指令是將數(shù)據(jù)存儲器地址為direct單元中的內(nèi)容送到以寄存器Ri中的數(shù)據(jù)作為地址對應(yīng)的數(shù)據(jù)存儲器單元中,原單元中的內(nèi)容保持不變?!纠咳绻斍癛0=30H,(30H)=0B3H,(31H)=14H,則執(zhí)行指令:
MOV
@R0,31H
結(jié)果:(R0)=14H
即:(30H)=14H
而R0=30H14H…30H31H30H…R014Hhttp://73HB3H3)指令:
MOV
@Ri,#data;(Ri)←data功能:該指令是將立即數(shù)data送到以寄存器Ri中的數(shù)據(jù)作為地址對應(yīng)的數(shù)據(jù)存儲器單元中?!纠咳绻斍癛1=41H,(41H)=73H,則執(zhí)行指令:
MOV
@R1,#40H
結(jié)果:(R1)=40H即:(41H)=40H
而:R1=41H…41H78H…R1R042H40H41HA3H40H立即數(shù)http://2.16位數(shù)據(jù)傳送指令
MOV
DPTR,#data16;DPTR←data16功能說明:該指令是將16位數(shù)據(jù)送到數(shù)據(jù)指針DPTR中,其中數(shù)據(jù)的高8位送到DPH中,而數(shù)據(jù)的低8位送到DPL中。【例】如果當前DPTR=2000H,執(zhí)行指令:
MOV
DPTR,#236BH結(jié)果:DPTR=236BH
即:DPH=23H,DPL=6BHhttp://3.累加器與外部數(shù)據(jù)存儲器的數(shù)據(jù)傳送指令(1)以Ri為間址寄存器
1)MOVX
A,@Ri
;A←(Ri)外RAM2)MOVX
@Ri,A
;(Ri)外RAM←A說明:第一條指令是將Ri中的8位數(shù)據(jù)作為低8位地址所對應(yīng)的外RAM單元中的內(nèi)容送到累加器A中;第二條指令是將累加器A中的內(nèi)容送到Ri中的8位數(shù)據(jù)作為低8位地址所對應(yīng)的外RAM單元中。由于外RAM一般由16位地址構(gòu)成,因此應(yīng)用上述兩條指令時,需要先將高8位地址通過P2口送出,然后執(zhí)行上述兩條指令。Ri中的數(shù)據(jù)作為低8位地址,通過P0口送出。http://(2)以DPTR為間址寄存器
1)MOVX
A,@DPTR;A←(DPTR)外RAM2)MOVX
@DPTR,A;(DPTR)外RAM←A說明:第一條指令是將DPTR中的16位數(shù)據(jù)作為地址,其所對應(yīng)的外RAM單元中的內(nèi)容送到累加器A中;第二條指令是將累加器A中的內(nèi)容送到DPTR中的16位數(shù)據(jù)作為地址所對應(yīng)的外RAM單元中。
DPTR提供的是16位數(shù)據(jù),其中高8位通過P2口送出,低8位通過P0口送出。http://【例】如果要將內(nèi)存30H單元中的數(shù)據(jù)送到外RAM3000單元中,請編寫指令。
MOVP2,#30HMOVA,30HMOVR0,#00HMOVX@R0,A或者
MOVA,30HMOVDPTR,#3000HMOVX@DPTR,Ahttp://【例】如果要將外RAM2340H單元中數(shù)據(jù)讀到內(nèi)存50H單元中,請編寫指令。
MOVP2,#23HMOVR0,#40HMOVXA,@R0MOV50H,A或者
MOVDPTR,#2340HMOVXA,@DPTRMOV50H,Ahttp://4.訪問程序存儲器指令(1)以DPTR作為基址寄存器
MOVC
A,@A+DPTR;A←(A+DPTR)ROM(2)以PC作為基址寄存器
MOVX
A,@A+PC;PC←PC+1,A←(A+PC)ROM說明:上述兩條指令是將A中的8位無符號數(shù)與DPTR或PC中的16位無符號數(shù)相加形成16位地址,將該地址單元中的數(shù)據(jù)讀到累加器A中。如果訪問外部程序存儲器(具體視EA及地址大小而定),則高8位地址通過P2口送出,低8位地址通過P0口送出。http://【例】執(zhí)行下面程序,則A為多少?
ORG2000H;偽指令,定義下列程序從2000H開始存放
MOVA,#02H
MOVDPTR,#DATA
MOVCA,@A+DPTR
RETDATA:11H,12H,13H由于在程序第一條賦給A的值是02H,第二條指令賦給DPTR的值是2007H,所以形成的地址是2009H,因此結(jié)果A=13H。http://地址ROM2000H742001H022002H902003H202004H072005H932006H222007H112008H122009H13【例】執(zhí)行下面程序,則A為多少?
ORG2000H;偽指令,定義下列程序從2000H開始存放
MOVA,#02H
MOVCA,@A+PC
RETDATA:11H,12H,13H,14H,15H由于在程序第一條賦給A的值是02H,第二條指令PC值為2002H,加1后PC為2003H再加A中的值02H,所以形成的地址是2005H,因此結(jié)果A=12H。http://地址ROM2000H742001H022002H832003H222004H112005H122006H132007H142008H152009H5.堆棧操作指令(1)入棧指令
PUSHdirect;SP←SP+1,(SP)←(direct)(2)出棧指令
POPdirect;(direct)←(SP),SP←SP-1說明:堆棧指令主要用于現(xiàn)場保護,使用時必須遵循先進后出原則。http://8CH3AH60H58H【例】當前數(shù)據(jù)狀態(tài)如圖所示,點擊頁面,可以演示執(zhí)行指令PUSH時數(shù)據(jù)變化過程。
MOVSP,#70HPUSHAPUSHR0http://33H…45H3AH58H…R0A71H73H…07HSP70H71H72H70H72H3AH8CH58H33H60H【例】當前數(shù)據(jù)狀態(tài)如圖所示,點擊頁面,可以演示執(zhí)行指令POP時數(shù)據(jù)變化過程。
MOVSP,#73HPOPAPOPR0http://33H…45H8CH…R0A71H73H…07HSP73H72H71H70H72Hhttp://注意:堆棧指令用于現(xiàn)場保護時,要成對出現(xiàn),并遵循先進后出的規(guī)則?!纠肯铝芯褪菍、R0進行現(xiàn)場保護的中斷服務(wù)子程序。
PUSHAPUSHR0…POPR0POPARETI成對,呈嵌套6.數(shù)據(jù)交換指令(1)字節(jié)交換指令
1)XCHA,Rn
;ARn2)XCHA,direct;A
(direct)3)XCHA,@Ri
;A(Ri)http://【例】當前數(shù)據(jù)狀態(tài)如圖所示,點擊頁面,可以演示執(zhí)行指令XCH時數(shù)據(jù)變化過程。
1)XCHA,R02)XCHA,40H3)XCHA,@R1http://R0A3AH58H40HA5BH3AH43H5BHXCHA,R0示意圖XCHA,40H示意圖R13DH30H30HA7CHXCHA,@R1示意圖3DHBH6.數(shù)據(jù)交換指令(2)半字節(jié)交換指令
1)XCHDA,@Ri
;A3-0(Ri)3-02)SWAPA;A7-4
A3-0http://XCHDA,@R0示意圖SWAPA示意圖A7H40H64BHR040HAB110101017-43-03.3.2算術(shù)運算指令1.加法指令注意:加法指令將影響PSW中的Cy、AC、OV、P標志位。(1)不帶進位位加法指令
1)ADDA,Rn;A←A+Rn2)ADDA,@Rn;A←A+(Ri)
3)
ADDA,direct;A←A+(direct)
4)
ADDA,#data;A←A+datahttp://http://【例】設(shè)當前A=7CH,R0=30H,R1=0D3H,(30H)=5BH,分別執(zhí)行下列指令后,累加器A、標志位Cy、AC、OV、P分別為多少?
1)ADDA,R12)ADDA,@R03)ADDA,30H4)ADDA,#30H解:1)A=7CH+0D3H=4FH(進位),Cy=1,AC=0,OV=0,P=1。2)A=7CH+5BH=0D7H,Cy=0,AC=1,OV=1,P=0。3)A=7CH+5BH=0D7H,Cy=0,AC=1,OV=1,P=0。4)A=7CH+30H=0ACH,Cy=0,AC=0,OV=1,P=0。(2)帶進位位加法指令
1)ADDCA,Rn;A←A+Rn+Cy2)ADDCA,@Rn;A←A+(Ri)+Cy
3)
ADDCA,direct;A←A+(direct)+Cy
4)
ADDCA,#data;A←A+data+Cy注意:帶進位位加法指令必須加上Cy,因此必須考慮在程序執(zhí)行過程中Cy狀態(tài)的變化情況。http://http://【例】設(shè)當前A=7CH,R0=30H,R1=0D3H,(30H)=5BH,Cy=1,執(zhí)行下列程序后,累加器A、標志位Cy、AC、OV、P為多少?
ADDCA,R1ADDCA,@R0ADDCA,30HADDCA,#30H解:第一條指令:A=7CH+0D3H+Cy=4FH+1=50H,Cy=1
第二條指令:A=50H+5BH+Cy=0ABH+1=0ACH,Cy=0
第三條指令:A=0ACH+5BH+Cy=07H+0=07H,Cy=1
第四條指令:A=07H+30H+Cy=37H+1=38H所以結(jié)果:A=38H,Cy=0,AC=0,OV=0,P=12.減法指令注意:減法指令影響標志位Cy、AC、OV、P;減法指令只有帶進位標志位的減法指令。
1)SUBBA,Rn;A←A-Rn-Cy2)SUBBA,@Rn;A←A-(Ri)-Cy
3)
SUBBA,direct;A←A-(direct)-Cy
4)
SUBBA,#data;A←A-data-Cyhttp://http://【例】設(shè)當前A=7CH,R0=30H,R1=0D3H,(30H)=5BH,Cy=1,執(zhí)行下列程序后,累加器A、標志位Cy、AC、OV、P為多少?
SUBBA,R1;A=7CH-0D3H-Cy=0A9H-1=0A8H,Cy=1SUBBA,@R0;A=0A8H-5BH-Cy=4DH-1=4CH,Cy=0SUBBA,30H;A=4CH-5BH-Cy=0F1H-0=0F1H,Cy=1SUBBA,#73H;A=0F1H-73H-Cy=7EH-1=7DH解:所以結(jié)果:A=7DH,Cy=0,AC=1,OV=1,P=0。注意:讀結(jié)果采用倒讀法。3.乘法指令注意:乘法指令影響標志位OV、P。當結(jié)果B中的數(shù)據(jù)不為0時,OV=1,否則OV=0。
MULAB;BA←A×B【例】設(shè)當前A=03H,B=05H,則執(zhí)行指令MULAB后,A、B、OV、P分別為多少?解:所以:A=0FH,B=00H,OV=0,P=0http://00000011Bx00000101B00000011+000000110000001111B【
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 金星火山噴發(fā)機制-洞察及研究
- 安全防范系統(tǒng)安裝維護員安全宣教競賽考核試卷含答案
- 大數(shù)據(jù)在電子支付智能合約中的應(yīng)用研究-洞察及研究
- 2025中國農(nóng)業(yè)大學水利與土木工程學院科研助理招聘1人筆試考試備考試題及答案解析
- 谷丙轉(zhuǎn)氨酶與肝細胞凋亡關(guān)系研究-洞察及研究
- 玻璃制品機械成型工崗前崗位環(huán)保責任制考核試卷含答案
- 2025年政府采購評審專家入庫考試題及答案
- 劇集宣傳策略研究-洞察及研究
- 耳部感染的個性化治療策略-洞察及研究
- 2025長江經(jīng)濟帶產(chǎn)業(yè)協(xié)作發(fā)展趨勢競爭格局分析投資布局報告
- 招標代理機構(gòu)遴選投標方案(技術(shù)標)
- Unit 1 People of Achievement Vocabulary 單詞講解課件高二英語人教版(2019)選擇性必修第一冊
- 廣東事業(yè)單位工作人員聘用體檢表
- NB-T+10488-2021水電工程砂石加工系統(tǒng)設(shè)計規(guī)范
- 建設(shè)法規(guī) 課件全套 項目1-8 建設(shè)工程法規(guī)基礎(chǔ)- 建設(shè)工程其他相關(guān)法律制度
- 2024年RM機器人大賽規(guī)則測評筆試歷年真題薈萃含答案
- 頭頸腫瘤知識講座
- 小學二年級體育教案全冊表格式
- 儲能收益統(tǒng)計表
- 手術(shù)室經(jīng)腹腔鏡膽囊切除術(shù)護理查房
- GB/T 17451-1998技術(shù)制圖圖樣畫法視圖
評論
0/150
提交評論