




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
...wd......wd......wd...《單片微型計算機原理及應用》習題參考答案姜志海劉連鑫王蕾編著電子工業出版社目錄第1章微型計算機根基2第2章半導體存儲器及I/O接口根基4第3章MCS51系列單片機硬件構造11第4章MCS51系列單片機指令系統16第5章MCS51系列單片機匯編語言程序設計20第6章MCS51系列單片機中斷系統與定時器/計數器26第7章MCS51系列單片機的串行口32第8章MCS51系列單片機系統擴展技術34第9章MCS51系列單片機鍵盤/顯示器接口技術36第10章MCS51系列單片機模擬量接口技術40第11章單片機應用系統設計44第1章微型計算機根基1.簡述微型計算機的構造及各局部的作用微型計算機在硬件上由運算器、控制器、存儲器、輸入設備及輸出設備五大局部組成。運算器是計算機處理信息的主要局部;控制器控制計算機各部件自動地、協調一致地工作;存儲器是存放數據與程序的部件;輸入設備用來輸入數據與程序;輸出設備將計算機的處理結果用數字、圖形等形式表示出來。通常把運算器、控制器、存儲器這三局部稱為計算機的主機,而輸入、輸出設備則稱為計算機的外部設備〔簡稱外設〕。由于運算器、控制器是計算機處理信息的關鍵部件,所以常將它們合稱為中央處理單元CPU〔CentralProcessUnit〕。2.微處理器、微型計算機、微型計算機系統有什么聯系與區別微處理器是利用微電子技術將計算機的核心部件〔運算器和控制器〕集中做在一塊集成電路上的一個獨立芯片。它具有解釋指令、執行指令和與外界交換數據的能力。其內部包括三局部:運算器、控制器、內部存放器陣列〔工作存放器組〕。微型計算機由CPU、存儲器、輸入/輸出〔I/O〕接口電路構成,各局部芯片之間通過總線〔Bus〕連接。以微型計算機為主體,配上外部輸入/輸出設備、電源、系統軟件一起構成應用系統,稱為微型計算機系統。3.微型計算機是以CPU為核心,配上存儲器、輸入/輸出接口和系統總線組成的計算機。4.在計算機內部,一切信息的存取、處理和傳遞的形式是〔C〕。A.ASCII碼 B.BCD碼 C.二進制 D.十六進制5.0~9的ASCII碼是〔C〕。A.0~9 B.30~39 C.30H~39H D.40H~49H6.在微型計算機中,一般具有哪三類總線試說出各自的特征〔包括傳輸的信息類型、單向傳輸還是雙向傳輸〕。所謂總線,就是在微型計算機各芯片之間或芯片內部各部件之間傳輸信息的一組公共通信線。計算機元件級總線包括地址總線AB〔AddressBus〕、數據總線DB〔DataBus〕、控制總線CB〔ControlBus〕三種?!?〕地址總線:地址總線是CPU用來向存儲器或I/O接口傳送地址信息的,是三態單向總線。地址總線的寬度決定了CPU可直接尋址的內存容量。通過地址總線確定要操作的存儲單元或I/O接口的地址?!?〕數據總線:數據總線是CPU與存儲器及外設交換數據的通路,是三態雙向總線?!?〕控制總線:控制總線是用來傳輸控制信號的,傳送方向依據具體控制信號而定,如CPU向存儲器或I/O接口電路輸出讀信號、寫信號、地址有效信號,而I/O接口部件向CPU輸入復位信號、中斷請求信號等。7.將以下二進制數轉換為十進制數。111101.101B 100101.11B 1100110.011B111101.101B=29.625100101.11B=37.751100110.011B=102.3758.將以下十進制數轉換為二進制數、BCD碼數。126.635 317.125 87.0735126.635=1111110.101B=(000100100110.011000110101)BCD317.125=100111101.001B=(001100010111.000100100101)BCD87.0735=1010111.0001B=(10000111.0000011100110101)BCD9.設機器數為8位,寫出以下用真值表示的二進制數的原碼、補碼和反碼。+0010101B –0010101B +1000000B –1000000B+0010101B–0010101B+1000000B–1000000B原碼00010101B10010101B01000000B11000000B反碼00010101B11101010B01000000B10111111B補碼00010101B11101011B01000000B11000000B10.將以下BCD碼表示成十進制數和二進制數。01111001 01010111 10000011 10011001(01111001)BCD=79=1001111B(01010111)BCD=57=111001B(10000011)BCD=83=1010011B(10011001)BCD=99=1100011B11.設以下數據為8位補碼表示的十六進制數,計算a+b和a–b,并且判斷有無溢出。aba+b是否溢出a–b是否溢出37H97H0CEHN0A0HY0B7H0D7H8EHY0E0HY0F7H0D7H0CEHY20HN037H0C7H0FEHN70HY12.計算機某字節存儲單元的內容為10000111,假設解釋為無符號數,則真值為〔135〕;假設解釋為有符號數,則真值為〔-121〕;假設解釋為BCD碼,則真值為〔87〕;假設用十六進制數表示,則為〔87〕H。第2章半導體存儲器及I/O接口根基1.半導體存儲器分兩大類:易失性存儲器RAM和非易失性存儲器ROM。閃速存儲器屬于非易失性存儲器ROM。2.SRAM6264芯片的地址線為A12~A0,其存儲容量為8K地址空間。3.可用紫外線擦除后改寫的存儲器EPROM經擦除后,各單元的內容應為0FFH。4.88KB的SRAM存儲器芯片需要13根地址線和8根數據線。5.半導體存儲器有哪幾種類型各自有什么特點半導體存儲器的兩個重要指標是什么半導體存儲器通常分為隨機存取存儲器〔RAM,RandomAccessMemory〕和只讀存儲器〔ROM,ReadOnlyMemory〕兩類?!?〕RAM:RAM又稱讀寫存儲器,它的數據讀取、存入時間都很短,因此計算機運行時,既可以從RAM中讀數據,又可以將數據寫入RAM。但掉電后RAM中存放的信息將喪失。RAM適宜存放輸入數據、中間結果及最后的運算結果,因此又被稱為數據存儲器。隨機存儲器有靜態RAM和動態RAM兩種。靜態RAM用觸發器存儲信息,只要不斷電,信息就不會喪失。動態RAM依靠電容存儲信息,充電后為“1〞,放電后為“0〞。為了保存信息,每隔1~2ms必須對高電平的電容重新充電,這稱為動態RAM的定時刷新。動態RAM的集成度高;靜態RAM的集成度低、功耗大,優點是省去了刷新電路。在設計專用的微型計算機系統時,一般只用靜態RAM就可以滿足要求?!?〕ROM:ROM稱為只讀存儲器。讀出一個數據的時間為數百納秒,有時也可改寫,但寫入一個數據的時間長達數十毫秒。因此在計算機運行時只能執行“讀〞操作。掉電后ROM中存放的數據不會喪失。ROM適宜存放程序、常數、表格等,因此又稱為程序存儲器。只讀存儲器有以下五類:掩模ROM:在半導體工廠生產時,已經用掩模技術將程序做入芯片,用戶只能讀出內容而不能改寫。掩模ROM只能應用于有固定程序且批量很大的產品中。一次可編程只讀存儲器〔PROM,ProgrammableROM〕:用戶可將程序寫入PROM,但程序一經寫入就不能改寫。紫外線擦除可編程只讀存儲器〔EPROM,ErasablePROM〕:用戶可將程序寫入EPROM芯片。如果要改寫程序,先用EPROM擦除器,擦去原先的程序,然后寫入新程序。與PROM芯片一樣,寫入的速度很慢,且要用到高壓,所以必須用特定的EPROM編程器寫入信息。在計算機運行時只能執行讀操作。電擦除可編程只讀存儲器〔EEPROM,ElectricallyErasablePROM〕:由于采用電擦除方式,而且擦除、寫入、讀出的電源都用+5V,故能在應用系統中在線改寫。但目前寫入時間較長,約需10ms,讀出時間約為幾百納秒。閃爍存儲器〔FlashMemory〕:快速擦寫存儲器〔FlashMemory,簡稱Flash〕是20世紀80年代中期推出的新型器件。它可以在聯機條件下,在計算機內進展擦除、改寫,因而稱為快擦寫型存儲器或閃爍存儲器。它具有芯片整體或分區電擦除和可再編程功能,從而使它成為性價比和可靠性最高的可讀寫、非易失性存儲器。主要性能特點如下:高速芯片整體電擦除:芯片整體擦除時間約1s,而一般的EPROM需要15min以上。高速編程:采用快速脈沖編程方法,編程時間短。最少1萬次擦除/編程周期,通??傻竭_10萬次擦除/編程周期。早期的Flash采用12V編程電壓,改進后在Flash內部集成了1個DC/DC變換器,可以采用單一的5V電壓供電。高速度的存儲器訪問:最大讀出時間不超過200μs。高速Flash的讀出時間到達60μs。低功耗:最大工作電流為30mA,備用狀態下的最大電流為100μA。密度大,價格低,性價比高。衡量半導體存儲器性能的主要指標有存儲容量、存取速度、存儲器周期、功耗、可靠性、價格、電源種類等,其中主要的技術指標是存儲容量和存取速度。存儲容量是存儲器的一個重要指標。存儲器芯片的存儲容量用“存儲單元個數×每個單元的存儲位數〞來表示。如存儲器有256個單元,每個單元存放8位二進制數,那么該存儲器的容量為256×8位。存儲器容量1K=1024=210。對于以字節編址的微型計算機,可以以字節表示容量,如某微型計算機的容量為64KB。在表示存儲器的容量時,一般是以某一空間范圍來表示的,而空間范圍是由地址線來決定的,即存儲器的容量和存儲器的地址線的寬度〔數量〕有關。地址的二進制位數N與容量的關系是Q=2N。如某存儲器芯片有13條地址線A12~A0,則存儲器容量為8KB,空間表示范圍為0000H~1FFFH。存取速度:該項指標一般用以下兩個參數中的一個來描述。①存取時間〔AccessTime,TA〕:是指從CPU給出有效的存儲地址啟動一次存儲器讀/寫操作,到操作完成所經歷的時間。具體地說,對一次讀操作的存取時間就是讀出時間,即從地址有效到數據輸出有效之間的時間;對于一次寫操作,存取時間就是寫入時間。②存取周期〔AccessCycle,TAC〕:是指連續兩次存儲器讀/寫操作之間所需要的最小時間間隔。對于讀操作,就是讀周期時間;對于寫操作,就是寫周期時間。因為在一次數據訪問后,芯片不可能無間歇地進入下一次訪問,所以存取周期TAC要略大于存取時間TA。表示上,該參數常表示為讀周期TRC或寫周期TWC,存取時間TAC是其統稱。6.型號是1K×4位的靜態RAM,應有多少條地址線多少條數據線10條地址線、4條數據線7.說明EPROM、PROM、ROM和Flash存儲器之間的主要區別。參考第5題。8.什么是“閃存〞它有哪些特點用于哪些場合參考第5題。9.簡述堆棧的作用與操作。所謂堆棧,是指在存儲器中開辟的一個區域,用來存放需要暫時保存的數據。〔1〕堆棧的作用用來存放斷點地址或保存臨時數據。在調用子程序和執行中斷服務程序的過程中,要保存斷點地址,有時還要保護現場。只有保存了斷點地址,才能在子程序或中斷服務程序執行后保證返回到主程序的斷點處,繼續執行主程序。斷點地址與現場信息是送入堆棧保存的。在返回主程序前,要把保存在堆棧中的現場信息送回對應的存放器,這稱為恢復現場?!?〕堆棧操作堆棧有兩種操作方式。將數據送入堆棧稱為推入操作,又稱為壓入操作,如壓入指令PUSH A把堆棧中內容取出來的操作稱為彈出操作,如彈出指令POP A執行把棧頂內容送回A的操作。10.簡述I/O接口的功能。接口電路是專門為解決CPU與外設之間的不匹配、不能協調工作而設置的,它處在總線和外設之間,一般應具有以下根本功能?!?〕對輸入/輸出數據進展緩沖、隔離和鎖存〔2〕對信號的形式和數據格式進展交換與匹配〔3〕提供信息相互交換的應答聯絡信號〔4〕根據尋址信息選擇相應的外設由此可見,I/O電路是外設和計算機之間傳送信息的交換器件,也有人稱它為界面,它使兩者之間能很好地協調工作,每一個外設都要通過接口電路才能和計算機相連。11.CPU處理I/O操作有幾種方式各自有什么特點和應用范圍CPU和外設之間的數據傳輸有4種方式,即無條件方式、查詢方式、中斷方式、直接存儲器存取方式〔DMA方式〕?!?〕無條件傳輸方式所謂無條件傳輸方式,是指CPU對外設接口的讀寫隨時都可以進展,不需要等待某種條件的滿足。無條件傳送方式也稱同步傳送方式,主要用于對簡單外設進展操作,或者外設的定時是固定的或的場合。對于這類外設,在任何時刻均以準備好數據或處于接收數據狀態,或者在某些固定時刻,它們處在數據就緒或準備接收狀態,因此程序可以不必檢查外設的狀態,而在需要進展輸入或輸出操作時,直接執行輸入/輸出指令。當輸入/輸出指令執行后,數據傳送便立即進展。這是一種最簡單的輸入/輸出傳送方式,所需要的硬件和軟件都非常小,一般用于控制CPU與低速I/O接口之間的數據交換。無條件傳輸方式的軟、硬件簡單,但一般的外設難以滿足上述條件,所以這種輸出方式用得較少,只用于一些簡單外設,如開關、數碼管顯示等?!?〕程序查詢傳輸方式程序查詢傳輸方式是指CPU在向外設傳遞數據前,首先查詢外設的狀態〔即條件〕,假設外設準備好則傳送,假設未準備好,CPU就等待。可見,接口電路除了有傳送數據的端口外,還有傳送狀態的端口。對于輸入過程,當外設將數據準備好時,則使接口的狀態端口中的“準備好〞標志置1;對于輸出過程,外設取走一個數據后,接口便將狀態端口中的對應標志置1,表示當前輸出存放器已經處于“空〞狀態,可以接收下一個數據。因此,對應條件傳送,一個數據傳送過程由3個環節組成:①CPU從接口中讀出狀態字。②CPU檢測狀態字的對應位是否滿足“就緒〞條件,如果不滿足,則回到前一步讀出狀態字。③如果狀態字說明外設已處于“就緒〞狀態,則傳送數據。程序查詢傳輸方式接口電路中除了數據端口外,還必須有傳送狀態的端口,同時CPU要不斷查詢外設狀態,占用大量CPU的時間,硬件比無條件傳輸方式復雜,并使用較多的端口地址。用查詢方式輸入數據時,在接口電路與外設間要交換數據、狀態和控制3種信息。查詢方式的缺點是CPU的利用受到影響,陷于等待和反復查詢,不能再做它用;而且,這種方法不能處理掉電、設備故障等突發事件?!?〕中斷傳輸方式在中斷傳送方式下,外設具有申請CPU服務的主動權,當輸入設備將數據準備好或者輸出設備可以接收數據時,便可以向CPU發中斷請求,使CPU暫時停下目前的工作而和外設進展一次數據傳輸,等輸入操作或者輸出操作完畢以后,CPU繼續進展原來的工作。即中斷傳送方式就是外設中斷CPU的工作,使CPU停頓執行當前程序,而去執行一個輸入/輸出程序,此程序稱為中斷處理子程序或中斷服務子程序。中斷服務子程序執行完后,CPU又回來執行原來的程序。采用中斷方式后,CPU平時可以執行主程序,只有當輸入設備將數據準備好了,或者輸出端口的數據緩沖器已空時,才向CPU發出中斷請求。CPU響應中斷后,暫停執行當前的程序,轉去執行管理外設的中斷服務程序。在中斷服務程序中,用輸入或輸出指令在CPU和外設之間進展一次數據交換。等輸入或輸出操作完成后,CPU又回去執行原來的程序?!?〕DMA傳輸方式DMA方式要利用系統的數據總線、地址總線和控制總線來傳送數據。原先這些總線是由CPU管理的,但當外設需要利用DMA方式進展數據傳送時,接口電路可以向CPU提出請求,要求CPU讓出對總線的控制權,用一種稱為DMA控制器的專用硬件接口電路來取代CPU臨時接收總線,控制外設和存儲器之間直接進展高速的數據傳送,而不要CPU進展干預。這種控制器能給出訪問內存所需要的地址信息,并能自動修改地址指針,也能設定和修改傳送的字節數,還能向存儲器和外設發出相應的讀/寫控制信號。在DMA傳送完畢后,它能釋放總線,把對總線的控制權交還給CPU。可見用DMA方式傳送數據時,不需要進展保護和恢復斷點及現場之類的額外操作,一旦進入DMA操作,就可直接在硬件的控制下快速完成一批數據的交換任務,數據傳送的速度根本取決于外設和存儲器的存取速度。12.什么是中斷什么是可屏蔽中斷什么是非屏蔽中斷CPU在什么條件下可以響應中斷所謂中斷,是指CPU正常運行程序時,由于微處理器內部事件或外設請求,引起CPU中止正在運行的程序,轉去執行請求中斷的外設〔或內部事件〕的中斷服務程序,中斷服務程序執行完畢,再返回被中止的程序。利用中斷可以防止不斷檢測外設狀態,提高CPU的效率??善帘沃袛嘤袝r也稱為直接中斷。屏蔽是指CPU可以不處理的中斷請求。這種屏蔽實際上是CPU的一種工作方式,可以通過軟件〔指令〕來設置,也就是可以通過指令,使CPU或者允許承受中斷請求,或者不承受中斷請求。具體的指令由CPU的指令系統來決定??善帘沃袛嗍亲畛R姷囊环N中斷方式,所有的微處理器都有這種中斷方式。對非屏蔽中斷來說,如果該中斷源申請了中斷,CPU是一定要處理的。CPU不可以也不能用軟件將該中斷屏蔽掉。一般一些緊急的情況,如掉電中斷申請,就可以安排為這種中斷方式,以保證緊急情況一定能得到處理。但并不是所有的微處理器的中斷系統都有這種中斷方式,MCS-51單片機的中斷系統就沒有非屏蔽中斷。一個完整的中斷處理的根本過程應包括:中斷請求、中斷優先權判別、中斷響應、中斷處理及中斷返回。如果提出中斷請求的中斷源優先權高,而且接口電路與CPU都中斷開放,CPU將響應中斷,自動執行以下工作:①保存斷點:中止正在執行的程序,并對斷點進展保護,即將斷點地址的值壓入堆棧保存,以便中斷服務程序執行完后能返回斷點處繼續執行程序。②轉入中斷服務程序:將中斷服務程序的人口地址送入PC,以轉到中斷服務程序。各中斷源要求服務的內容不同,所以要編制不同的中斷服務程序,它們有不同的入口地址。CPU首先要確定是哪一個中斷源在申請中斷,然后將對應的入口地址送入PC。13.DMA傳送的根本過程是什么為什么DMA方式可以加快數據在外設和存儲器之間的傳送參看第11題。14.什么是接口什么是端口一個接口電路是否可以有多個端口所謂接口,是指在兩臺計算機之間、計算機與外設之間、計算機內部各部件之間起連接作用的邏輯電路,是CPU與外界進展信息交換的中轉站。所謂端口,是指I/O接口〔包括芯片和控制卡〕中供CPU直接存取訪問的那些存放器或某些硬件特定電路。一個I/O接口總要包括假設干端口,除常見的數據端口、命令端口和狀態端口外,還有特殊用途的端口,如方式控制端口、操作結果端口和地址索引端口等。端口的多少及相應的功能完全取決于與I/O接口所關聯的I/O設備。15.CPU和外設之間傳輸的信息有哪幾類各有何特點計算機與外設間的這種交換數據、狀態和控制命令的過程統稱為通信〔Communication〕。通信過程就是數據傳輸的過程,在這個過程中要傳輸的信息有數據信息、狀態信息、控制信息?!?〕數據信息CPU和外設交換的根本信息就是數據,數據通常為8位或16位。數據信息可分為以下三種類型。具體可分為數字量、模擬量、開關量?!?〕狀態信息狀態信息反映了當前外設所處的工作狀態,是外設通過接口往CPU傳送的。對于輸入設備來說,通常用準備好〔READY〕信號來說明輸入的數據是否準備就緒;對于輸出設備來說,通常用忙〔BUSY〕信號表示輸出設備是否處于空閑,如為空閑,則可接收CPU送來的信息,否則CPU應等待?!?〕控制信息控制信息是CPU通過接口傳送給外設的,CPU通過發送控制信息控制外設的工作,如外設的啟動、停頓就是常見的控制信息。16.串行傳送的特點是什么數據傳送按位順序進展,最少只需一根傳輸線即可完成,本錢低但速度慢。計算機與外界的數據傳送大多數是串行的,其傳送的距離可以從幾米到幾千千米。17.串行通信和并行通信的主要區別是什么各有什么優缺點計算機與外設之間或計算機之間的信息交換或數據傳輸稱為通信〔Communication〕。根本的通信方式有兩種,一種是并行通信,另一種是串行通信?!?〕并行通信并行通信是指數據的各位同時進展傳送。在并行通信中,有多少位數據,就需要多少條傳輸線,因此傳送速度較快,即在一樣傳輸率的情況下,并行通信能夠提供高速、高信息率的傳輸。由于并行通信所需的傳輸線較多,如果傳輸距離增加,傳輸線的開銷會成為一個突出的問題,因而并行通信一般用于數據傳輸率要求較高、傳輸距離又比照短的場合?!?〕串行通信串行通信是指數據一位一位地按順序傳送。串行通信時,要傳送的數據或信息必須按一定的格式編碼,然后在單根線上,按一位接一位的先后順序進展傳送,發送完一個字符,再發送第二個。接收數據時,每次從單根線上一位接一位地接收信息,再把它們拼成一個字符,送給CPU做進一步處理。采用串行通信方式的另一個出發點是,有些外設如調制解調器〔Modem〕、鼠標等,本身需要用串行通信方式,因為這些設備是以串行方式存取數據的。第3章MCS51系列單片機硬件構造1.MCS51系列單片機內部有哪些主要的邏輯部件MCS51單片機是在一塊芯片上集成了CPU、RAM、ROM、定時器/計數器和多種I/O功能部件,具有了一臺微型計算機的根本構造,主要包括以下部件:一個8位的CPU、一個布爾處理機、一個片內振蕩器、128B的片內數據存儲器、4KB的片內程序存儲器〔8031無〕、外部數據存儲器和程序存儲器的尋址范圍為64KB、21個字節的專用存放器、4個8位并行I/O接口、一個全雙工的串行口、2個16位的定時器/計數器、5個中斷源、2個中斷優先級、111條指令、片內采用單總線構造。2.MCS51單片機設有4個8位并行端口,實際應用中8位數據信息由哪個端口傳送16位地址線假設何形成P3口有何功能8位數據信息由P0口傳送。P2口形成地址大高8位,P0口結果鎖存器形成地址的低8位。P3口除具有一般的輸入/輸出功能,還具有第2功能:P3.0RXD串行口輸入端P3.1TXD串行口輸出端P3.2外部中斷0請求輸入端,低電平有效P3.3外部中斷1請求輸入端,低電平有效P3.4T0定時器/計數器0計數脈沖輸入端P3.5T1定時器/計數器1計數脈沖輸入端P3.6外部數據存儲器及I/O接口寫選通信號輸出端,低電平有效P3.7外部數據存儲器及I/O接口讀選通信號輸出端,低電平有效3.MCS51單片機內部RAM區的功能構造假設何分配4組工作存放器使用時假設何選擇位尋址區域的字節范圍是多少MCS51單片機片內RAM共有128B,字節范圍為00H~7FH,可分為工作存放器區、位尋址區、數據緩沖區共3個區域。〔1〕工作存放器區00H~1FH單元為工作存放器區。工作存放器也稱通用存放器,用于臨時存放8位信息。工作存放器分成4組,每組都是8個存放器,用R0~R7來表示。程序中每次只用一組,其余各組不工作。使用哪一組存放器工作,由程序狀態字PSW中的PSW.3〔RS0〕和PSW.4〔RS1〕兩位來選擇,其對應關系如表所示。工作存放器組的選擇表工作存放器組的選擇表PSW.4(RS1)PSW.3(RS0)當前使用的工作存放器組
R0~R7000組〔00H~07H〕011組〔08H~0FH〕102組〔10H~17H〕113組〔18H~1FH〕該區域當不被用做工作存放器時,可以作為一般的RAM區使用?!?〕位尋址區20H~2FH單元是位尋址區。這16個單元〔共計16×8=128位〕的每一位都賦予了一個位地址,位地址范圍為00H~7FH。位地址區的每一位都可當做軟件觸發器,由程序直接進展位處理。通??梢园迅鞣N程序狀態標志、位控制變量存入位尋址區內。00H…07H08H…0FH10H…17H18H…1FH0組工作存放器區1組2組3組20H21H22H23H24H25H26H27H28H29H2AH2BH2CH2DH2EH2FH0706050403020100位尋址區0F0E0D0C0B0A090817161514131211101F1E1D1C1B1A191827262524232221202F2E2D2C2B2A292837363534333231303F3E3D3C3B3A393847464544434241404F4E4D4C4B4A494857565554535251505F5E5D5C5B5A595867666564636261606F6E6D6C6B6A696877767574737271707F7E7D7C7B7A797830H…7FH數據緩沖區該區域當不被用做位尋址區時,可以作為一般的RAM區使用?!?〕數據緩沖區30H~7FH是數據緩沖區,即用戶RAM,共80個單元。由于工作存放器區、位尋址區、數據緩沖區統一編址,使用同樣的指令訪問,這三個區的單元既有自己獨特的功能,又可統一調度使用。因此,前兩個區未使用的單元也可作為用戶RAM單元使用,使容量較小的片內RAM得以充分利用。4.特殊功能存放器中哪些存放器可以位尋址它們的字節地址是什么參看表3-6.5.簡述程序狀態字PSW中各位的含義。程序狀態字PSW是一個8位存放器,它保存指令執行結果的特征信息,為下一條指令或以后的指令的執行提供狀態條件。PSW中的各位一般是在指令執行過程中形成的,但也可以根據需要采用傳送指令加以改變。其各位定義如以以下列圖。①進位標志C〔PSW.7〕在執行某些算術運算類、邏輯運算類指令時,可被硬件或軟件置位或清零。它表示運算結果是否有進位或借位。如果在最高位有進位〔加法時〕或借位〔減法時〕,則C=1,否則C=0。②輔助進位〔或稱半進位〕標志位AC〔PSW.6〕它表示兩個8位數運算,低4位有無進〔借〕位的狀況。當低4位相加〔或相減〕時,假設D3位向D4位有進位〔或借位〕,則AC=1,否則AC=0。在BCD碼運算的十進制調整中要用到該標志。③用戶自定義標志位F0〔PSW.5〕用戶可根據自己的需要為F0賦予一定的含義,通過軟件置位或清零,并根據F0=1或0來決定程序的執行方式,或系統某一種工作狀態。④工作存放器組選擇位RS1、RS0〔PSW.4、PSW.3〕可用軟件置位或清零,用于選定當前使用的4個工作存放器組中的某一組。⑤溢出標志位OV〔PSW.2〕做加法或減法時由硬件置位或清零,以指示運算結果是否溢出。在帶符號數加減運算中,OV=1表示加減運算超出了累加器所能表示的數值范圍〔–128~+127〕,即產生了溢出,因此運算結果是錯誤的。OV=0表示運算正確,即無溢出產生。執行乘法指令MULAB也會影響OV標志,當積大于255時,OV=1,否則OV=0;執行除法指令DIVAB也會影響OV標志,如B中所存放的除數為0,則OV=1,否則0V=0。⑥奇偶標志位P〔PSW.0〕在執行指令后,單片機根據累加器A中1的個數的奇偶自動將該標志置位或清零。假設A中1的個數為奇數,則P=1,否則P=0。該標志對串行通信的數據傳輸非常有用,通過奇偶校驗可檢驗傳輸的可靠性。6.簡述MCS51單片機程序存儲器的幾個特殊入口地址的含義。0000H:程序入口地址0003H:外部中斷0中斷服務程序入口地址000BH:定時器/計數器0溢出中斷服務程序入口地址0013H:外部中斷1中斷服務程序入口地址001BH:定時器/計數器1溢出中斷服務程序入口地址0023H:串行口發送/接收中斷服務程序入口地址7.位地址7FH與字節地址7FH有何區別位地址7FH具體在內存中的什么位置二者存儲的數據位數不一樣。位地址7FH存放一位二進制數,字節地址7FH存放8為二進制數。位地址7FH具體在內存中字節地址為20H的最高位上。8.復位的作用是什么復位后單片機的狀態假設何計算機在啟動運行時都需要復位,這就使CPU和系統中的其他部件都處于一個確定的初始狀態,并從這個狀態開場工作。單片機的復位都靠外部電路實現。MCS51單片機有一個復位引腳RST,高電平有效。它是施密特觸發輸入〔對于CMOS單片機,RST引腳的內部有一個拉低電阻〕,當振蕩器起振后,該引腳上出現兩個機器周期〔即24個時鐘周期〕以上的高電平,使器件復位,只要RST保持高電平,MCS51便保持復位狀態。此時ALE、PSEN、P0、P1、P2、P3口都輸出高電平。RST變為低電平,退出復位狀態,CPU從初始狀態開場工作。復位操作不影響片內RAM的內容,復位以后內部存放器的初始狀態如表3-7所示。9.試分別說明程序計數器PC和堆棧指針SP的作用。復位后PC和SP各為何值程序計數器PC是一個16位專用存放器,其內容表示下一條要執行的指令的地址。復位后為0000H。MCS51單片機的堆棧是在片內RAM中開辟的一個專用區。堆棧指針SP是一個8位專用存放器,用來存放棧頂的地址。進棧時,SP自動加1,將數據壓入SP所指定的地址單元;出棧時,將SP所指示的地址單元中的數據彈出,然后SP自動減1。因此SP總是指向棧頂。復位后為07H。10.MCS51單片機設置4組工作存放器,開機復位后,CPU使用的是哪組存放器它們的地址假設何CPU假設何改變當前工作存放器組第0組。字節地址為00H~07H。通過PSW的RS1、RS0來改變。工作存放器組的選擇表工作存放器組的選擇表PSW.4(RS1)PSW.3(RS0)當前使用的工作存放器組
R0~R7000組〔00H~07H〕011組〔08H~0FH〕102組〔10H~17H〕113組〔18H~1FH〕11.什么是時鐘周期、機器周期和指令周期當外部的振蕩頻率是8MHz時,8051單片機的機器周期為多少MCS51單片機的時序由下面4種周期構成。〔1〕振蕩周期振蕩周期是指為單片機提供定時信號的振蕩源的周期?!?〕狀態周期〔時鐘周期〕兩個振蕩周期為一個狀態周期,用S表示。兩個振蕩周期作為兩個節拍分別稱為節拍P1和節拍P2。在狀態周期的前半周期P1有效時,通常完成算術邏輯運算;在后半周期P2有效時,一般進展內部存放器之間的傳輸?!?〕機器周期CPU執行一條指令的過程可以劃分為假設干階段,每一階段完成某一項根本操作,如取指令、存儲器讀/寫等。通常把完成一個根本操作所需要的時間稱為機器周期?!?〕指令周期指令周期是指執行一條指令所占用的全部時間,它以機器周期為單位。MCS51系列單片機除乘法、除法指令是4機器周期指令外,其余都是單周期指令和雙周期指令。假設用12MHz晶體振蕩器〔晶振〕,則單周期指令和雙周期指令的指令周期時間分別是1μs和2μs,乘法和除法指令為4μs。通過上面的分析,我們可以看出,外部晶振的二分頻是MCS51單片機的內部時鐘周期,6個時鐘周期構成了單片機的機器周期。如果單片機的外部晶振是8MHz,則其內部的機器周期是1.5μs。12.PSW=10H,則工作存放器R0的地址是10H,R4的地址是14H。13.MCS51單片機復位后,程序計數器PC=0000H,堆棧指針SP=07H。14.MCS51單片機內部RAM的存放器區共有32個單元,分為4組存放器,每組8單元。15.MCS51單片機的4個I/O接口的作用是什么三總線是假設何分配的為什么說能作為I/O使用的一般只有P1口P0口形成數據總線;P2口形成地址的高8位,P0口經過鎖存器形成地址的低8位;P3口形成控制總線。在具有外部擴展的時間,需要用到數據總線、地址總線和控制總線,而三總線占用了P0、P2、P3口,可以單獨使用的只有P1口。第4章MCS51系列單片機指令系統1.訪問外部數據存儲器和程序存儲器可以用哪些指令來實現舉例說明。訪問外部數據存儲器:MOVX A,@DPTRMOVX @DPTR,AMOVX A,@RiMOVX @Ri,A訪問程序存儲器:MOVC A,@A+DPTRMOVC A,@A+PC2.設堆棧指針SP中的內容為60H,內部RAM中30H和31H單元的內容分別為24H和10H,執行以下程序段后,61H、62H、30H、31H、DPTR及SP的內容將有何變化PUSH 30HPUSH 31HPOP DPLPOP DPHMOV 0H,#00HMOV 31H,#0FFH(61H)=24H(62H)=10H(30H)=00H(31H)=0FFH(DPTR)=2410H(SP)=60H3.設(A)=40H,(R1)=23H,(40H)=05H。執行以下兩條指令后,累加器A和R1以及內部RAM中40H單元的內容各為何值XCH A,R1XCHD A,@R1(A)=25H(R1)=40H(40H)=03H4.設(A)=01010101B,(R5)=10101010B,分別寫出執行ANLA,R5;ORLA,R5;XRLA,R5指令后的結果。00000000B11111111B11111111B5.簡述轉移指令AJMPaddr11,SJMPrel,LJMPaddr16及JMP@A+DPTR的應用。AJMPaddr11:2K范圍內的轉移;SJMPrel:256字節復位內的轉移;LJMPaddr16:64K范圍內的轉移;JMP@A+DPTR:在某一地址開場的256字節范圍內的轉移。6.試用以下4種方式編程,將立即數0EFH送入內部RAM的40H單元中?!?〕用立即尋址;〔2〕用直接尋址;〔3〕用存放器尋址;〔4〕用存放器間接尋址(1)MOV40H,#0EFH目的操作數立即尋址(2)MOV40H,#0EFH源操作數直接尋址(3)MOVR0,#0EFHMOV40H,,R0源操作數存放器尋址(4)MOVR0,#40HMOV@R0,#0EFH目的操作數存放器間接尋址7.寫出實現以下要求的指令或程序片段?!?〕將內部RAM20H單元內容與累加器A內容相加,結果存放在20H單元中?!?〕將內部RAM30H單元內容與內部RAM31H單元內容相加,結果存放到內部RAM31H單元中?!?〕將內部RAM20H單元內容傳送到外部RAM2000H單元中?!?〕使內部RAM20H單元的D7和D3位清零,其他位保持不變?!?〕使內部RAM20H單元的D7和D3位置1,D5位清零,其他位保持不變。〔6〕使內部RAM20H單元的D7和D3位置1,D5位取反,其他位保持不變。(1)ADD A,#20HMOV 20H,A(2) MOV A,30HADD A,31HMOV 31H,A(3) MOV A,20HMOV DPTR,#2000HMOVX @DPTR,A(4) CLR 03H CLR 07H 或: ANL 20H,#01110111B(5) SETB 03HSETB 07HCLR 05H或:ORL 20H,#10001000BANL 20H,#11011111B(6) SETB 03HSETB 07HCPL 05H或:ORL 20H,#10001000BXRL 20H,#00100000B8.試用三種方法實現累加器A和存放器B的內容交換。(1) MOV R0,AMOV A,BMOV B,R0(2) PUSH APUSH BPOP APOP B(3) MOV R0,BXCH A,R0MOV B,R09.試分析以下程序段執行后,(A)=,(30H)=MOV 30H,#0A4HMOV A,#0D6HMOV R0,#30HMOV R2,#5EHANL A,R2ORL A,@R0SWAP ACPL AXRL A,#0FEHORL 30H,A(A)=6EH(30H)=0EFH10.下述程序執行后,(SP)=,(A)=,(B)=ORG 2000HMOV SP,#40HMOV A,#30HLCALL SUBRADD A,#10HMOV B,AL1: SJMP L1SUBR: MOV DPTR,#200AHPUSH DPLPUSH DPHRET(SP)=42H(A)=30H(B)=00H11.設(R0)=20H,(R1)=25H,(20H)=80H,(21H)=90H,(22H)=0A0H,(25H)=0A0H,(26H)=6FH,(27H)=76H。以下程序執行后,結果假設何CLR CMOV R2,#3LOOP: MOV A,@R0ADDC A,@R1MOV @R0,AINC R0INC R1DJNZ R2,LOOPJNC NEXTMOV @R0,#01HSJMP $NEXT: DEC R0SJMP $(R0)=22H,(R1)=24H,(20H)=10H,(21H)=31H,(22H)=0A1H,(25H)=0A0H,(26H)=6FH,(27H)=76H。12.設片內RAM(30H)=0EH,執行下面的程序后,(A)=,指出該程序完成的功能。MOV R0,#30HMOV A,@R0RL AMOV B,ARL ARL AADD A,B=8CH功能:將30H中的內容*10操作,結果在累加器A中。第5章MCS51系列單片機匯編語言程序設計1.編程將片內RAM30H~39H單元中的內容送到以3000H為首的存儲區中。MOV R0,#30HMOV DPTR,#3000HMOV R7,#10L1: MOV A,@R0MOVX @DPTR,AINC R0INC DPTRDJNZ R7,L1RET2.片內RAM60H開場存放20個數據,試統計正數、負數及為零的數據個數,并將結果分別存在50H、51H、52H單元中。MOV 50H,#0 MOV 51H,#0 MOV 52H,#0 MOVR7,#20MOV R0,#60HL3: MOV A,@R0 JZ L1 JB ACC.7,L2 INC 50H SJMP LEND L2: INC 51H SJMP LEND L1: INC 52H LEND: INC R0 DJNZ R7,L3RET3.設10次采樣值依次放在片內RAM50H~59H的連續單元中,試編程去掉一個最大值、去掉一個最小值,求其余8個數的平均值,結果存放在60H中。 MOV R0,#50H ;最大值 MOV A,@R0 MOV R7,#9 INC R0 L1: CLR C MOV B,A SUBB A,@R0 MOV A,B JNC L2 XCH A,@R0 L2: INC R0 DJNZ R7,L1 MOV R0,#51H ;最小值 MOV A,@R0 MOV R7,#8 INC R0 L1: CLR C MOV B,A SUBB A,@R0 MOV A,B JN L4 XCH A,@R0 L4: INC R0 DJNZ R7,L3MOV R3,#0 ; 求和 MOV R4,#0 MOV R7,#8 MOV R0,#52H L5: MOV A,R4 ADD A,@R0 MOV R4,A MOV A,R3 ADDC A,#0 MOV R3,A INC R0 DJNZ R7,L5 MOV A,R4 ;平均值 SWAP A RL A MOV B,A MOV A,R3 RR A RR A RR A ANL A,#00011111B ORL A,B MOV 60H,A RET4.編寫程序將R4R5R6中的3個字節數據對半分解成6個字節,存入顯示緩沖區〔DISMEM0~DISMEM5〕。 MOV A,R6 LCALL CLMOV DISMEM0,R0 MOV DISMEM1,R1 MOV A,R5 LCALL CL MOV DISMEM2,R0 MOV DISMEM3,R1 MOV A,R4 LCALL CL MOV DISMEM4,R0 MOV DISMEM5,R1 RET CL: MOV B,A ANL A,#0FH MOV R0,A MOV A,B ANL A,#0F0H SWAP A MOV R1,A RET5.試編程把以2000H為首地址的連續10個單元的內容按升序排列,存放到以3000H為首地址的存儲區中。 MOV DPTR,#2000H ;讀到片內30H開場的單元 MOV R0,#30H MOV R7,#10 L1: MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R7,L1 START: CLR 00H ;排序 CLR C MOV R7,#9 MOV R0,#30H MOV A,@R0 L3: INC R0 MOV R2,A SUBB A,@R0 MOV A,R2 JC NEXT SETB 00H XCH A,@R0 DEC R0 MOV @R0,A INC R0 NEXT: MOV A,@R0 DJNZ R7,L3 JB 00H,START MOV DPTR,#3000H ;送到片外3000H開場的單元 MOV R0,#20H MOV R7,#10 L2: MOV A,@R0 MOVX @DPTR,A INC DPTR INC R0 DJNZ R7,L2 RET6.設片內30H單元開場,連續存放2個字節二進制數,試分別將其轉換為BCD碼,并以壓縮BCD碼格式連續存放在以60H為首地址的存儲區中,低位字節存放在低地址單元中。DBCD: MOV R0,30H MOV A,R0 MOV R6,A MOV R1,60H MOV A,R1 MOV R7,A MOV R2,#2 INC R2 CLR A BB0: MOV @R1,A INC R1 DJNZ R2,BB0 MOV R3,#16 BB3: MOV A,R6 MOV R0,A MOV R2,#2 CLR C BB1: MOV A,@R0 RLC A MOV @R0,A INC R0 DJNZ R2,BB1 MOV R2,#2 INC R2 MOV A,R7 MOV R1,ABB2: MOV A,@R1 ADDC A,@R1 DA A MOV @R1,A INC R1 DJNZ R2,BB2 DJNZ R3,BB3 RET 7.設片內RAM中從20H開場的單元,連續存放10個非壓縮BCD碼,試將其轉換為ASCII碼,存放到片內50H開場的單元中。 MOV R0,#20H MOV R1,#50H MOV R7,#10 L1: MOV A,@R0 ADD A,#30H MOV @R1,A INC R0 INC R1 DJNZ R7,L1 RET8.從20H單元開場有一無符號數據塊,其長度在20H單元。求出數據塊中的最小值,并存入21H單元。參看第3題。9.片外RAM從2000H單元開場存有10個單字節無符號數,找出最大值存入片外RAM3000H單元,試編寫程序。參看第3題。10.從片外RAM2000H單元開場存有20個有符號數,要求把它們傳送到片外RAM3000H開場的單元,但負數不傳送,試編寫程序。 MOV DPTR,#2000H MOV R0,#20H MOV R7,#20 L1: MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R7,L1 MOV DPTR,#3000H MOVR0,#20H MOV R7,#20 L2: MOV A,@R0 JB ACC.7,L3 MOVX @DPTR,A L3: INC DPTR INC R0 DJNZ R7,L2 RET11.設在片外RAM2000H~2004H單元存有5個壓縮的BCD數,試編程將它們轉變為ASCII碼,存放到以2005H為首地址的存儲區中。 MOV DPTR,#2000H MOV R0,#20H MOV R7,#5 L1: MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R7,L1 MOV A,20H LCALL CLMOV 30H,R0 MOV 31H,R1 MOV A,21H LCALL CL MOV 32H,R0 MOV 33H,R1 MOV A,22H LCALL CL MOV 34H,R0 MOV 35H,R1 MOV A,23H LCALL CL MOV 36H,R0 MOV 37H,R1 MOV A,24H LCALL CL MOV 38H,R0 MOV 39H,R1 MOV R0,#30H MOV DPTR,#2005H MOV R7,#10 L2: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,L2 RET12.在片外RAM2000H、2001H和3000H、3001H中分別存放兩個字數據〔高8位在偶地址〕,試比照兩個數的大小,把大數存放在4000H、4001H單元中。 MOV DPTR,#2000H MOVX A,@DPTR MOV 20H,A INC DPTR MOVX A,@DPTR MOV 21H,A MOV DPTR,#3000H MOVX A,@DPTR MOV 30H,A INC DPTR MOVX A,@DPTR MOV 31H,A CLR C MOV A,21H SUBB A,31H MOV A,20H SUBB A,30H JNC L1 MOV A,20H MOV B,21H SJMP L2 L1: MOV A,30H MOV B,31HL2: MOV DPTR,#4000HMOVX @DPTR,A INC DPTR
MOV A,B MOVX @DPTR,A RET第6章MCS51系列單片機中斷系統與定時器/計數器1.什么是中斷源MCS51單片機有哪些中斷源各有什么特點能引起中斷的原因稱為中斷源。MCS51單片機的5個中斷源分為兩種類型:一類是外部中斷源,包括和;另一類是內部中斷源,包括兩個定時器/計數器〔T0和T1〕的溢出中斷和串行口的發送/接收中斷?!?〕外部中斷MCS51單片機提供了兩個外部中斷請求和,它們的中斷請求信號有效方式分為電平觸發和脈沖觸發兩種。電平方式是低電平有效,脈沖方式為負跳變觸發有效。CPU在每個機器周期的S5P2檢測和上的信號。對于電平方式,只要檢測到低電平信號即為有效申請;對于脈沖方式,則需要比照兩次檢測到的信號,才能確定中斷請求信號是否有效。中斷請求信號上下電平的狀態都應至少維持一個機器周期,以確保電平變化能被單片機檢測到。〔2〕內部中斷MCS51單片機內部有TF0、TF1、TI、RI,分別為定時器/計數器溢出中斷和串行口的發送/接收中斷的中斷源。當中斷源有中斷請求時,相應的中斷源的中斷請求標志置位。外部中斷0、外部中斷1、定時器/計數器0溢出中斷、定時器/計數器1溢出中斷和串行口的發送/接收中斷的中斷請求標志分別為IE0、IE1、TF0、TF1、TI或RI。IE0、IE1、TF0、TF1在特殊功能存放器TCON中,TI或RI在特殊功能存放器SCON中。2.試編寫外部中斷1為跳沿觸發方式的中斷初始化程序。 SETB IT1 SETB EA SETB EX13.試編寫一段對中斷系統初始化的程序,允許外部中斷0、外部中斷1、定時器/計數器T0溢出中斷、串行口中斷,且使定時器/計數器T0溢出中斷為高優先級中斷。 SETB EASETB EX0 SETB EX1 SETB ET0 SETB ES SETB PT04.在MCS51單片機中,外部中斷有哪兩種觸發方式假設何加以區分MCS51單片機提供了兩個外部中斷請求和,它們的中斷請求信號有效方式分為電平觸發和脈沖觸發兩種。電平方式是低電平有效,脈沖方式為負跳變觸發有效。CPU在每個機器周期的S5P2檢測和上的信號。對于電平方式,只要檢測到低電平信號即為有效申請;對于脈沖方式,則需要比照兩次檢測到的信號,才能確定中斷請求信號是否有效。中斷請求信號上下電平的狀態都應至少維持一個機器周期,以確保電平變化能被單片機檢測到。5.MCS51單片機能提供幾個中斷優先級各個中斷源優先級假設何確定在同一優先級中各個中斷源的優先級假設何確定兩個中斷優先級。通過IP存放器進展確定。在同一優先級中,各個中斷源的優先級:外部中斷0、定時器/計數器T0、外部中斷1、定時器/計數器T1、串行口。6.中斷允許存放器IE各位的定義是什么IE是中斷允許控制存放器,CPU對中斷系統的所有中斷及某個中斷源的“允許〞與“制止〞都是由它來控制的。IE中斷允許存放器格式如下:存放器中用于控制中斷的共有6位,實現中斷管理,其作用如下:EA為中斷允許總控制位。EA=1時,CPU開放中斷;EA=0時,CPU屏蔽所有中斷請求。ES、ET1、EX1、ET0、EX0為對應的串行口中斷、定時器/計數器1中斷、外部中斷1中斷、定時器/計數器0中斷、外部中斷0中斷的中斷允許位。對應位為1時,允許其中斷,對應位為0時,制止其中斷。7.為何要在程序的首地址安排一條跳轉到主程序的指令在響應中斷過程中為什么要保護現場應假設何保護因為主程序的入口地址是0000H單元,而0003H單元式外部中斷0的中斷服務程序入口地址,主程序需要躲開該地址。為了使在中斷服務程序響應完畢后能正確地返回中斷的地方。在響應中斷的時間,CPU自動地將要返回的地址壓入堆棧保護。8.MCS51單片機假設要把外部中斷源擴大為6個,可采用哪些方法假設何確定它們的優先級可以由兩種方法:參看例題6-4和例題6-5.對于第一種方法,在查詢時先查詢那個中斷源,那個中斷源的優先級最高。對于第二種方法,先判斷哪個中斷源,哪個中斷源的中斷優先級高。9.子程序和中斷服務程序有何異同子程序返回指令RET和中斷返回指令RETI能相互替代嗎子程序是有固定的調用位置的,而中斷服務程序沒有固定的調用位置。不能用RET指令代替RETI指令,因為用RET指令雖然也能控制PC返回原來中斷的地方,但RET指令沒有清零中斷優先級狀態觸發器的功能,中斷控制系統也會認為中斷仍在進展,其后果是同級的中斷請求將不被響應。所以,中斷服務程序完畢時必須使用RETI指令。10.MCS51單片機各中斷標志是假設何產生的又假設何去除在中斷請求被響應前,中斷源發出的中斷請求是由CPU鎖存在特殊功能存放器TCON和SCON的相應中斷標志位中的。一旦某個中斷請求得到響應,CPU必須把它的相應標志位復位成0狀態,否則MCS51單片機就會因中斷未能得到及時撤除而重復響應同一中斷請求,這是絕對不允許的。MCS51單片機的51子系列有5個中斷源,但實際上只分屬于三種中斷類型。這三種類型是:外部中斷、定時器/計數器溢出中斷和串行口中斷。對于這三種中斷類型的中斷請求,其撤除方法是不同的?!?〕定時器/計數器溢出中斷請求的撤除TF0和TF1是定時器/計數器溢出中斷標志位,它們因定時器/計數器溢出中斷請求的輸入而置位,因定時器/計數器溢出中斷得到響應而自動復位成0狀態。因此定時器/計數器溢出中斷源的中斷請求是自動撤除的,用戶根本不必專門為它們撤除。〔2〕串行口中斷請求的撤除TI和RI是串行口中斷的標志位,中斷系統不能自動將它們撤除,這是因為MCS51進入串行口中斷服務程序后常需要對它們進展檢測,以測定串行口發生了接收中斷還是發送中斷。為了防止CPU再次響應這類中斷,用戶應在中斷服務程序的適當位置處通過指令將它們撤除:CLR TI ;撤除發送中斷CLR RI ;撤除接收中斷〔3〕外部中斷的撤除外部中斷請求有兩種觸發方式:電平觸發和脈沖觸發。對于這兩種不同的中斷觸發方式,MCS51單片機撤除它們的中斷請求的方法是不一樣的。在脈沖觸發方式下,外部中斷標志IE0和IE1是依靠CPU兩次檢測和上的觸發電平狀態而設置的。因此,芯片設計者使CPU在響應中斷時自動復位IE0或IE1,就可撤除或上的中斷請求,因為外部中斷源在中斷服務程序時是不可能再在或上產生負邊沿而使相應的中斷標志IE0或IE1置位的。在電平觸發方式下,外部中斷標志IE0和IE1是依靠CPU檢測和上的低電平而置位的。盡管CPU響應中斷時相應中斷標志IE0或IE1,能自動復位成“0〞狀態,但假設外部中斷源不能及時撤除它在或上的低電平,就會再次使已經變“0〞的中斷標志IE0或IE1置位,這是絕對不允許的。因此電平觸發型外部中斷請求的撤除必須使或上的低電平隨著其中斷被CPU響應而變為高電平。一種可供采用的電平型外部中斷的撤除電路如以以下列圖。=由圖可見,當外部中斷源產生中斷請求時,D觸發器復位成“0〞狀態,Q端的低電平被送到,該低電平被8051檢測后就使中斷標志IE0置1。8051響應上的中斷請求可轉入中斷服務程序執行,故可以在中斷服務程序開頭安排如下程序來使上的電平變高:=INSVR:SETB P1.0 CLR P1.0 CLR IE0 ··· END8051執行上述程序就可在P1.0上產生一個寬度為兩個機器周期的負脈沖。在該負脈沖作用下,D觸發器被置位成1狀態,上的電平也因此而變高,從而撤除了其上的中斷請求。11.設MCS51單片機時鐘為12MHz,利用定時器T0編程令P1.0引腳輸出2ms的矩形波程序,要求占空系數為1:2〔高電平時間短〕。 ORG 0000H LJMP MAIN ORG 000BH LJMP T0INT ORG 0030H MAIN: MOV SP,#60H MOV R7,#0 MOV TMOD,#01H ;初始化 MOV TH0,#0FDH ;定時666微妙 MOV TL0,#66H SETB EA SETB ET0 SETB TR0 L1: SJMP L1;中斷服務程序 T0INT:MOV TH0,#0FDH ;重載初始值 MOV TL0,#66H INC R7 CJNE R7,#1,LL1 CLR P1.0 SJMP LLEND LL1: CJNE R7,#3,LLEND SETB P1.0 MOV R7,#00H LLEND:RETI12.如果MCS51單片機系統的晶振頻率為12MHz,分別指出定時器/計數器方式1和方式2的最長定時時間。方式1:65536微妙;方式2:256微妙13.MCS51單片機P1端口上,經驅動接有8支發光二極管,假設外部晶振頻率為6MHz,試編寫程序,使這8支發光管每隔2s循環發光〔要求用T1定時〕。 ORG 0000H LJMP MAIN ORG 001BH LJMP T1INT ORG 0030HMAIN: MOV SP,#70H MOV TMOD,#10H ;T1方式1 MOV TH1,#3CH ;定時100ms MOVTL1,#0B0H MOV A,#11111110B MOV R7,#20 ;100ms*20=2S SETB EA SETB ET1 SETB TR1 SJMP $ T1INT: MOV TH1,#3CH MOV TL1,#0B0H DJNZ R7,L1 MOV R7,#20 MOV P1,A RL A L1: RETI14.設MCS51單片機的晶振頻率為12MHz,要求在P1.0輸出周期是200ms的方波,試編寫程序。 ORG 0000H LJMP MAIN ORG 001BH LJMP T1INT ORG 0030HMAIN: MOV SP,#70H MOV TMOD,#10H ;T1方式1 MOV TH1,#3CH ;定時50ms MOV TL1,#0B0H MOV R7,#2 ;50ms*2=100ms SETB EA SETB ET1 SETB TR1 SJMP $ T1INT: MOV TH1,#3CH MOV TL1,#0B0H DJNZ R7,L1 MOV R7,#2 CPL P1.0 L1: RETI15.每隔1s讀一次P1.0,如果所讀的狀態為“1〞,則將片內RAM10H單元的內容加1;如果所讀的狀態為“0〞,則將片內RAM11H單元的內容加1。設單片機的晶振頻率為12MHz,試編寫程序。 ORG 0000H LJMP MAIN ORG 001BH LJMP T1INT ORG 0030HMAIN: MOV SP,#70H MOV TMOD,#10H ;T1方式1 MOV TH1,#3CH ;定時50ms MOV TL1,#0B0H MOV R7,#20 ;50ms*20=1s MOV 10H,#0 MOV 11H,#0 SETB EA SETB ET1 SETB TR1 SJMP $ T1INT: MOV TH1,#3CH MOV TL1,#0B0H DJNZ R7,L1 MOV R7,#20 SETB P1.0 MOV C,P1.0 JNC L2 INC 10H SJMP L1 L2: INC 11H L1: RETI END第7章MCS51系列單片機的串行口1.假設異步通信,每個字符由11位組成,串行口每秒傳送250個字符,問波特率是多少2750位/秒=2750波特2.設串行異步通信的傳送速率為2400波特,傳送的是帶奇偶校驗的ASCII碼字符,每個字符包含10位〔1個起始位,7個數據位,1個奇偶校驗位,1個停頓位〕,試編程初始化程序。設定串行口位方式1. MOV SCON,#40H MOV PCON,#80H MOV TMOD,#20H MOV TH1,#0F4H MOV TL1,#0F4H SETB TR13.MCS51單片機的串行口控制存放器SCON的SM2、TB8、RB8有何作用(1)SM2是多機通信控制位因多機通信是在方式2和方式3下進展的,所以SM2位主要用于方式2和方式3。當串行口以方式2或方式3接收數據時,如SM2=1,則只有當接收到的第9位數據〔RB8〕為“1〞時,才將接收到的前8位數據送入SBUF,并置位RI產生中斷請求;否則,將接收到的前8位數據丟棄。而當SM2=0時,不管接收到的第9位數據是“0〞還是“1〞,都將前8位數據裝入SBUF中,并產生中斷請求。在方式1時,假設SM2=1,則只有接收到有效停頓位時,RI才置1,以便接收下一幀數據。在方式0時,SM2必須為0。(2)TB8是發送數據的第9位在方式2、3時,其值由用戶通過軟件設置。在雙機通信時,TB8一般作為奇偶校驗位使用;在多機通信中,常以TB8位的狀態表示主機發送的是地址幀還是數據幀,且一般約定:TB8=0為數據幀,TB8=1為地址幀。(3)RB8是接收數據的第9位在方式2、3時,RB8存放接收到的第9位數據,它代表接收到的數據的特征:可能是奇偶校驗位,也可能是地址/數據的標志位。4.設外部晶振頻率為6MHz,試編寫一段對串行口的初始化程序,使之工作在方式1,波特率為1200b/s;并用查詢串行口狀態的方式,讀出接收緩沖器的數據并回送到發送緩沖器。MOV SCON,#50H MOV PCON,#80H MOV TMOD,#20H MOV TH1,#0E5H MOV TL1,#0E5H CLR ES SETB TR1 JBN RI,$ MOV A,SBUF CLR RI5.設外部晶頻率振為11.0592MHz,串行口工作在方式1,波特率為4800b/s。編寫用T1作為波特率發生器的方式字并計算T1的計數初值。TMOD:20HTH1=TL1=0FAH6.設計一個單片機的雙機通信系統,串行口工作在方式1,編寫通信程序將甲機內部RAM30H~3FH存儲區的數據塊通過串行口傳送到乙機內部RAM40H~4FH存儲區中。甲機發送〔采用查詢方式〕: MOV SCON,#80H ;設置工作方式2 MOV PCON,#00H ;置SMOD=0,波特率不加倍 MOV R0,#30H ;數據區地址指針 MOV R2,#10H ;數據長度LOOP: MOV A,@R0 ;取發送數據 MOV C,P ;奇偶位送TB8 MOV TB8,C MOV SBUF,A ;送串行口并開場發送數據WAIT: JBC TI,NEXT ;檢測是否發送完畢并清TI SJMP WAIT NEXT: INC R0 ;修改發送數據地址指針 DJNZ R2,LOOP RET乙機接收〔采用查詢方式〕: MOV SCON,#90H ;工作方式2,并允許接收 MOV PCON,#00H ;置SMOD=0 MOV R0,#40H ;置數據區地址指針 MOV R2,#10H ;等待接收數據長度LOOP: JBC RI,READ ;等待接收數據并清RI SJMP LOOPREAD: MOV A,SBUF ;讀一幀數據 MOV C,P JNC LP0 ;C不為1轉LP0 JNB RB8,ERR ;RB8=0,即RB8不為P轉ERR AJMP LP1LP0: JB RB8,ERR ;RB8=1,即RB8不為P轉ERRLP1: MOV @R0,A ;RB8=P,接收一幀數據 INC R0 DJNZ R2,LOOP RETERR: … ;出錯處理程序第8章MCS51系列單片機系統擴展技術1.MCS51單片機擴展系統中,程序存儲器和數據存儲器共用16位地址線和8位數據線,為什么兩個存儲空間不會發生沖突因為是使用不同的控制信號。程序存儲器的讀控制使用/PSEN信號;數據存儲器的讀、寫控制室使用/RD、/WR。2.試用Intel2764,6264為MCS51單片機設計一個存儲器系統,它具有8KBEPROM〔地址由0000H~1FFFH〕和16KB的數據存儲器〔地址為2000H~5FFFH〕。要求繪出該存儲器系統的硬件連接圖,并指出每片芯片的地址空間。使用一片Intel2764,兩片RAM6264.參看圖8-22,采用譯碼器譯碼。2764可以不用譯碼,其片選信號直接接地,其地址為0000H~1FFFH,讀控制接/PSEN;RAM6264的片選分別接74LS138的/Y1、/Y2,其地址分別為:2000H~3FFFH、4000H~5FFFH,其讀。寫控制分別接/RD、/WR。3.在一個8031應用系統中擴展一片2764、一片8255A和一片6264。試畫出系統框圖,并指出所擴展的各個芯片的地址范圍。參看圖8-20、8-23、8-29.將圖8-23中的/CE1接74LS138譯碼器的/Y0端。2764的地址空間范圍:0000H~1FFFH6464的地址空間范圍:0000H~1FFFH82552A的口地址:PA口0FFFCH、PB口0FFFDH、PC口0FFFEH、控制口0FFF
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024四川雅安市市屬國有企業高級管理人員8人筆試參考題庫附帶答案詳解
- 初中物理人教版(2024)八年級上冊(2024)第3節 汽化和液化教案配套
- 發票勾選平臺培訓
- 2024華電江西發電有限公司所屬企業面向系統內外公開招聘4人筆試參考題庫附帶答案詳解
- 2024北京飛機維修工程有限公司市場化人才招聘筆試參考題庫附帶答案詳解
- 人教部編版 (五四制)一年級下冊13 荷葉圓圓教案設計
- 冀教版一年級下冊五 100以內的加法和減法(一)教案設計
- 人音版八年級上冊老鼠娶親教學設計
- 服裝入門培訓課件
- 三年級英語上冊 Unit 1 School and Numbers Lesson 2 Boy Girl and Teacher教學設計 冀教版(三起)
- 青島商場分級管理制度
- 2024年河南職業技術學院單招職業適應性考試題庫必考題
- (二模)新疆維吾爾自治區2025年普通高考第二次適應性檢測 英語試卷(含答案詳解)
- 征信系統AI應用行業深度調研及發展戰略咨詢報告
- 廣東省歷年中考作文題(2000-2023)
- 書法藝術療愈在書法教育中的實踐與應用研究
- 射頻電路封裝設計與工藝實現方法研究
- 線路工初級測試題含答案
- 體檢中心質量控制指南
- 書信作文(滿分范文)專練-上海新高考英語一輪總復習(解析版)
- 旅行社企業章程范本
評論
0/150
提交評論