




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、習題11.1什么是單片微型計算機?答:單片微型計算機是將計算機的基本部件微型化并集成到一塊芯片上的微型計算機,是計算機微型化的典型代表之一,通常片內都含有CPU、ROM、RAM、并行I/O、串行I/O、定時器/計數器、中斷控制、系統時鐘及系統總線等。1.2單片機的發展經歷了哪幾個階段?在哪一階段確立了單片機在嵌入式應用中的地位。答:單片機初級階段(19741976年),芯片化探索階段(19761978年),8位單片機成熟階段(19781982年),從SCM向MCU過渡階段(19831990年),MCU百花齊放階段(1990年至今)。其中,芯片化探索階段(19761978年)確立了單片機在嵌入式
2、應用中的地位。1.3 單片機可分為幾個系列?簡述每個系列的主要特性。答:單片機按系列可分為80C51系列、PIC系列和AVR系列等。PIC系列單片機是Micro Chip公司的產品,與51系列單片機不兼容。1) PIC系列單片機最大的特點是從實際出發,重視產品的性能與價格比,發展多種型號來滿足不同層次的應用要求。2) 精簡指令使其執行效率大為提高。3) 產品上市零等待(Zero time to market)。4) PIC有優越開發環境。5) 其引腳具有防瞬態能力,通過限流電阻可以接至220V交流電源,可直接與繼電器控制電路相連,無須光電耦合器隔離,給應用帶來極大方便。6) 徹底的保密性。7)
3、 自帶看門狗定時器,可以用來提高程序運行的可靠性。8) 睡眠和低功耗模式。AVR單片機是1997年由ATMEL公司研發出的增強型內置Flash的RISC(Reduced Instruction Set CPU) 精簡指令集高速8位單片機。AVR單片機的主要特性1) AVR單片機以字作為指令長度單位,將內容豐富的操作數與操作碼安排在一字之中(指令集中占大多數的單周期指令都是如此),取指周期短,又可預取指令,實現流水作業,故可高速執行指令。2) AVR單片機硬件結構采取8位機與16位機的折中策略,即采用局部寄存器堆(32個寄存器文件)和單體高速輸入/輸出的方案(即輸入捕獲寄存器、輸出比較匹配寄存器
4、及相應控制邏輯)。提高了指令執行速度(1MIPS/MHz),克服了瓶頸現象;同時又減少了對外設管理的開銷,相對簡化了硬件結構,降低了成本。3) AVR單片機內嵌高質量的Flash程序存儲器,擦寫方便,支持ISP和IAP,便于產品的調試、開發、生產、更新。4) AVR單片機的I/O線全部帶可設置的上拉電阻、可單獨設定為輸入/輸出、可設定(初始)高阻輸入、驅動能力強(可省去功率驅動器件)等特性,使得I/O口資源靈活、功能強大、可充分利用。5) AVR單片機片內具備多種獨立的時鐘分頻器,分別供URAT、I2C、SPI使用。6) 增強性的高速同/異步串口,具有硬件產生校驗碼、硬件檢測和校驗幀錯、兩級接
5、收緩沖、波特率自動調整定位(接收時)、屏蔽數據幀等功能,提高了通信的可靠性,方便程序編寫,更便于組成分布式網絡和實現多機通信系統的復雜應用,串口功能大大超過MCS-51/96單片機的串口,加之AVR單片機高速,中斷服務時間短,故可實現高波特率通訊。 7) 面向字節的高速硬件串行接口TWI、SPI。TWI與I2C接口兼容,具備ACK信號硬件發送與識別、地址識別、總線仲裁等功能,能實現主/從機的收/發全部4種組合的多機通信。SPI支持主/從機等4種組合的多機通信。8) AVR單片機有自動上電復位電路、獨立的看門狗電路、低電壓檢測電路BOD,多個復位源(自動上電復位、外部復位、看門狗復位、BOD復位
6、),可設置的啟動后延時運行程序,增強了嵌入式系統的可靠性。9) AVR單片機具有多種省電休眠模式,且可寬電壓運行(52.7V),抗干擾能力強,可降低一般8位機中的軟件抗干擾設計工作量和硬件的使用量。10) AVR單片機技術體現了單片機集多種器件(包括FLASH程序存儲器、看門狗、EEPROM、同/異步串行口、 TWI、SPI、A/D模數轉換器、定時器/計數器等)和多種功能(增強可靠性的復位系統、降低功耗抗干擾的休眠模式、品種多門類全的中斷系統、具有輸入捕獲和比較匹配輸出等多樣化功能的定時器/計數器、具有替換功能的I/O端口等)于一身,充分體現了單片機技術的從“片自為戰”向“片上系統SOC”過渡
7、的發展方向1.4 簡述單片機技術發展的趨勢。答:(1)單片機的大容量化單片機內存儲器容量進一步擴大。以往片內ROM為1KB8KB,RAM為64字節256字節。現在片內ROM可達40KB,片內RAM可達4KB,I/O也不需再外加擴展芯片。OTPROM、Flash ROM成為主流供應狀態。而隨著單片機程序空間的擴大,在空余空間可嵌入實時操作系統RTOS等軟件。這將大大提高產品的開發效率和單片機的性能。(2)單片機的高性能化高性能化主要是指進一步改進CPU的性能,加快指令運算的速度和提高系統控制的可靠性。采用精簡指令集(RISC)結構,可以大幅度提高運行速度。并加強位處理功能、中斷和定時控制功能;采
8、用流水線結構,指令以隊列形式出現在CPU中,因而具有很高的運算速度,有的甚至采用多級流水線結構。單片機的擴展方式從并行總線到發展出各種串行總線,并被工業界接受,形成一些工業標準。如I2C、SPI串行總線等。它們采用3條數據總線代替現行的8條數據總線,從而減少了單片機引線,降低了成本。單片機系統結構更加簡化及規范化。(3)單片機的小容量低廉化小容量低廉的4位、8位機也是單片機發展方向之一。其用途是把以往用數字邏輯電路組成的控制電路單片化。專用型的單片機將得到大力發展。使用專用單片機可最大限度地簡化系統結構,提高可靠性,使資源利用率最高。在大批量使用時有可觀的經濟效益。(4)單片機的外圍電路內裝化
9、隨著集成度的不斷提高,可以把眾多的外圍功能器件集成到單片機內。除了CPU、ROM、RAM外,還可把A/D、D/A轉換器、DMA控制器、聲音發生器、監視定時器、液晶驅動電路、鎖相電路等一并集成在芯片內。為了減少外部的驅動芯片,進一步增強單片機的并行驅動能力。有的單片機可直接輸出大電流和高電壓,以便直接驅動顯示器。為進一步加快I/O口的傳輸速度,有的單片機還設置了高速I/O口,可用最快的速度驅動外部設備,也可以用最快的速度響應外部事件。甚至單片機廠商還可以根據用戶的要求量身定做,把所需要的外圍電路全部集成在單片機內,制造出具有自己特色的單片機。(5)單片機的全面CMOS化單片機的全面CMOS化,將
10、給單片機技術發展帶來廣闊的天地。CMOS芯片除了低功耗特性之外,還具有功耗的可控性,使單片機可以工作在功耗精細管理狀態。低功耗的技術措施可提高可靠性,降低工作電壓,可使抗噪聲和抗干擾等各方面性能全面提高。單片機的全盤CMOS化的效應不僅是功耗低,而且帶來了產品的高可靠性、高抗干擾能力以及產品的便攜化。(6)單片機的應用系統化單片機是嵌入式系統的獨立發展之路,單片機向MCU發展的重要因素,就是尋求應用系統在芯片上的最大化解決。因此,專用單片機的發展自然形成了SOC(System on Chip)化趨勢。隨著微電子技術、IC設計、EDA工具的發展,基于SOC的單片機應用系統設計會有較大的發展。因此
11、,隨著集成電路技術及工藝的快速發展,對單片機的理解可以從單片微型計算機、單片微控制器延伸到單片應用系統。1.5 單片機具有哪些突出優點?舉例說明單片機的應用領域。答:1單片機壽命長所謂壽命長,一方面指用單片機開發的產品可以穩定可靠地工作十年、二十年,另一方面是指與微處理器相比生存周期長。MPU更新換代的速度越來越快,以386、486、586為代表的MPU,幾年內就被淘汰出局。而傳統的單片機如 8051、68HC05等年齡已有二十多歲,產量仍是上升的。一些成功上市的相對年輕的CPU核心,也會隨著I/O功能模塊的不斷豐富,有著相當長的生存周期。28位、32位單片機共同發展這是當前單片機技術發展的另
12、一動向。長期以來,單片機技術的發展是以8位機為主的。隨著移動通訊、網絡技術、多媒體技術等高科技產品進入家庭,32位單片機應用得到了長足、迅猛的發展。3低噪聲與高速度為提高單片機抗干擾能力,降低噪聲,降低時鐘頻率而不犧牲運算速度是單片機技術發展之追求。一些8051單片機兼容廠商改善了單片機的內部時序,在不提高時鐘頻率的條件下,使運算速度提高了很多。Motorola單片機使用了瑣相環技術或內部倍頻技術使內部總線速度大大高于時鐘產生器的頻率。68HC08單片機使用4.9MHz外部振蕩器而內部時鐘達32MHz。三星電子新近推出了1.2GHz的ARM處理器內核。4低電壓與低功耗幾乎所有的單片機都有Wai
13、t、Stop等省電運行方式。允許使用的電源電壓范圍也越來越寬。一般單片機都能在36V范圍內工作,對電池供電的單片機不再需要對電源采取穩壓措施。低電壓供電的單片機電源下限已由2.7V降至2.2V、1.8V。0.9V供電的單片機已經問世。5低噪聲與高可靠性為提高單片機系統的抗電磁干擾能力,使產品能適應惡劣的工作環境,滿足電磁兼容性方面更高標準的要求,各單片機商家在單片機內部電路中采取了一些新的技術措施。如ST公司的由標準8032核和PSD(可編程系統器件)構成的PSD系列單片機片內增加了看門狗定時器,NS公司的COP8單片機內部增加了抗EMI電路,增強了“看門狗”的性能。Motorola推出了低噪
14、聲的LN系列單片機。6ISP與IAPISP(In-System Programming)技術的優勢是不需要編程器就可以進行單片機的實驗和開發,單片機芯片可以直接焊接到電路板上,調試結束即成成品,免去了調試時由于頻繁地插入取出芯片對芯片和電路板帶來的不便。IAP(In-Application Programming)技術是從結構上將Flash存儲器映射為兩個存儲體,當運行一個存儲體上的用戶程序時,可對另一個存儲體重新編程,之后將程序從一個存儲體轉向另一個。ISP的實現一般需要很少的外部電路輔助實現,而IAP的實現更加靈活,通常可利用單片機的串行口接到計算機的RS232口,通過專門設計的固件程序來
15、編程內部存儲器,可以通過現有的INTERNET或其它通訊方式很方便地實現遠程升級和維護。單片機的應用領域:1)智能化家用電器:各種家用電器普遍采用單片機智能化控制代替傳統的電子線路控制,升級換代,提高檔次。如洗衣機、空調、電視機、錄像機、微波爐、電冰箱、電飯煲以及各種視聽設備等。2)辦公自動化設備:現代辦公室使用的大量通信和辦公設備多數嵌入了單片機。如打印機、復印機、傳真機、繪圖機、考勤機、電話以及通用計算機中的鍵盤譯碼、磁盤驅動等。3)商業營銷設備:在商業營銷系統中已廣泛使用的電子稱、收款機、條形碼閱讀器、IC卡刷卡機、出租車計價器以及倉儲安全監測系統、商場保安系統、空氣調節系統、冷凍保險系
16、統等都采用了單片機控制。4)工業自動化控制:工業自動化控制是最早采用單片機控制的領域之一。如各種測控系統、過程控制、機電一體化、PLC等。在化工、建筑、冶金等各種工業領域都要用到單片機控制。5)智能儀器儀表:采用單片機的智能化儀表大大提升了儀表的檔次,強化了功能。如數據處理和存儲、故障診斷、聯網集控等。6)智能化通信產品:最突出的是手機,當然手機內的芯片屬專用型單片機。7)汽車電子產品:現代汽車的集中顯示系統、動力監測控制系統、自動駕駛系統、通信系統和運行監視器(黑匣子)等都離不開單片機。8)航空航天系統和國防軍事、尖端武器等領域:單片機的應用更是不言而喻。習題22.1 MCS-51單片機內部
17、包含哪些主要邏輯功能部件?答:微處理器(CPU)、數據存儲器(RAM)、程序存儲器(ROM/EPROM)、特殊功能寄存器(SFR)、并行I/O口、串行通信口、定時器/計數器及中斷系統。2.2 說明程序計數器PC和堆棧指針SP的作用。復位后PC和SP各為何值?答:程序計數器PC中存放將要執行的指令地址,PC有自動加1功能,以實現程序的順序執行。它是SFR中唯一隱含地址的,因此,用戶無法對它進行讀寫。但在執行轉移、調用、返回等指令時能自動改變其內容,以實現改變程序的執行順序。程序計數器PC中內容的變化決定程序的流程,在執行程序的工作過程中,由PC輸出將要執行的指令的程序存儲器地址,CPU讀取該地址
18、單元中存儲的指令并進行指令譯碼等操作,PC則自動指向下一條將要執行的指令的程序存儲器地址。SP是一個8位的SFR,它用來指示堆棧頂部在內部RAM中的位置。系統復位后SP為07H,若不對SP設置初值,則堆棧在08H開始的區域,為了不占用工作寄存器R0R7的地址,一般在編程時應設置SP的初值(最好在30H7FH區域)。2.3 程序狀態字寄存器PSW的作用是什么?其中狀態標志有哪幾位?它們的含義是什么?答:PSW是保存數據操作的結果標志,其中狀態標志有CY(PSW.7):進位標志,AC(PSW.6):輔助進位標志,又稱半進位標志,F0、F1(PSW.5、PSW.1):用戶標志;OV(PSW.2):溢
19、出標志;P(PSW.0):奇偶標志。2.4 什么是堆棧? 堆棧有何作用? 為什么要對堆棧指針SP重新賦值? SP的初值應如何設定?答:堆棧是一種數據結構,所謂堆棧就是只允許在其一端進行數據寫入和數據讀出的線性表。其主要作用有兩個:保護斷點和保護現場。堆棧區的設置原則上可以在內部RAM的任意區域,但由于MCS-51單片機內部RAM的00H1FH地址單元已被工作寄存器R0R7占用,20H2FH為位尋址區,故堆棧一般設在30H7FH(對于8032系列芯片可為30H0FFH)的區域內。單片機復位后,SP的內容為07H,堆棧事實上由08H單元開始,考慮到08H1FH單元分別屬于13組的工作寄存器區,則最
20、好把SP值改置為1FH或更大的值。2.5 開機復位后,CPU使用的是哪組工作寄存器? 它們的地址如何? CPU如何指定和改變當前工作寄存器組?答:開機復位后使用的是0組工作寄存器,它們的地址是00H07H,對程序狀態字PSW中的RS1和RS0兩位進行編程設置,可指定和改變當前工作寄存器組。RS1、RS0=00H時,當前工作寄存器被指定為0組;RS1、RS0=01H時,當前工作寄存器被指定為1組;RS1、RS0=10H時,當前工作寄存器被指定為2組;RS1、RS0=11H時,當前工作寄存器被指定為3組。2.6 MCS-51的時鐘周期、機器周期、指令周期是如何定義的?當振蕩頻率為12MHz時,一個
21、機器周期為多少微秒?答: 時鐘周期也稱為振蕩周期,定義為時鐘脈沖的倒數,是計算機中最基本的、最小的時間單位。 CPU取出一條指令至該指令執行完所需的時間稱為指令周期,因不同的指令執行所需的時間可能不同,故不同的指令可能有不同的指令周期。 機器周期是用來衡量指令或程序執行速度的最小單位。它的確定原則是以最小指令周期為基準的,即一個最小指令周期為一個機器周期。當振蕩頻率為12MHz時,一個機器周期1微秒2.7 MCS-51單片機的控制信號、有哪些功能?答:是訪問程序存儲器控制信號。當端接低電平時,則不管芯片內部是否有程序存儲器,CPU只訪問外部程序存儲器。對8031來說,因其內部無程序存儲器,所以
22、該引腳必須接地。當端接高電平時,CPU訪問內部程序存儲器,但當PC(程序計數器)值超過某一值時,將自動轉向片外程序存儲器1000H地址繼續執行程序。是地址鎖存允許信號。當CPU訪問外部存儲器或I/O接口時,ALE輸出脈沖的下降沿用于鎖存16位地址的低8位。在不訪問外部存儲器或I/O接口時,ALE端有周期性正脈沖輸出,其頻率為振蕩頻率的1/6。但是,每當訪問外部數據存儲器或I/O接口時,在第二個機器周期中ALE只出現一次,即丟失一個ALE脈沖。片外程序存儲器讀選通信號。在CPU從外部程序存儲器讀取指令(或常數)期間,每個機器周期兩次有效,但在訪問外部數據存儲器或I/O接口時,信號將不出現。端可以
23、驅動8個TTL負載。2.8 MCS-51的片外程序存儲器和片外數據存儲器共處同一地址空間為什么不會發生總線沖突?答:MCS-51的片外程序存儲器和片外數據存儲器共處同一地址空間,地址范圍都是0000HFFFFH(64 KB),但不會發生總線沖突。因片外程序存儲器和片外數據存儲器的讀寫控制信號不同,片外程序存儲器的讀信號是,而片外數據存儲器的讀信號為、寫信號為,訪問片外程序存儲器和片外數據存儲器的指令也不同,所以它們不會發生總線沖突。2.9 簡述MCS-51內部數據存儲器的存儲空間分配。答:內部數據存儲器分為3個區域:1. 工作寄存器區(00H1FH); 2. 位尋址區(20H2FH); 3.
24、堆棧和數據緩沖器區(30H7FH或30H0FFH)。2.10 位地址和字節地址有何區別? 位地址20H具體在內存中什么位置?答:MCS-51的位存儲器由以內部RAM中20H2FH單元和特殊功能寄存器中地址為8的倍數的特殊功能寄存器兩部分組成。其中每個單元的每一位都有一個位地址映像,它們既可以像普通內部RAM單元一樣按字節存取,也可以對單元中的任何一位單獨存取。字節地址是內部RAM中和特殊功能寄存器中每個存儲單元的地址。位地址20H是內部RAM24H中的D0位。2.11 8051的4個IO口作用是什么? 8051的片外三總線是如何分配的?答:MCS-51單片機有4個8位并行I/O端口,分別記作P
25、0、P1、P2、P3口。 在訪問片外擴展存儲器時, P0口分時傳送低8位地址和數據, P2口傳送高8位地址。P1口通常作為通用I/O口供用戶使用。P3口具有第二功能,為系統提供一些控制信號。在無片外擴展存儲器的系統中,這4個口均可作為通用I/O端口使用。在作為通用I/O端口使用時,這4個口都是準雙向口。 在訪問片外擴展存儲器時,片外三總線的構成:P0口傳送低8位地址經鎖存器所存構成低8位地址總線,高8位地址總線由P2口構成。P0口作為單片機系統的低8位地址/數據線分時復用,在低8位地址鎖存后,P0口作為雙向數據總線。由P3口的第二功能輸出數據存儲器的讀、寫控制信號與片外程序存儲器讀選通信號,訪
26、問程序存儲器控制信號,地址鎖存允許信號構成控制總線。習題33.1 匯編語句是由4個部分(字段)構成的,簡述各部分的含義。答:匯編語句的4個部分為:標號: 操作碼 操作數;注釋標號是用戶設定的一個符號,表示存放指令或數據的存儲單元地址。標號由以字母開始的18個字母或數字串組成,以冒號結尾。不能用指令助記符、偽指令或寄存器名來作標號。標號是任選的,并不是每條指令或數據存儲單元都要標號,只在需要時才設標號。如轉移指令所要訪問的存儲單元前面一般要設置標號。一旦使用了某標號定義一個地址單元,在程序的其它地方就不能隨意修改這個定義,也不能重復定義。操作碼是指令或偽指令的助記符,用來表示指令的性質或功能。對
27、于一條匯編語言指令,這個字段是必不可少的。操作數給出參加運算(或其它操作)的數據或數據的地址。操作數可以表示為工作寄存器名、特殊功能寄存器名、標號名、常數、表達式等。這一字段可能有,也可能沒有。若有兩個或三個操作數,它們之間應以逗號分開。注釋字段不是匯編語言的功能部分,只是增加程序的可讀性。言簡意賅的注釋是匯編語言程序編寫中的重要組成部分。3.2舉例說明MCS-51單片機的7種尋址方式,各尋址方式的尋址空間。1. 立即尋址 立即尋址方式的尋址空間為程序存儲器。 例如: MOV A,#3FH ;3FHA1. 直接尋址 直接尋址方式中操作數存儲的空間有三種: 1. 內部數據存儲器的低128個字節單
28、元(00H7FH) 例如: MOV A,30H ;(30H)A指令功能是把內部RAM 30H單元中的內容送入累加器A。 位地址空間例如: MOV C,00H ;直接位00H內容進位位 特殊功能寄存器例如: MOV IE,#85H ;立即數85H中斷允許寄存器IE。1. 寄存器尋址 寄存器尋址方式的尋址空間為工作寄存器和特殊功能寄存器等。 例如: MOV A,R6 ;(R6)A1. 寄存器間接尋址 寄存器間接尋址空間為內部RAM 128字節,外部RAM 例如: MOV A,R0 ;((R0))A1. 變址尋址 變址尋址空間為程序存儲器。 例如: MOVC A,ADPTR ;(DPTR)()AMO
29、VC A,APC ;(PC)()A1. 相對尋址 相對尋址空間為程序存儲器。 2. 當前PC值是指相對轉移指令所在地址(源地址)加轉移指令字節數。即:當前PC值 = 源地址 + 轉移指令字節數1. 偏移量rel 是有符號的單字節數,以補碼表示,相對值在-128+127范圍內,負數表示從當前地址向上轉移,正數表示從當前地址向下轉移。所以轉移的目的地址為:目的地址 = 當前PC值 + rel = 源地址 + 轉移指令字節數 + rel例如: JNC 2AH , JZ F8H1. 位尋址 位尋址空間為內部RAM 20H2FH的128位和SFR中的83位。 例如: MOV C,30H, MOV P1.
30、0, C3.3指出下列指令的尋址方式和操作功能:INC 40H ;直接尋址 (40H)+140HINC A ;寄存器尋址 (A)+1AINC R2 ;寄存器間接尋址 (R2)+1(R2)MOVC A, A+DPTR ;基址加變址寄存器尋址 (A)+(DPTR) AMOV A, #6EH ;立即尋址 6EHASETB P1.0 ;位尋址 P1.0置13.4 設內部RAM中3AH單元的內容為50H,寫出當執行下列程序段后寄存器A、R0和內部RAM 50H,51H單元的內容為何值?MOV A,3AH ;(A)=50HMOV R0,A ;(R0)=50HMOV A,#00H ;(A)=00HMOV R
31、0,A ;(50H)=00HMOV A,#25H ;(A)=25HMOV 51H,A ;(51H)=25H答:(A)=25H, (3AH)=50H, (R0)=50H, (50H)=00H, (51H)=25H3.5 設堆棧指針SP中的內容為60H,內部RAM 30H和31H單元的內容分別為27H和1AH,執行下列程序段后,61H,62H,30H,31H,DPTR及SP中的內容將有何變化?PUSH 30H ;(SP)+1SP, (30H) 61HPUSH 31H ;(SP)+1SP, (31H) 62HPOP DPL ; (62) DPL, (SP)-1SPPOP DPH ; (61) DPH
32、, (SP)-1SPMOV 30H,#00H ; 00H30HMOV 31H,#0FFH ; FFH31H答:(61H)=27H, (62H)=1AH, (30H)=00H, (31H)=FFH, (DPTR)=271AH, (SP)=60H3.6 設(A)=30H,(R1)=23H,(30H)=05H。執行下列兩條指令后,累加器A和R1以及內部RAM 30H單元的內容各為何值?XCH A,R1XCHD A,R1答:(A)=25H, (R1)=30H, (30H)=03H3.7 設(A)=01010101B,(R5)=10101010B,分別寫出執行下列指令后的結果ANL A, R5 ; (A
33、)=0000 0000B, (R5)=10101010BORL A, R5 ; (A)= 10101010B, (R5)=10101010BXRL A, R5 ; (A)=00000000B3.8 設指令SJMP rel=7FH,并假設該指令存放在2113H和2114H單元中。當該條指令執行后,程序將跳轉到何地址?答:程序將跳轉到2194H地址3.9 簡述轉移指令AJMP addr11,SJMP rel, LJMP addr16及JMP A+DPTR的應用場合。答:AJMP addr11這是在當前PC的2K字節范圍內的無條件轉移指令,把程序的執行轉移到指定的地址。SJMP rel 這是相對跳轉
34、指令,其中rel為相對偏移量。轉向的目標地址是在當前PC的前128字節到后127字節之間。LJMP addR16 執行這條指令時把指令的第二和第三字節分別裝入PC的高位和低位字節中,無條件地轉向指定地址。轉移的目標地址可以在64KB程序存儲器地址空間的任何地方,不影響任何標志。JMP A+DPTR 把累加器A中8位無符號數與數據指針DPTR中的16位數相加,將結果作為轉移的目標地址送入PC,不改變累加器A和數據指針DPTR內容,也不影響標志。本指令以DPTR內容作為基址,A的內容作為變址。只要把DPTR的值固定,而給A賦予不同的值,即可實現程序的多分支轉移。3.10 查指令表,寫出下列兩條指令
35、的機器碼,并比較一下機器碼中操作數排列次序的特點。MOV 78H,80H ;85 80 78MOV 78H,#80H ;75 78 80答:直接尋址單元傳送到直接尋址單元的機器碼是第二個操作數在前,而立即數傳送到直接地址單元是第一個操作數在前,次序正好相反。3.11 試編寫程序,查找在內部RAM 30H50H單元中1AH這一數據。若找到1AH則將51H單元置為01H;沒找到則將51H單元置為00H。答:參考程序如下MOV R1, #2FHLOOP1: INC R1CJNE R1, #1AH, LOOP2SJMP LOOP3LOOP2: CJNE R1, #51, LOOP1MOV 51H, #
36、00HSJMP ENDLOOP3: MOV 51H, #01HEND: RET3.12 若SP=60H,子程序標號MULT所在的地址為3A40H。執行LCALL MULT指令后,堆棧指針SP和堆棧內容發生了什么變化?答:(SP)=62H, (61H)=40H, (62H)=3AH3.13 假設外部存儲器215AH單元的內容為3DH,執行下列指令后,累加器A中的內容為何值?MOV P2,#21HMOV R0,#5AHMOVX A,R0答:(A) = 3DH習題44.1 編程將數據存儲器中以2A00H為首地址的100個連續單元清零。CLR A MOV R0, #64H MOV DPTR, #2A0
37、0H LOOP: MOVX DPTR,A INC DPTR DJNZ R0, LOOP END4.2 編程將片內50H70H單元中的內容傳送到以5C00H為起始地址的存儲區中。MOV DPTR, #5C00HMOV R0, #50HLOOP: MOV A,R0MOVX DPTR,AINC R0INC DPTRCJNE R0,#70H,LOOPEND4.3 片外RAM區從1000H單元開始存有100個單字節無符號數,找出最大值并存入1100H單元中,試編寫程序。MOV DPTR, #1000H ;置片外RAM區首地址MOV R0,#00H ;清 R0MOV R1,64H ;置計數初值100LOO
38、P: MOVX A, DPTR ;取片外RAM區的某個數送ACJNZ A,R0,NT1 ;與R0中的數比較NT1: JC NT2 ;(A)<(R0)跳轉到NT2MOV RO,A ;若(A)(R0),則大數送RONT2: INC DPTR ;修改數據塊指針DJNZ R1,LOOP ;未完,循環RET4.4 設有100個單字節有符號數,連續存放在以2100H為首地址的存儲區中,試編程統計其中正數、負數、零的個數。MOV R0, #00H ; 置負數的計數初值MOV R1, #00H ; 置正數的計數初值MOV R2, #00H ; 置0的計數初值MOV R4, #64H ; 置循環計數初值M
39、OV DPTR, #2100H ; 置數據區首地址START:MOVX A, DPTR ; 取某一數據送入AJZ EQUAL ;為0轉EQUALJNB ACC.7, POSI ;為正數轉POSIINC R0 ; 負數計數值加1INC DPTR ; 修改數據塊指針 DJNZ R4, START ; 未完,返回POSI: INC R1 ; 正數計數值加1INC DPTR ; 修改數據塊指針 DJNZ R4, START EQUAL:INC R2 ; 0計數值加1INC DPTR DJNZ R4, STARTEND4.5 從2030H單元開始,存有100個有符號數,要求把它傳送到從20BOH開始的存
40、儲區中,但負數不傳送,試編寫程序。MOV R1, #64H ;置計數初值MOV R0, #B0H ;目標數據區首地址低8位,高8位為20HMOV DPTR, #2030H ;源數據區首地址START:MOVX A, DPTR ;取源數據區某數據送入AJB ACC.7, D1 ;負數,轉D1MOVX R0,A ;正數,送入目標數據區INC DPTR ; 修改源數據塊指針INC R0 ; 修改目標數據塊指針DJNZ R1, START ;未完,繼續RET ;返回D1: INC DPTR ;修改源數據塊指針INC R0 ;修改目標數據塊指針DJNZ R1, START ;未完,繼續RET ;返回4.
41、6 若從30H單元開始有100個數,編一個程序檢查這些數,正數保持不變,負數取補后送回。MOV R0, #30H ;數據區首地址MOV R1, #64H ;計數初值START: MOVX A, R0 ;取某個數JNB ACC.7, POSI ;正數,轉POSICPL A ;負數,取補ADD A, #01H MOVX R0, A ;送回原地址INC R0 ;修改數據塊指針DJNZ R1, START ;未完,繼續RETPOSI: INC R0 ;修改數據塊指針DJNZ R1, START ;未完,繼續RET4.7 試編程把以2040H為首地址的連續10個單元的內容按升序排列,存到原來的存儲區中。
42、SORT: MOV DPTR, #2040H;MOV R3, #09H;CLR F0;D1: MOVX A,DPTR ;MOV R2, A ;前一個數送R2INC DPTRMOVX A, DPTR ;MOV R4, A ;后一個數送R4MOV A, R2 ;前一個數送ACLR CSUBB A, R4 ;前一個數減后一個數JC NEXT ;MOV A, R2 ;相鄰數互換MOVX DPTR,AMOV R0,DPL ;數據指針低8位減1DEC R0MOV DPL,R0MOV A, R4 ;MOVX DPTR,AINC DPTR;SETB F0NEXT: DJNZ R3, D1;JB F0,SORT
43、RET4.8 設在2000H2004H單元中存放有5個壓縮BCD碼,編程將它們轉換成ASCII碼,存放到以2005H為首地址的存儲區中。MOV DPTR,#2000H;MOV R0, #05H;MOV R1, #04H;D1: MOVX A, DPTR;ANL A, #0FHCLR C;ADD A,#30H;MOV P2,#20HMOVX R0,AINC DPTR;INC R0DJNZ R1, D1;RET1. 在以2000H為首地址的存儲區中,存放著20個用ASCII碼表示的O9之間的數,試編程,將它們轉換成BCD碼,并以壓縮BCD碼的形式存放在3000H3009H單元中。MOV DPTR,
44、 2000H;MOV R0, #20H;MOV R1, #00H;ASCBIN: MOVX A, DPTR;CLR CSUBB A, #30H;MOV P2, 30H;MOVX R1,A;INC R1;INC DPTR;DJNZ R0, ASCBIN;RET4.10 試編寫多字節BCD碼數加法、減法子程序。4.11 若晶振為6MHz,試編寫延時100ms、1s的子程序。ORG 2000H 周期數MOV R0, #0AH ;毫秒數R0 1DL2: MOV R1, #MT ;1ms延時值R1 1DL1: NOP 1NOP 1DJNZ R1,DL1 ;1ms延時循環 2DJNZ R0,DL2 ;10
45、ms延時循環 2END4.12 試設計一個子程序,其功能為將片內RAM 20H21H中的壓縮BCD碼轉換為二進制數,并存于以30H開始的單元。BCDB: MOV A,20H MOV R2,A ;取千位、百位BCD碼ACALL BCDB1 ;調用子程序MOV B,#0AHMUL AB ;乘以10MOV R6,A ;乘積低8位送R6XCH A,B ;交換乘積高、低位MOV R5,A ;乘積高位送R5MOV A,21H ;取十位、個位BCD碼MOV R2,A ;送入R2ACALL BCDB1 ;調用子程序ADD A,R6 ;加千位、百位乘積低8位MOV 31H,A ;低8位送入31HMOV A,R5
46、 ;乘積高8位送AADDC A,#00H ;加進位位MOV 30H,A ;結果高8位送入30HHERE: SJMP HERE子程序清單:BCDB1: MOV A,R2 ;取壓縮BCD碼ANL A,#0F0H ;屏蔽低4位SWAP AMOV B,#0AHMUL AB ;高位BCD碼乘以10MOV R3,A ;乘積送R3MOV A,R2 ;取壓縮BCD碼ANL A,#0FH ;屏蔽高4位ADD A,R3 ;高位BCD碼乘以10后加低位BCD碼MOV R2,A ;送R2RET 習題55.1 什么是中斷系統?中斷系統的功能是什么?答:當CPU正在處理某件事情(例如,正在執行主程序)的時候,外部或內部發
47、生的某一事件(如某個引腳上電平的變化,一個脈沖沿的發生或計數器的計數溢出等)請求CPU迅速去處理,于是,CPU暫時終止當前的工作,轉去處理所發生的事件。中斷服務程序處理完該事件后,再回到原來被終止的地方,繼續原來的工作,這樣的過程稱為中斷。實現這種功能的部件稱為中斷系統。中斷系統的功能:(1)實現中斷及中斷返回,(2)實現優先級排隊,(3)實現優先級控制。5.2 什么是中斷嵌套?答:當CPU響應某一中斷源的請求而進行中斷處理時,若有優先級更高的中斷源發出中斷請求,則CPU中斷正在執行的中斷服務程序,保留程序的斷點和現場,響應更高一級的中斷,即是中斷嵌套。5.3 什么是中斷源?MCS-51有哪些
48、中斷源?各有什么特點?答:向CPU發出中斷請求的來源稱為中斷源。MC5-51單片機的中斷系統有5個中斷請求源:外部中斷0請求,由引腳輸入,中斷請求標志為IE0。外部中斷l請求,由引腳輸入,中斷請求標志為IEl。定時器/計數器T0溢出中斷請求,中斷請求標志為TF0。定時器/計數器T1 溢出中斷請求,中斷請求標志為TF1。串行口中斷請求,中斷請求標志為TI或RI。外部中斷0:它的觸發方式選擇位為IT0。IT0=0,為電平觸發方式,引腳上低電平有效IT0=1,為脈沖觸發方式,引腳上的電平從高到低的負跳變有效。IT0位可由軟件置“1”或清“0”。外部中斷0請求標志位IE0。當IT0=0,即電平觸發方式
49、時,每個機器周期的S5P2采樣引腳,若腳為低電平,則置“1” IE0,否則清“0” IE0。當IT0=1,即跳沿觸發方式時,在第一個機器周期采樣為低電平,則置“1” IE0。IE0=1,表示外部中斷0正在向CPU申請中斷。當CPU響應中斷,轉向中斷服務程序時,由硬件清“0” IE0。外部中斷1中斷原是與此相同。定時器/計數器0:被啟動計數后,從初值開始加1計數,當定時器/計數器0計數滿而產生溢出時,由硬件自動使TF0置 1,并向CPU申請中斷。該標志一直保持到CPU響應中斷后,才由硬件自動清0。也可用軟件查詢該標志,并由軟件清0。定時器/計數器1中斷原理與此相同。串行中斷請求由TI、RI的邏輯
50、“或”得到。即不論是發送標志還是接收標志,都將發生串行中斷請求。5.4 MCS-51單片機響應外部中斷的典型時間是多少?在哪些情況下,CPU將推遲對中斷請求的響應?答:38個機器周期。(1) CPU正在處理相同的或更高優先級的中斷。因為當一個中斷被響應時,要把對應的中斷優先級狀態觸發器置“1”(該觸發器指出CPU所處理的中斷優先級別),從而封鎖了低級中斷和同級中斷。(2) 所查詢的機器周期不是所執行指令的最后一個機器周期。作這個限制的目的是使當前指令執行完畢后,才能進行中斷響應,以確保當前指令完整的執行。(3) 正在執行的指令是RET1或是訪問IE或IP的指令。因為按MCS-51中斷系統特性的
51、規定,在執行完這些指令后,需要再執行一條指令才能響應新的中斷請求。如果存在上述三種情況之一,CPU將推遲對中斷請求的響應。5.5 中斷查詢確認后,在下列各種運行情況中,能立即進行響應的是:(1)當前正在進行高優先級中斷處理(2)當前正在執行RETI指令(3)當前指令是DIV指令,且正處于取指令的機器周期(4)當前指令是MOV A, R3答:(4)能立即進行響應5.6 試編寫出外部中斷1為跳沿觸發方式的中斷初始化程序。答:SETB EASETB EX1SETB IT15.7 在MCS-51中,需要外加電路實現中斷撤除的是:(1)定時中斷(2)脈沖方式的外部中斷(3)串行中斷(4)電平方式的外部中
52、斷答:(4)需要外加電路5.8 MCS-51有哪幾種擴展外部中斷源的方法?各有什么特點?答:(1)定時器/計數器作為外部中斷源的使用方法當它們選擇為計數器工作模式,T0或T1引腳上發生負跳變時,T0或T1計數器加1,利用這個特性,可以把T0、T1引腳作為外部中斷請求輸入引腳,而定時器/計數器的溢出中斷TF1或TF0作為外部中斷請求標志。(2)中斷和查詢結合的方法若系統中有多個外部中斷請求源,可以按它們的輕重緩急進行排隊,把其中最高級別的中斷源IR0直接接到MCS-51的一個外部中斷輸入端,其余的中斷源IR1IR4用“線或”的辦法連到另一個外部中斷輸入端,同時還連到P1口,中斷源的中斷請求由外設
53、的硬件電路產生,這種方法原則上可處理任意多個外部中斷。查詢法擴展外部中斷源比較簡單,但是擴展的外部中斷源個數較多時,查詢時間較長。(3)用優先權編碼器擴展外部中斷源采用74LS148優先權編碼器在硬件上對外部中斷源進行排隊,可以避免響應優先級最高的中斷和響應優先級最低的中斷所需的時間可能相差很大這樣的問題。該方法的最大特點是結構簡單,價格低廉,但該電路無法實現中斷服務子程序的嵌套。5.9 中斷服務子程序和普通子程序有什么區別?答: 1,中斷服務子程序的入口地址由中斷向量表確定,而普通子程序的入口地址在中斷向量表以外的程序存儲空間內任意設定。2,中斷服務子程序的返回指令是RETI, 而普通子程序
54、的返回指令是RET5.10 試編寫一段對中斷系統初始化的程序,允許INT0,INT1,T0,串行口中斷,且使T0中斷為高優先級。答:SETB EASETB EX0SETB EX1SETB ET0SETB ESSETB PT05.11在MCS-51單片機中,外部中斷有哪兩種觸發方式?如何加以區別?答:電平觸發方式和跳沿觸發方式。IT0=0時, 為電平觸發方式,引腳低電平有效。IT0=1時, 為跳沿觸發方式,引腳負跳變有效。IT1=0時,為電平觸發方式,引腳低電平有效。IT1=1時,為跳沿觸發方式,引腳負跳變有效。5.12 單片機在什么條件下可響應INT0中斷?簡要說明中斷響應的過程。答:1,中斷
55、允許寄存器IE中的EA=1,且EX1=1,同時沒有其它優先于外部中斷0的中斷,若IT0=0,引腳上低電平有效;若IT0=1,引腳上的電平從高到低的負跳變有效。2,當CPU正在處理某件事情(例如,正在執行主程序)的時候,外部發生的某一事件(如某個引腳上電平的變化,一個脈沖沿的發生)請求CPU迅速去處理,于是,CPU暫時終止當前的工作,轉去處理所發生的事件。中斷服務程序處理完該事件后,再回到原來被終止的地方,繼續原來的工作,這樣的過程稱為中斷。處理事件請求的過程,稱為CPU的中斷響應過程。5.13 當正在執行某一中斷源的中斷服務程序時,如果有新的中斷請求出現,問在什么情況下可響應新的中斷請求?在什
56、么情況下不能響應新的中斷請求?答:1,一個中斷源的中斷請求被響應,需滿足以下條件: 該中斷源發出中斷請求。 CPU開中斷,即中斷總允許位EA=1。 申請中斷的中斷源的中斷允許位=1,即該中斷沒有被屏蔽。 無同級或更高級中斷正在被服務。2,中斷響應是有條件的,并不是查詢到的所有中斷請求都能被立即響應,當遇到下列三種情況之一時,中斷響應被封鎖:(1) CPU正在處理相同的或更高優先級的中斷。因為當一個中斷被響應時,要把對應的中斷優先級狀態觸發器置“1”(該觸發器指出CPU所處理的中斷優先級別),從而封鎖了低級中斷和同級中斷。(2) 所查詢的機器周期不是所執行指令的最后一個機器周期。作這個限制的目的是使當前指令執行完畢后,才能進行中斷響應,以確保當前指令完整的執行。(3) 正在執行的指令是RETI或是訪問IE或IP的指令。因為按MCS-51中斷系統特性的規定,在執行完這些指令后,需要再執行一條指令才能響應新的中斷請求。如果存在上述三種情況之一,CPU
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年保健茶行業市場深度調研及發展趨勢與投資戰略研究報告
- 租賃合同安全協議
- 2025年法律職業資格考試民法專項練習卷(合同法難點解析)
- 房屋征收外包協議書
- 彩屏租憑合同協議書
- 戶外場地合同協議書
- 拼裝模型合作協議書
- 意外損傷補償協議書
- 康復治療免責協議書
- 投資股權借款協議書
- 2025中煤礦山建設集團(國獨資)招聘200人高頻重點提升(共500題)附帶答案詳解
- 舊樓加裝電梯施工方案
- DBJ41-139-2014 河南省基坑工程技術規范
- 2023-2024年外賣騎手行業現狀及發展趨勢研究報告
- 2025年湖北省武漢市高考數學模擬試卷(附答案解析)
- 有限空間作業專項施工組織方案
- 促進學生素養形成的“碳中和”項目式學習實踐
- 2024(統編版)語文七年級上冊《西游記》真題+綜合題練習(學生版+解析版)
- 中國青銅時代(張光直)(歷史-中國-史前史)
- 企業財務管理畢業論文范文
- 醫院員工價值取向培訓
評論
0/150
提交評論