




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
模塊二單片機指令系統(tǒng)
及匯編語言程序設(shè)計
主編:高玉泉模塊二單片機指令系統(tǒng)及匯編語言程序設(shè)計
單元1程序設(shè)計基礎(chǔ) 單元2延時程序 單元3算術(shù)運算程序 單元4代碼轉(zhuǎn)換程序單元5輸入輸出程序設(shè)計及制作單元1程序設(shè)計基礎(chǔ)知識目標:1.了解存儲器配置。2.理解程序存儲器。3.理解數(shù)據(jù)存儲器。4.熟悉存儲器常用單位。5.熟練掌握指令中常用符號。技能目標:1.掌握存儲器結(jié)構(gòu)及作用。2.掌握數(shù)據(jù)存儲器作用及使用方法。3.掌握特殊功能寄存器功能。4.熟練掌握51單片機的7種尋址方式并能靈活運用。5.掌握軟件模擬仿真存儲器、指令地址方法。模塊二單元1
任務(wù)1存儲器的認識任務(wù)1存儲器的認識一、任務(wù)描述(見表2-1所示)表2-1任務(wù)描述
模塊二工作任務(wù)要求了解存儲器配置掌握存儲器結(jié)構(gòu)及作用認識程序存儲器掌握程序存儲器作用及使用方法認識數(shù)據(jù)存儲器掌握數(shù)據(jù)存儲器作用及使用方法理解存儲器常用單位熟練應(yīng)用存儲器常用單位理解特殊功能寄存器功能掌握特殊功能寄存器功能
二、任務(wù)分析
單片機匯編語言程序設(shè)計需要用戶對程序中用到的每一個參數(shù)和變量都必須規(guī)劃其在存儲器中的位置。因此,要理解存儲器功能、作用、特殊功能寄存器功能、存儲器常用單位;所以,在學(xué)習(xí)程序設(shè)計之前,必須對單片機的存儲器結(jié)構(gòu)及作用有清楚的認識和理解。本任務(wù)為認識存儲器內(nèi)部機構(gòu)及如何使用存儲器;用MedWin中文版單片機仿真軟件模擬仿真存儲器、寄存器、特殊功能存儲器變化過程。模塊二單元1
任務(wù)1存儲器的認識
模塊二三、相關(guān)知識(1)存儲器認識1)存儲器單片機中,用戶設(shè)計的程序及程序運行時的數(shù)據(jù)存放到集成電路中,集成電路稱作存儲器。①程序存儲器(ROM)
程序設(shè)計完成后寫到存儲器中,在單片機運行時程序只能從存儲器中被讀取,不能再修改,否則將發(fā)生運行錯誤。即用來存放程序的存儲器只能讀不能寫,稱為程序存儲器(ROM)又叫只讀存儲器。51系列單片機存儲器的配置如圖2-1所示。
單元1
任務(wù)1存儲器的認識
模塊二圖2-151系列單片機存儲器的配置圖單元1
任務(wù)1存儲器的認識
模塊二②數(shù)據(jù)存儲器(RAM)在單片機運行時的數(shù)據(jù)將隨著程序的運行發(fā)生變化,所以存放數(shù)據(jù)的存儲器既可讀又可寫,將這樣的存儲器稱為數(shù)據(jù)存儲器或隨機存儲器(RAM),用戶使用最頻繁的是內(nèi)部數(shù)據(jù)存儲器。③內(nèi)部存儲器單片機的存儲器既可在單片機內(nèi)部,又可在單片機外部,在單片機內(nèi)部的存儲器稱為內(nèi)部存儲器,④外部存儲器在單片機外部的存儲器稱為外部存儲器。如果單片機程序很大,內(nèi)部程序存儲器容量不足時,就要將剩余的程序裝到片外存儲器中。單元1
任務(wù)1存儲器的認識
模塊二(2)51系列單片機存儲器的配置51系列單片機片內(nèi)程序存儲器容量為4KB,地址為0000H~0FFFH;單片機外部程序存儲器最大容量為64KB,地址為0000H~FFFFH;內(nèi)部數(shù)據(jù)存儲器容量為256B,地址為00H~FFH;外部數(shù)據(jù)存儲器最大容量為64KB,地址為0000H~FFFFH。內(nèi)部數(shù)據(jù)存儲器根據(jù)其用途的不同又分為兩部分:低128字節(jié)為用戶使用,稱為RAM區(qū);高128字節(jié)為單片機功能控制用,稱為特殊功能寄存器區(qū)在使用時,可將內(nèi)部程序存儲器和外部程序存儲器看成一個程序存儲器。所以從邏輯上將存儲器分為3個存儲空間:片內(nèi)外統(tǒng)一編址的64KB的程序存儲器、片內(nèi)256B的數(shù)據(jù)存儲器、外部64KB的數(shù)據(jù)存儲器。單片機存儲器總體分配如圖2-2所示。單元1
任務(wù)1存儲器的認識
模塊二圖2-2單片機存儲器總體分配圖單元1
任務(wù)1存儲器的認識
模塊二(3)存儲器單元的常用單位存儲器常用單位有以下3種:位(Bit):單片機中能表示的最小數(shù)據(jù)單位。因為單片機使用二進制數(shù),故位指一個二進制位,有0,1兩種編碼。2)字節(jié)(Byte):連續(xù)的8位二進制數(shù)稱為一個字節(jié),即1Byte=8Bit。3)字(Word):MCS-51中,兩個字節(jié)構(gòu)成一個字,即1Word=2Byte。常用的存儲器指標還有字長,是指計算機能一次處理的二進制編碼位數(shù)多少。存儲器中用于存放數(shù)據(jù)的場所稱為單元。每個單元都有一個特定的編號,稱為地址,用若干位二進制數(shù)表示。單元1
任務(wù)1存儲器的認識
模塊二MSC-51有十六條地址線,可尋址單元地址就用16位二進制編碼表示為0000H—FFFFH存儲器中數(shù)存放以字節(jié)為單位,一個單元可存放1個字節(jié)數(shù)據(jù)。故常用存儲器能存放的字節(jié)數(shù)來衡量存儲器存儲容量的大小。(4)程序存儲器和數(shù)據(jù)存儲器功能及使用注意事項1)程序存儲器51系列單片機程序存儲器為16位地址,可尋址的范圍為64KB,因此片外程序存儲器最大容量為64KB,而片內(nèi)程序存儲器容量為4KB。程序存儲器用于存放用戶程序等信息,其存儲單元只能讀不能寫。在物理結(jié)構(gòu)上分為片內(nèi)程序存儲器和單片機外程序存儲器兩個部分,在邏輯結(jié)構(gòu)上(即用戶使用角度)為一個部分,采用同指令(MOVC指令)進行訪問,用外部引腳EA電平高低區(qū)分低4KB空間訪問的是內(nèi)部程序存儲器還是外部程序存儲器。單元1
任務(wù)1存儲器的認識
模塊二對于內(nèi)部沒有ROM的8031單片機,它的程序存儲器必須外接,地址空間為64KB,此時單片機的引腳EA必須接地,強制CPU從外部程序存儲器讀取程序。對于內(nèi)部有ROM8051、8751、89C51、89S51等單片機,一般情況EA引腳接高電平,使CPU先從內(nèi)部程序存儲器中讀取程序,當?shù)刂烦^內(nèi)部ROM的容量4KB時,才轉(zhuǎn)向外部程序存儲器讀取程序。
2)數(shù)據(jù)存儲器
數(shù)據(jù)存儲器也稱為隨機存取存儲器,存儲單元既可讀又可寫,用于存取程序運行時的中間結(jié)果數(shù)據(jù)等。51系列單片機的數(shù)據(jù)存儲器在物理上和邏輯上都分為兩個地址空間,一個是片內(nèi)數(shù)據(jù)存儲器,另一個是外數(shù)據(jù)存儲器。。單元1
任務(wù)1存儲器的認識
模塊二圖2-3片內(nèi)數(shù)據(jù)存儲器的結(jié)構(gòu)①片內(nèi)數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器低128字節(jié)根據(jù)用途的不同,又可分為3個區(qū):單元1
任務(wù)1存儲器的認識
模塊二工作寄存器區(qū):地址為00H~1FH,共32個字節(jié),該區(qū)為工作寄存器用;工作寄存器區(qū)32個字節(jié)被均勻地分為4個組;片內(nèi)數(shù)據(jù)存儲器結(jié)構(gòu)如圖2-3所示第0組工作寄存器,地址為00H~07H;第1組工作寄存器,地址為08H~0FH;第2組工作寄存器,地址為10H~17H;第3組工作寄存器,地址為18H~1FHH。每組工作寄存器有8個寄存器,均以R0~R7來命名。內(nèi)部數(shù)據(jù)存儲器的結(jié)構(gòu)如圖2-4所示。在程序運行時,究竟用哪組工作寄存器,要通過特殊功能寄存器中的程序狀態(tài)字寄存器(PSW)的第3和第4位(RS0和RS1)的值來加以區(qū)分。單元1
任務(wù)1存儲器的認識
模塊二圖2-4內(nèi)部數(shù)據(jù)存儲器的結(jié)構(gòu)
RS1RS0寄存器區(qū)(地址)000組(00H~07H)011組(08H~OFH)102組(10H~17H)l13組(18H~1FH)如RSl和RS0為00(二進制),則用的是第0組工作寄存器;單元1
任務(wù)1存儲器的認識
模塊二如RSl和RS0為01,則用的是第1組工作寄存器;如RSl和RS0為10,則用的是第2組工作寄存器;如RSl和RS0為11,則用的是第3組工作寄存器;若程序中并不需要使用4組,那么其余的可作為一般寄存器使用。在CPU復(fù)位后,選中第0組工作寄存器。位尋址區(qū):地址為20H~2FH,共16個字節(jié)128位,位地址為00H~7FH,該區(qū)單元既可按字節(jié)操作,又可按位操作;CPU能直接尋址這些位,執(zhí)行例如置“1”、清“0”、取反、位傳送和位邏輯運算等操作。片內(nèi)RAM中的位尋址區(qū)地址如表2-2所示。單元1
任務(wù)1存儲器的認識
模塊二表2-2片內(nèi)RAM中的位尋址區(qū)地址單元1
任務(wù)1存儲器的認識單元1
任務(wù)1存儲器的認識
模塊二用戶RAM區(qū),即數(shù)據(jù)緩沖區(qū),地址為30H~7FH,共80個字節(jié),該區(qū)為用戶數(shù)據(jù)存取用,只能按字節(jié)操作。中斷系統(tǒng)中的堆棧設(shè)在該區(qū)域。特殊功能寄存器(SFR)離散地分布了21個特殊功能寄存器,這些寄存器反映了51系列單片機的運行狀態(tài),很多功能均是通過特殊功能寄存器來定義和控制執(zhí)行的,這些寄存器的功能已作了專門的規(guī)定,用戶不能修改其結(jié)構(gòu)。如累加器A、寄存器B、程序狀態(tài)字寄存器PSW、數(shù)據(jù)指針DPTR、I/O口寄存器P0、P1、P2、P3等均為特殊功能寄存器。表2-3給出了這些特殊功能寄存器的名稱、地址和復(fù)位后的初值。累加器ACC:累加器ACC是一個最常用的特殊功能寄存器,累加器的地址為E0H,在指令中常將ACC簡寫為A。大部分單操作數(shù)指令的操作數(shù)取自累加器,很多雙操作數(shù)指令中的一個操作數(shù)也取自累加器。加、減、乘、除運算指令的運算結(jié)果都存放于累加器A或累加器A和寄存器B中。程序狀態(tài)字寄存器PSW:程序狀態(tài)字也是一個特殊功能寄存器,它在SFR中的地址為D0H,用于存放程序運行的狀態(tài)信息,為程序提供查詢和判別標準。格式為:PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0CYACF0RS1RS0OVE0-PPSW
這個寄存器的某些位可由軟件設(shè)置,有些位則由硬件運行時自動設(shè)置。寄存器的各位定義及功能見表2-4所示。模塊二單元1
任務(wù)1存儲器的認識單元1
任務(wù)1存儲器的認識
模塊二數(shù)據(jù)指針DPTR:數(shù)據(jù)指針為16位寄存器,其地址為83H和82H,編程時既可以按16位寄存器來使用,也可以按2個8位寄存器來使用,即高字節(jié)寄存器DPH(地址為83H)和低字節(jié)DPL(地址為82H)。
程序計數(shù)器PC:程序計數(shù)器在物理上是獨立的,它不屬于特殊功能寄存器區(qū)中的寄存器。PC是一個16位的計數(shù)器,用于存放一條要執(zhí)行的指令地址,尋址范圍為64KB,PC有自動加1功能,即執(zhí)行完一條指令后,其內(nèi)容自動加1。②單片機外數(shù)據(jù)存儲器結(jié)構(gòu)51單片機外數(shù)據(jù)存儲器為16位地址空間,因此最多可擴充64KB。區(qū)分這兩個地址空間的方法是采用不同的指令,訪問片內(nèi)RAM用MOV指令,訪問單片機外部RAM用MOVX指令。單片機存儲器各部分功能及使用注意事項如圖2-5所示。單元1
任務(wù)1存儲器的認識
模塊二圖2-5單片機存儲器各部分的功能及使用注意事項單元1
任務(wù)1存儲器的認識模塊二四、任務(wù)準備1.材料準備書寫用卡片或A4打印紙、大頭油性筆、彩色筆、各類存儲器若干塊等2.安裝有MedWin中文版單片機仿真軟件、多媒體教學(xué)平臺計算機。3.下載有按鍵左移亮燈程序的單片機每兩人一套。單元1
任務(wù)1存儲器的認識模塊二五、任務(wù)實施(1)出示計算機上使用存儲器如圖2-6和8051系列存儲器如圖2-7所示。(2)各小組利用多媒體計算機上網(wǎng)搜索存儲器的構(gòu)成、分類、常用單位、功能、使用等事項;各小組選派一人講解學(xué)習(xí)成果。(3)各小組繪制存儲器總體配置圖、地址分配表、特殊寄存器功能及訪問各存儲器使用指令等。10分鐘后,以小組合作形式張貼。(4)用MedWin中文版單片機仿真軟件模擬仿真存儲器、寄存器、特殊功能存儲器變化過程。單元1
任務(wù)1存儲器的認識模塊二圖2-6計算機上使用存儲器
單元1
任務(wù)1存儲器的認識模塊二圖2-7存儲器單元1
任務(wù)1存儲器的認識模塊二1)打開MedWin中文版界面。2)輸入按鍵左移亮燈程序,并生成.HEX為后綴代碼。3)打開調(diào)試—單步運行—全速運行,點擊端口P3.0顏色發(fā)生變化,輸入低電平,觀察P1.0端口顏色變化;依次打開存儲器、寄存器、特殊功能存儲器等窗口觀察運行狀態(tài);存儲器、寄存器、特殊功能存儲器等窗口觀察運行狀態(tài)如圖2-8所示。
六、檢查評議存儲器配置考核表如表2-5所示。單元1
任務(wù)1存儲器的認識模塊二圖2-8存儲器、寄存器、特殊功能存儲器等窗口觀察運行狀態(tài)圖單元1
任務(wù)1存儲器的認識模塊二七、考證要點1.簡答題(1)程序存儲器?數(shù)據(jù)存儲器(2)作出51系列單片機存儲器的配置圖。(3)訪問單片機內(nèi)部RAM、單片機外部RAM、程序存儲器ROM分別用什么指令?(4)什么是位、字節(jié)、字、地址、單元?2.選擇題(1)進位標志CY在()A.ACCB.ALUC.PSWD.DPTR(2)關(guān)于DPTR說法正確的是()A.8位寄存器B.不可尋址C.地址是83HD.由DPH、DPL兩個8位寄存器組成(3)已知PSW的內(nèi)容為92H,則下列正確的是()A.有進位(借位)B.選中第0組工作組寄存器C.有溢出D.運算結(jié)果加偶檢驗應(yīng)加1單元1
任務(wù)1存儲器的認識模塊二(4)當程序狀態(tài)字寄存器PSW狀態(tài)字中RS1和RS0分別為0和1時,系統(tǒng)選用的工作寄存器組為()。A.組0B.組1C.組2D.組3(5)8051單片機中,唯一一個用戶可使用的16位寄存器是()。A.PSWB.ACCC.SPD.DPTR(6)8051的程序計數(shù)器PC為16位計數(shù)器,其尋址范圍是()。A.8KB.16KC.32KD.64K(7)單片機應(yīng)用程序一般存放在()中。A.RAMB.ROMC.寄存器D.CPU任務(wù)2寄存器的尋址方式
一、任務(wù)描述(見表2-6所示)表2-6任務(wù)描述
模塊二工作任務(wù)要求熟悉指令中常用符號熟練掌握指令中常用符號理解51單片機的7種尋址方式熟練掌握51單片機的7種尋址方式并能靈活運用熟悉軟件仿真存儲器、指令的地址掌握軟件模擬仿真存儲器、指令地址方法任務(wù)2寄存器的尋址方式任務(wù)2寄存器的尋址方式
二、任務(wù)分析
在單片機運行時,數(shù)據(jù)可以存放在存儲器中的不同位置,指令只有獲得數(shù)據(jù)所存儲的地址才能得到數(shù)據(jù),把指令取得數(shù)據(jù)所在地址方式稱為尋址方式。計算機軟件仿真可顯示數(shù)據(jù)地址,掌握用軟件仿真存儲器、指令地址使用方法。
本任務(wù)內(nèi)容:(1)認識七種尋址方式;(2)掌握應(yīng)用七種尋址方式方法。數(shù)據(jù)存放位置不同,指令取得數(shù)據(jù)的方式也不同。模塊二任務(wù)2寄存器的尋址方式
模塊二三、相關(guān)知識1.指令中常用符號注釋(1)Rn(n=0~7)當前選中的工作寄存器R0~R7。(2)Ri(i=0,1)當前選中的工作寄存器組中,可作為間址寄存器的兩個工作寄存器R0、R1。(3)#data8位立即數(shù)。(4)#data1616位立即數(shù)。(5)direct8位片內(nèi)RAM單元(包括SFR)的直接地址。(6)addr1111位目的地址,用于ACALL和AJMP指令中。
任務(wù)2寄存器的尋址方式
模塊二(7)addr1616位目的地址,用于LCALL和LJMP指令中。(8)rel補碼形成的8位地址偏移量。(9)bit片內(nèi)直接尋址位地址。(10)@間接尋址方式中,表示間址寄存器的符號。(11)/位操作指令中,表示對該位先取反再參與操作,但不影響該位原值。(12)(X)表示X中的內(nèi)容。任務(wù)2寄存器的尋址方式
模塊二(13)((X))由X指出的地址單元中的內(nèi)容。(14)→指令操作流程,將箭頭左邊的內(nèi)容送入箭頭右邊的單元。2.尋址方式
尋址就是尋找指令中操作數(shù)或操作數(shù)所在的地址。在匯編語言程序設(shè)計時,要針對系統(tǒng)的硬件環(huán)境編程,數(shù)據(jù)的存放、傳送、運算都要通過指令來完成,編程者必須自始至終都十分清楚操作數(shù)的位置,以便將它們傳送至適當?shù)目臻g去操作。因此,如何尋找存放操作數(shù)的空間位置和提取操作數(shù)就變得十分重要。所謂尋址方式,就是如何找到存放操作數(shù)的地址,把操作數(shù)提取出來的方法。任務(wù)2寄存器的尋址方式
模塊二(1)七種尋址方式1)寄存器尋址
寄存器尋址是指操作數(shù)存放在某一寄存器中,指令中給出寄存器名,就能得到操作數(shù)。寄存器可以使用通用寄存器組RO—R7中某一個或其他寄存器(A,B,DPTR等)。例:MOVA,R0;(R0)→AMOVR1,A;(A)→R1ADDA,R0;(A)+(R0)→A寄存器尋址方式的尋址范圍包括:①4個寄存器組共32個通用寄存器,但在指令中只能使用當前寄存器組,因此在使用前需通過對PSW中RSI、RSO位的狀態(tài)設(shè)置,來進行當前寄存器組的選擇,以確定RO~R7的物理地址。②部分專用寄存器。例如,累加器A、B寄存器對以及數(shù)據(jù)指針DPTR等。
任務(wù)2寄存器的尋址方式
模塊二2)直接尋址
在指令中直接給出操作數(shù)所在的存儲單元的地址,稱為直接尋址方式。指令中操作數(shù)部分是操作數(shù)所在的地址。在MCS-51系列單片機中,使用直接尋址方式可訪問片內(nèi)RAM的128個單元以及所有的特殊功能寄存器(SFR),對于特殊功能寄存器,既可以使用它們的地址,也可以使用它們的名字。例如:MOVA,3AH;(3AH)→A就是把片內(nèi)RAM中3AH這個單元的內(nèi)容送累加器A。又如:MOVA,P1;(P1口)→A是把SFR中P1口內(nèi)容送A,它又可寫成;MOVA,90H其中,90H是P1口的地址。直接尋址的地址占一個字節(jié),所以,一條直接尋址方式的指令至少占兩個內(nèi)存單元。任務(wù)2寄存器的尋址方式
模塊二因為直接尋址方式只能使用8位二進制地址,因此這種尋址方式的尋址范圍只限于內(nèi)部RAM,具體來說就是:①低128單元。在指令中直接以單元地址形式給出。②專用寄存器。專用寄存器除以單元地址形式給出外,還可以以寄存器符號形式給出;直接尋址也是訪問專用寄存器的方法。
3)立即數(shù)尋址
指令操作碼后面緊跟的是一個字節(jié)或兩個字節(jié)的操作數(shù),用"#"號表示,以區(qū)別直接地址。例如:MOVA,3AH;(3AH)→AMOVA,#3AH;3AH→A前者表示把片內(nèi)RAM中3AH這個單元的內(nèi)容送累加器A,而后者則把3AH這個數(shù)送累加器A。任務(wù)1存儲器的認識
模塊二MCS-51系列單片機有一條指令要求操作碼后面緊跟的是兩個字節(jié)立即數(shù),即MOVDPTR,#DATA16例:MOVDPTR,#2000H因為這條指令包括兩個字節(jié)立即數(shù),所以它是三字節(jié)指令。其功能是把2000H送到DPTR寄存器。4)寄存器間接尋址
在寄存器尋址方式中,操作數(shù)存放在指令中指定的寄存器中。而在寄存器間接尋址方式中,操作數(shù)存放在存儲單元中,而存儲單元地址又存放在某個寄存器中,即操作數(shù)是通過寄存器間接得到的。任務(wù)2寄存器的尋址方式
模塊二寄存器間接尋址方式的尋址范圍包括:①內(nèi)部RAM低128單元。對內(nèi)部RAM低128單元的間接尋址,應(yīng)使用RO或Rl作間址寄存器,其通用形式為@Ri(i=0或1)②外部RAM64KB。對外部RAM64KB的間接尋址應(yīng)使用DPTR作間址寄存器,其形式為@DPTR。例如指令MOVXA.@DPTR其功能是把DPTR指定的外部RAM單元的內(nèi)容送至累加器A。外部RAM的低256單元是一個特殊的尋址區(qū),除可以使用DPTR作間址寄存器尋址外,還可使用R0或R1作間址寄存器尋址。例如指令MOVXA,@R0即把R0指定的外部RAM單元的內(nèi)容送至累加器A。此外,對于堆棧操作指令(PUSH和POP)也應(yīng)算作是寄存器間接尋址,即以堆棧指針(SP)作間址寄存器的間接尋址方式。
任務(wù)2寄存器的尋址方式
模塊二5)變址尋址
變址尋址是以某個寄存器的內(nèi)容為基地址,然后在這個基地址的基礎(chǔ)上加上地址偏移量形成真正的操作數(shù)地址。在MCS-51系列單片機中,用變址尋址方式只能訪問程序存儲器,訪問的范圍為64KB,當然,這種訪問只能從ROM中讀取數(shù)據(jù)而不能寫入。例如:操作數(shù)地址=變地址+基地址基地址寄存器DPTR或PC變址寄存器@A該尋址方式常用于訪問程序存儲器,查表。MOVCA,@A+DPTR;((A)+(DPTR))→AMOVCA,@A+PC;((A)+(PC))→A
任務(wù)2寄存器的尋址方式
模塊二對MCS-51指令系統(tǒng)的變址尋址方式作如下說明:①變址尋址方式只能對程序存儲器進行尋址,或者說它是專門針對程序存儲器的尋址方式。②變址尋址的指令只有三條:MOVCA,@A+DPTRMOVCA,@A+PCJMP@A+DPTR其中前兩條是程序存儲器讀指令,后一條是無條件轉(zhuǎn)移指令。③盡管變址尋址方式較為復(fù)雜,但變址尋址的指令都是一字節(jié)指令。
任務(wù)2寄存器的尋址方式
模塊二6)相對尋址
相對尋址只出現(xiàn)在相對轉(zhuǎn)移指令中。相對轉(zhuǎn)移指令執(zhí)行時,是以當前的PC值加上指令中規(guī)定的偏移量reI作為實際的轉(zhuǎn)移地址。這里所說的PC當前值是執(zhí)行完相對轉(zhuǎn)移指令后的PC值,一般將相對轉(zhuǎn)移指令操作碼所在的地址稱為源地址,轉(zhuǎn)移后的地址稱為目的地址,于是有:目的地址=源地址+2(相對轉(zhuǎn)移指令字節(jié)數(shù))+rel把指令中給定的地址偏移量與本指令所在單元地址(PC內(nèi)容)相加得到真正有效的操作數(shù)所存放的地址。如JC60H;設(shè)(PC)=2000H為基址,相對偏移量為60H;;則當C=1時,轉(zhuǎn)移的目的地址=2000H+2+60H將程序計數(shù)器PC中的內(nèi)容與指令中給出的數(shù)相加,其和為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(轉(zhuǎn)移目的地址)。任務(wù)2寄存器的尋址方式
模塊二7)位尋址采用位尋址方式的指令,操作數(shù)是8位二進制數(shù)中的某一位。指令中給出的是位地址,是片內(nèi)RAM某個單元中的某一位的地址。位地址在指令中用bit表示。位地址常用下列三種方式表示;直接使用位地址表示。對于20H~2FH的16個單元共128位,位地址分布是00H~7FH。對于特殊功能寄存器,可以直接用寄存器名字加位數(shù)表示,如PSW.3、ACC.5等。對于定義了位名字的特殊位,可以直接用其位名表示,例如:CY位地址的表示形式:直接使用物理的位地址;如:MOVC,7FH采用第幾字節(jié)單元第幾位的表示法。如:上述7FH的位地址可以表示為:2FH.7可位尋址的特殊功能寄存器可以直接采用寄存器名加位數(shù)的命名法。如:MOVC,ACC.7經(jīng)偽指令定義過的字符名稱。
任務(wù)2寄存器的尋址方式
模塊二位尋址方式的尋址范圍包括:①內(nèi)部RAM中的位尋址區(qū)。單元地址為20H~2FH,共16個單元128位,位地址是00H~7FH。對這128個位的尋址用直接位地址表示,②專用寄存器的可尋址位??晒┪粚ぶ返膶S眉拇嫫鞴灿?1個,實有尋址位83位,對這些尋址位在指令中有以下4種表示方法:a.直接使用位地址。例如,PSW寄存器位5地址為D5H。b.位名稱表示方法。專用寄存器中的一些尋址位是有符號名稱的,c.單元地址加位的表示方法。例如,DOH單元(即PSW寄存器)位5,表示為DOH.50d.專用寄存器符號加位的表示方法。例如,PSW寄存器的位5表示為PSW.50(2)尋址方式對應(yīng)存儲器空間空間如表2-7所示。
(3)51單片機不同存儲器空間的尋址方式51單片機不同存儲器空間的尋址方式如圖2-10所示。
任務(wù)2寄存器的尋址方式
模塊二尋址方式使用的變量及符號訪問的空間立即尋址#程序存儲器寄存器尋址Rn,A,B,DPTR片內(nèi)RAM,片外RAM寄存器間址A,@Ri,片內(nèi)RAM,片外RAMA,@DPTR片外RAM直接尋址Direct片內(nèi)RAM,SFR基址加變址尋址@A+PC程序存儲器@A+DPTR程序存儲器JMP@A+DPTR程序存儲器相對尋址PC+偏移量程序存儲器256字節(jié)范圍內(nèi)位尋址C部分片內(nèi)RAM和部分SFR表2-7尋址方式對應(yīng)存儲器空間
任務(wù)2寄存器的尋址方式
模塊二片外程序存儲器片內(nèi)程序存儲器片外數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器SFR區(qū)用戶RAM區(qū)工作寄存器區(qū)位尋址區(qū)直接尋址、部分位尋址立即尋址(操作數(shù)在指令中)變址尋址(@A+DPTR、@A+PC)相對尋址(PC+指令字節(jié)數(shù)+偏移量)寄存器間接尋址(@R0、@R1、@DPTR)圖2-1051單片機不同存儲器空間的尋址方式任務(wù)2寄存器的尋址方式模塊二四、任務(wù)準備2.具有多媒體教學(xué)平臺的計算機。1.安裝有MedWin中文版單片機仿真軟件和8位流水燈程序。五、任務(wù)實施實訓(xùn)步驟1.出示存儲器。學(xué)生觀察存儲器,指出存儲器上的數(shù)據(jù)、信息都有地址。尋找數(shù)據(jù)、信息地址有七種尋址方式。2.各小組利用多媒體計算機上網(wǎng)搜索存儲器的七種尋址方式,并選派一人講解搜索成果。3.各小組繪制存儲器總體配置圖、地址分配表、特殊寄存器地址表。10分鐘后,以小組合作形式張貼。任務(wù)2寄存器的尋址方式模塊二4.用MedWin中文版單片機仿真軟件模擬仿真8位流水燈程序執(zhí)行過程中存儲器、寄存器、特殊功能存儲器變化過程。存儲器窗口顯示存儲區(qū)的內(nèi)容,如圖2-11所示??梢酝ㄟ^4個不同的頁來觀察4個不同的存儲區(qū)內(nèi)容。通過在文本框中輸入"存儲空間:存儲地址"即可顯示相應(yīng)存儲空間的值。存儲空間用字母C、D、I、X來表示,C代表程序代碼存儲空間,D代表直接尋址的片內(nèi)存儲空間,I代表間接尋址的,片內(nèi)存儲空間,X代表擴展的外部RAM存儲空間,存儲地址用數(shù)字來表示。例如,輸入C:Oxl0即可顯示從OxlO地址開始的ROM存儲空間中的程序代碼值:輸入D:0x20即可顯示從0x20地址開始的片內(nèi)RAM單元的數(shù)據(jù)。任務(wù)2寄存器的尋址方式模塊二六、檢查評議寄存器的尋址方式考核表如表2-8所示。
班級姓名學(xué)號總分評價項目評價內(nèi)容配分/分評價標準得分七種尋址方式理解七種尋址方式應(yīng)用20七種尋址方式的名稱、作用少一項扣2分七種地址的應(yīng)用少一項扣2分操作數(shù)對應(yīng)尋址方式15操作數(shù)對應(yīng)尋址方式少一項扣2分寄存器空間的尋址方式15寄存器空間的尋址方式少一項扣2分軟件仿真存儲器、指令地址軟件仿真存儲器地址15軟件仿真存儲器地址少一項扣1分軟件仿真指令地址15軟件仿真指令地址少一項扣1分安全文明生產(chǎn)設(shè)備、材料和工具10正確使用設(shè)備、材料及工具酌情扣分團結(jié)協(xié)作集體意識10各成員分工協(xié)作,積極參與酌情扣分表2-8寄存器的尋址方式考核表任務(wù)2寄存器的尋址方式模塊二七、考證要點1.MCS—51單片機的指令的尋址方式有哪些?具體含義是什么?2.回答下列指令的尋址方式。(1)MOVA,#6AH(2)MOVA,#0E5H(3)MOVA,3FH(4)MOVA,7BH(5)MOVA,R1(6)MOVA,R3(7)MOVA,@R0(8)MOVA,@R1(9)MOVXA,@DPTR
任務(wù)2寄存器的尋址方式模塊二(10)MOVCA,@A+DPTR(11)MOVCA,@A+PC(12)JZ50H(13)SETB01H3.R1=40H,A=30H,(40H)=56H,(41H)=78H,則執(zhí)行“MOVA,@R1”后A的內(nèi)容是()4.(60H)=10H,(A)=20H,(R0)=30H,(30H)=40HMOVA,#60H;尋址方式為()A的內(nèi)容為()MOVA,60H;尋址方式為()A的內(nèi)容為()MOVA,R0;尋址方式為()A的內(nèi)容為()MOVA,@R0;尋址方式為()A的內(nèi)容為()5.改錯題
請判斷下列的MCS-51單片機指令的書寫格式是否有錯,若有,請說明錯誤原因。任務(wù)2寄存器的尋址方式模塊二(
1)MOVR0,@R3
(2)MOVCA,@R0+DPTR(3)ADDR0,R16.選擇題:
(1)MCS—51尋址方式中,操作數(shù)Ri加前綴“@”號的尋址方式是
。A.寄存器間接尋址B.寄存器尋址C.基址加變址尋址D.立即尋址(2)MCS—51尋址方式中,立即尋址的尋址空間是
。A.工作寄存器R0~R7B.專用寄存器SFRC.程序存儲器ROMD.片內(nèi)RAM的20H~2FH字節(jié)中的所有位和部分專用寄存器SFR的位(3)MCS—51尋址方式中,直接尋址的尋址空間是
。A.工作寄存器R0~R7B.專用寄存器SFRC.程序存儲器ROMD.程序存儲器256字節(jié)范圍(4)MCS—51的立即尋址方式中,立即數(shù)前面
。A.應(yīng)加前綴“/:”號B.不加前綴號C.應(yīng)加前綴“@”號D.應(yīng)加前綴“#”號(5)MCS—51的立即尋址的指令中,立即數(shù)就是
。A.放在寄存器R0中的內(nèi)容B.放在程序中的常數(shù)C.放在A中的內(nèi)容D.放在B中的內(nèi)容單元2
延時程序
知識目標:1.掌握MOV;DJNZRn,rel;DJNZdirect,rel;NOP;LJMPaddr16;AJMPaddr11;SJMPrel;等指令。2.掌握8位流水燈硬件電路設(shè)計方法。3.掌握8位流水燈軟件設(shè)計方法。4.熟練掌握延時時間計算方法。5.掌握單片機控制的蜂鳴器硬件電路設(shè)計方法。6.熟練掌握時序單位和指令周期的有關(guān)概念。技能目標:1.掌握8位流水燈硬件電路安裝和調(diào)試方法2.掌握單片機控制的蜂鳴器電路安裝和調(diào)試方法模塊二單元2任務(wù)1延時程序設(shè)計任務(wù)1延時程序設(shè)計
一、任務(wù)描述(見表2-9所示)表2-9任務(wù)描述
模塊二
工作任務(wù)要求設(shè)計8位流水燈硬件電路掌握8位流水燈硬件電路設(shè)計方法設(shè)計8位流水燈軟件電路掌握8位流水燈軟件設(shè)計方法8位流水燈硬件電路安裝和調(diào)試方法掌握8位流水燈硬件電路安裝和調(diào)試方法掌握MOV;DJNZRn,rel;DJNZdirect,rel;NOP;LJMPaddr16;AJMPaddr11;SJMPrel;等指令熟練掌握MOV;DJNZRn,rel;DJNZdirect,rel;NOP;LJMPaddr16;AJMPaddr11;SJMPrel等指令并能靈活運用單元2任務(wù)1延時程序設(shè)計
二、任務(wù)分析
本任務(wù)內(nèi)容:設(shè)計出一個規(guī)定延時時間(本任務(wù)中延時時間為1S)的延時程序。通過單片機控制8個發(fā)光二極管的順序點亮,學(xué)會使用MCS-51單片機芯片的P1口進行輸出控制,進一步學(xué)習(xí)匯編程序的分析方法,并能熟練運用MOV,DJNZRn,rel,DJNZdirect,relNOP,LJMPaddr16,AJMPaddr11,SJMPrelJMP,指令RR、RL等基本指令。本任務(wù)也是單片機最小系統(tǒng)的簡單應(yīng)用;設(shè)計一個單片機的最小系統(tǒng);通過設(shè)計,明確P1引腳電位變化可以通過單片機存儲器內(nèi)部指令來控制,利用P1引腳輸出電位的變化,控制流水燈狀態(tài);模塊二單元2任務(wù)1延時程序設(shè)計
模塊二三、相關(guān)知識1.相關(guān)指令(1)以工作寄存器Rn為目的操作數(shù)的數(shù)據(jù)傳送指令格式:MOV目的操作數(shù),源操作數(shù)功能:目的操作數(shù)源操作數(shù)中的數(shù)據(jù)MOV Rn,A;RnAMOV Rn,#data ;RndataMOV Rn,direct ;Rn(direct)這3條指令的功能是把源操作數(shù)的內(nèi)容傳送給工作寄存器組R0~R7中的某個寄存器。指令執(zhí)行后,源操作數(shù)的內(nèi)容不變,目的操作數(shù)(工作寄存器)內(nèi)容修改為源操作數(shù)。單元2任務(wù)1延時程序設(shè)計
模塊二例如:要將R4的內(nèi)容傳送到Rl解:可以按如下方法實現(xiàn)MOVA,R4MOVR1,A(2)工作寄存器減1不為0的轉(zhuǎn)移指令DJNZRn,rel;RnRn-1;Rn0轉(zhuǎn)移;Rn=0順序執(zhí)行下一條指令DJNZdirect,rel;(direct)(direct)-1;(direct)0轉(zhuǎn)移;(direct)=0順序執(zhí)行下一條指令這兩條指令將源操作數(shù)減1,結(jié)果仍送回源操作數(shù),如結(jié)果不等于0則轉(zhuǎn)移,如結(jié)果等于0,則順序執(zhí)行下一條指令。單元2任務(wù)1延時程序設(shè)計
模塊二執(zhí)行指令時,如發(fā)生轉(zhuǎn)移,則PC=本轉(zhuǎn)移指令地址+本轉(zhuǎn)移指令字節(jié)數(shù)+rel,因程序計數(shù)器PC的值為將要執(zhí)行指令的地址,所以轉(zhuǎn)移目的地址=本轉(zhuǎn)移指令地址+本轉(zhuǎn)移指令字節(jié)數(shù)+rel(rel=轉(zhuǎn)移目的地址-本轉(zhuǎn)移指令地址-本轉(zhuǎn)移指令字節(jié)數(shù));如沒發(fā)生轉(zhuǎn)移則PC=本指令地址+本指令字節(jié)數(shù)=下一條指令的地址,即順序執(zhí)行下一條指令。在進行程序設(shè)計時,rel通常用目的地址的標號表示,在程序匯編時由計算機自動計算出指令的相對轉(zhuǎn)移偏移量,并填入指令代碼中。(3)空操作指令NOP;PCPC+1該指令控制CPU不進行任何操作(即空操作)而轉(zhuǎn)到下一條指令,常用于產(chǎn)生一個機器周期的延遲。
單元2任務(wù)1延時程序設(shè)計
模塊二循環(huán)移位指令RLA;累加器A的內(nèi)容向左循環(huán)移一位RRA;累加器A的內(nèi)容向右循環(huán)移一位RLCA;累加器A的內(nèi)容帶進位標志位向左循環(huán)移一位RRCA;累加器A的內(nèi)容帶進位標志位向右循環(huán)移一位“RLA”為不帶進位位循環(huán)左移指令,將累加器A的內(nèi)容循環(huán)左移一位;“RRA”為不帶進位位循環(huán)右移指令,將累加器A的內(nèi)容循環(huán)右移一位,這兩條指令執(zhí)行后不影響PSW中各位。“RLCA”為帶進位位循環(huán)左移指令,將累加器A的內(nèi)容帶進位位CY一起循環(huán)左移一位;“RRCA”為帶進位位循環(huán)右移指令,將累加器A的內(nèi)容與進位CY一起循環(huán)右移一位,這兩條指令執(zhí)行后影響PSW中的進位位CY和奇偶標志位P。循環(huán)移位指令的執(zhí)行示意圖如圖2-12所示。
單元2任務(wù)1延時程序設(shè)計
模塊二圖2-12循環(huán)移位指令的執(zhí)行示意圖單元2任務(wù)1延時程序設(shè)計
模塊二(5)無條件轉(zhuǎn)移指令LJMPaddr16;PC←addr16AJMPaddr11;PC←PC+2,PC10~0←addr11SJMPrel;PC←PC+2,PC←PC+relJMP@A+DPTR;PC←A+DPTRLJMPaddr16指令為長轉(zhuǎn)移指令,將16位目標地址addr16裝入PC,程序無條件轉(zhuǎn)向指定的目標地址執(zhí)行。例:分析以下程序的執(zhí)行順序。標號操作碼操作數(shù)LJMPM1M0LJMPM2M1LJMPM0
M2LJMPM2程序執(zhí)行順序為Ml—M0—M2單元2任務(wù)1延時程序設(shè)計
模塊二AJMPaddr11指令為絕對轉(zhuǎn)移指令,執(zhí)行該指令時,先將PC加2,然后將addr11(目的地址的低11位)送入PC10~PC0,而PC15~PC11保持不變。這樣實際轉(zhuǎn)移的目的地址為AJMP下一條指令的高5位地址加上目的地址的低11位,而想要轉(zhuǎn)移的目的地址要與實際轉(zhuǎn)移的目的地址相同,程序執(zhí)行才不會發(fā)生錯誤,所以必須使想要轉(zhuǎn)移的目的地址的高5位與AJMP下一條指令地址的高5位相同,即想要轉(zhuǎn)移的目的地址與AJMP下一條指令必須在同一個2KB的存儲器區(qū)域內(nèi)。實際目的地址由匯編程序自動算出。SJMPrel指令為相對轉(zhuǎn)移指令,rel為相對偏移量,即相對SJMP的下一條指令轉(zhuǎn)移的字節(jié)數(shù);JMP@A+DPTR指令為間接轉(zhuǎn)移指令,指令執(zhí)行時,把累加器A中的8位無符號數(shù)與作為基址的數(shù)據(jù)指針DPTR中的16位數(shù)相加作為轉(zhuǎn)移的目的地址送入PC,不改變A和DPTR的內(nèi)容,也不影響任何標志位。
單元2任務(wù)1延時程序設(shè)計模塊二四、任務(wù)準備1.電工常用工具每人一套。2.電工操作臺兩人一臺。3.安裝有MedWin中文版單片機仿真軟件。4.具有多媒體教學(xué)平臺的計算機。5.材料元器件明細表如表2-12所示。單元2任務(wù)1延時程序設(shè)計模塊二序號元件名稱元件型號元件數(shù)量備注1單片機芯片AT89S511片DIP封裝2發(fā)光二極管Φ58只普通型3晶振12MHz1只普通型4電容30pF2只瓷片電容10uF1只電解電容5電阻470Ω8只碳膜電阻10kΩ1只碳膜電阻6按鍵1只無自鎖740腳IC座1片安裝AT89S51芯片8細導(dǎo)線、焊錫若干9萬能電子板4×15cm21片表2-128位流水燈元器件明細表
單元2任務(wù)1延時程序設(shè)計模塊二五、任務(wù)實施1.硬件電路設(shè)計(1)電路設(shè)計分析1)單片機工作條件設(shè)計電源:VCC(40腳):接+5V電源,又稱電源引腳。GND(20腳):接電源負極,又稱接地引腳。時鐘電路:采用內(nèi)部時鐘電路,18腳、19腳外接晶振(12MHZ)和電容(30pF)。復(fù)位電路:采用按鍵復(fù)位電路,9腳外接RC電路及按鍵。單元2任務(wù)1延時程序設(shè)計模塊二2)在AT89S51單片機芯片及基本外圍電路組成的單片機最小系統(tǒng)基礎(chǔ)上,利用P1口的8個引腳控制8個發(fā)光二極管。由于發(fā)光二極管具有普通二極管的共性----單向?qū)щ娦?,因此只要在其兩極間加上合適的正向電壓,發(fā)光二極管即可點亮;將電壓撤除或加反向電壓,發(fā)光二極管即熄滅。(2)電路設(shè)計1)P1口結(jié)構(gòu)MCS-51系列單片機設(shè)有4個8位并行I/O端口P0、P1、P2、P3,在無片外存儲器系統(tǒng)中,這四個I/O口的每一位都可以作為準雙向通用I/O口使用,用于傳送數(shù)據(jù)和地址信息。由于P1口引腳輸出高電位時電壓大約是5V,為保證發(fā)光二極管可靠工作,必須在發(fā)光二極管和單片機輸出引腳間連接一只限流電阻。選用硅型普通發(fā)光二極管,限流電阻取470Ω。2)本設(shè)計選用AT89S51單片機芯片,利用片內(nèi)程序存儲器進行控制,因此,31引腳接高電位。單元2任務(wù)1延時程序設(shè)計模塊二圖2-138位流水燈硬件電路圖(3)控制電路綜合以上設(shè)計,得到本任務(wù)8位交替間隔1S循環(huán)流水燈控制硬件電路如圖2-13所示。單元2任務(wù)1延時程序設(shè)計模塊二3.控制程序設(shè)計(1)程序分析:將8只發(fā)光二極管接于P1口,將#0FEH亮燈數(shù)據(jù)送P1口即可觀察到8只發(fā)光二極管亮燈情況??傻萌鐖D2-14所示的程序結(jié)構(gòu)流程圖。在51系列單片機中要實現(xiàn)數(shù)據(jù)左移,我們可以選用RLA指令,操作數(shù)必須為A。要觀察亮燈情況,應(yīng)將A中的亮燈數(shù)據(jù)送P1口輸出,用MOVP1,A指令實現(xiàn),用接于P1口的8只發(fā)光二極管來觀察。要實現(xiàn)每步間隔1s,即每個燈亮1s,用延時程序即可實現(xiàn)。要實現(xiàn)8個燈不停地按上述情況亮燈,則用無條件轉(zhuǎn)移指令SJMPreI來實現(xiàn)。(2)延時程序設(shè)計:利用循環(huán)體為空操作或無循環(huán)體的循環(huán)程序,只占用CPU的時間,而不進行任何實質(zhì)性操作,來實現(xiàn)延時功能。模塊二圖2-14交替間隔循環(huán)左移亮燈程序流程圖單元2任務(wù)1延時程序設(shè)計單元2任務(wù)1延時程序設(shè)計模塊二在51系列單片機中無專用的循環(huán)指令,通常采用寄存器Rn減1不為0則轉(zhuǎn)移控制指令DJNZRn,rel來實現(xiàn),此指令用來實現(xiàn)循環(huán)變量改變及循環(huán)結(jié)束控制。其中循環(huán)變量賦初值通常用數(shù)據(jù)傳送指令MOVRn#data來實現(xiàn)。循環(huán)程序結(jié)構(gòu)流程圖如圖2-15所示。單片機的周期一般為幾微秒,所以要實現(xiàn)較長時間的延時,需要多重循環(huán)。單元2任務(wù)1延時程序設(shè)計模塊二圖2-15循環(huán)程序結(jié)構(gòu)流程圖單元2任務(wù)1延時程序設(shè)計模塊二要使發(fā)光二極管亮1s,采用延時程序。燈亮1s后,將A的數(shù)據(jù)左移一位,用RLA指令實現(xiàn)。要實現(xiàn)發(fā)光二極管不斷地交替循環(huán)間隔點亮,則必須循環(huán)執(zhí)行數(shù)據(jù)輸出、延時、左移一位指令,所以,在程序的最后,用無條件轉(zhuǎn)移指令SJMPK將程序轉(zhuǎn)移至數(shù)據(jù)輸出MOVP1,A指令處。根據(jù)以上分析,設(shè)計出8只發(fā)光二極管交替循環(huán)間隔1S點亮發(fā)光二極管的程序如下:ORG0000HMOVA,#0FEH;給A賦初值K:MOVP1,A;將A的數(shù)據(jù)送P1口輸出MOVR3,#4;延時1sK3:MOVR2,#250K2:MOVR1,#250K1:NOP單元2任務(wù)1延時程序設(shè)計模塊二NOPDJNZR1,K1DJNZR2,K2DJNZR3,K3RLA:亮燈數(shù)據(jù)循環(huán)左移一位SJMPK:程序轉(zhuǎn)移至K處END4.程序仿真與調(diào)試(1)運行MedWin軟件,將本項目中的匯編源程序以文件名MAI.ASM保存,并添加到工程文件。如圖2-17所示。(2)將已經(jīng)存儲完成的文件進行編譯,(3)利用MedWin進行軟件仿真。編譯成功程序在寫入芯片前,可先進行計算機軟件仿真,通過觀察分析存儲器中相關(guān)數(shù)據(jù)的變化,分析源程序是否正確。如圖2-18所示。
單元2任務(wù)1延時程序設(shè)計模塊二圖2-17新建工程并添加項目單元2任務(wù)1延時程序設(shè)計模塊二
圖2-18編譯文件時出錯顯示單元2任務(wù)1延時程序設(shè)計模塊二(4)程序的下載及運行。
利用編程器將匯編完成的文件下載到AT89S51芯片中,安裝到焊接好的電路板上,通電后運行程序,觀察8個發(fā)光二極管的亮滅變化,理解傳送指令的含義。(5)程序變式訓(xùn)練,改變#0FEH數(shù)值為#0EFH,觀察8個發(fā)光二極管亮滅變化的現(xiàn)象,理解RL、RR等指令的功能。5.8位流水燈電路板的制作(1)存盤后MAI.HEX十六進制文件下載到AT89S51單片機中。(2)按電路原理圖在萬能線路板上按工藝要求布線,布置元件時要注意二極管極性,焊接、安裝都要小心進行。(3)按硬件圖調(diào)試運行;將下載好程序的AT89S51單片機安裝到焊接好的電路板上,通電后運行。如圖2-19所示。單元2任務(wù)1延時程序設(shè)計模塊二圖2-19焊接好的電路板
單元2任務(wù)1延時程序設(shè)計六、檢查評議8位流水燈安裝調(diào)試考核表如表2-13所示。表2-138位流水燈安裝調(diào)試考核表模塊二評價項目評價內(nèi)容配分/分評價標準得分硬件電路電子電路基礎(chǔ)知識20掌握單片機對應(yīng)引腳的名稱、序號、功能少一項扣5分掌握單片機最小系統(tǒng)原理分析少一項扣10分認識電路中各元器件功能及型號少一項扣5分焊接工藝元器件整形、插裝5按照原理圖及元器件焊接尺寸正確整形、安裝焊接5符合焊接工藝標準程序編制、調(diào)試、運行指令學(xué)習(xí)10正確理解程序中所有指令的意義程序分析、設(shè)計20能正確分析程序的功能少一項扣10分能根據(jù)要求設(shè)計功能相似的程序少一項扣10分程序調(diào)試與運行20程序輸入正確少一項扣5分程序編譯仿真正確少一項扣5分能修改程序并分析少一項扣10分安全文明生產(chǎn)使用設(shè)備和工具10正確使用設(shè)備及工具酌情扣分團結(jié)協(xié)作集體意識10各成員分工協(xié)作,積極參與酌情扣分單元2任務(wù)1延時程序設(shè)計模塊二七、考證要點1.填空題:(1)已知(A)=27H,執(zhí)行指令“RLA”后,累加器A中的內(nèi)容是()。A.28HB.93HC.4FH(2)本項目中要實現(xiàn)8個發(fā)光二極管初始時兩端點亮的效果,初值應(yīng)為()。A77HB.E7HC.EEHD.7EH(3)MCS—51指令包括操作碼和操作數(shù),其中操作數(shù)是指
。A.參與操作的立即數(shù)B.寄存器C.操作數(shù)D.操作數(shù)或操作數(shù)地址(4)MCS—51匯編語言指令格式中,唯一不可缺少的部分是
。A.標號B.操作碼C.操作數(shù)D.注釋2.簡述MCS—51的指令格式?3.設(shè)計程序(1)將本任務(wù)中R3的值改為01H.02H和08H,觀察亮燈的間隔時間有何變化?(2)將本任務(wù)中的RLA指令,改為RRA指令觀察亮燈的順序有何變化?(3)將本任務(wù)中的亮燈數(shù)據(jù)初值改為03H07H和55H,觀察亮燈規(guī)律有何變化?
單元2
延時程序任務(wù)2延時時間的計算
一、任務(wù)描述(見表2-14所示)表2-14任務(wù)描述
模塊二
工作任務(wù)要求熟悉時序單位和指令周期的有關(guān)概念理解時序單位和指令周期的有關(guān)概念熟悉延時時間計算方法熟練掌握延時時間計算方法單片機控制的蜂鳴器硬件電路設(shè)計掌握單片機控制的蜂鳴器硬件電路設(shè)計方法8位流水燈軟件電路設(shè)計掌握8位流水燈軟件設(shè)計方法單片機控制的蜂鳴器電路安裝和調(diào)試掌握單片機控制的蜂鳴器電路安裝和調(diào)試方法理解偽指令END、ORG,指令MOV、SETB、CPL、LCALL、RET等指令熟練掌握偽指令END、ORG,指令MOV、SETB、CPL、LCALL、RET等指令并能靈活運用單元2任務(wù)2延時時間的計算
二、任務(wù)分析本任務(wù)學(xué)習(xí)如下指令:偽指令END、ORG,指令MOV、SETB、CPL、LCALL、RET等指令,這些指令是我們進行編制程序基礎(chǔ)。用計算機軟件延時程序的延時時間有兩種方法:精確計算法和估算法。精確計算法要求精確計算延時程序執(zhí)行的機器周期數(shù),該方法計算出的延時時間準確,但比較復(fù)雜;估算法只需計算出延時程序執(zhí)行的大概機器周期數(shù),該方法計算出的延時時間為大概時間,但計算方法比較簡單。模塊二單元2任務(wù)2延時時間的計算
模塊二三、相關(guān)知識1.相關(guān)指令(1)偽指令:偽指令又叫匯編控制指令,是只在匯編過程中起作用的指令,用來對匯編過程進行某種控制,或者對符號、標號賦值。在匯編過程中,偽指令不產(chǎn)生可執(zhí)行的目標代碼,大部分偽指令甚至不會影響存儲器中的內(nèi)容。下面學(xué)習(xí)匯編開始和結(jié)束兩條偽指令。格式:ORG16位地址ENDORG的功能是跟在它后面的源程序經(jīng)過編譯后所產(chǎn)生的目標程序,在程序存儲器中的起始地址。END是匯編語言源程序的結(jié)束標志,匯編程序遇到END時認為源程序到此為止,匯編過程結(jié)束,在END后面所寫的程序,匯編程序都不予理睬。單元2任務(wù)2延時時間的計算
模塊二(2)以累加器A為目的操作數(shù)的數(shù)據(jù)傳送指令匯編指令指令功能MOV A,#data ;AdataMOV A,direct ;A(direct)MOV A,Rn ;ARnMOV A,@Ri ;A(Ri)這4條指令是將源操作數(shù)的內(nèi)容傳送給累加器A,源操作數(shù)的尋址方式有立即尋址、直接尋址、寄存器尋址和寄存器間接尋址4種。(3)位操作指令(SETB、CPL)匯編指令指令功能SETBbit;將bit位上的內(nèi)容置“1”CPLbit:將bit位上的內(nèi)容取反以上兩條指令可以對單元中的特定位進行操作,應(yīng)用的關(guān)鍵是掌握位地址的表示方法。本程序中P1.0即位地址。單元2任務(wù)2延時時間的計算
模塊二4)子程序調(diào)用及返回指令(LCALL、RET):在程序設(shè)計中,經(jīng)常會遇到功能完全相同的同一段程序出現(xiàn)多次,為了減少程序所占存儲器的空間及編程人員的工作量,可以把具有一定功能的程序段作為子程序單獨編寫,供主程序在需要時使用,這種使用稱為調(diào)用。當主程序需要調(diào)用子程序時,通過調(diào)用指令無條件地轉(zhuǎn)移到子程序入口處開始執(zhí)行,子程序執(zhí)行完畢將返回到主程序。因此,調(diào)用指令和返回指令應(yīng)成對使用,調(diào)用指令應(yīng)放在主程序中,而返回指令應(yīng)放在子程序的末尾處。ACALLaddr11;PCPC+2,;SPSP+1,(SP)PC7~0;SPSP+1,(SP)PC15~8;PC10~0addr11單元2任務(wù)2延時時間的計算
模塊二LCALLaddr16;PCPC+3;SPSP+1,(SP)PC7~0;SPSP+1,(SP)PC15~8;PCaddr16RET;PC15~8(SP),SPSP-1;PC7~0(SP),SPSP-1在程序設(shè)計中,通常把具有一定功能的公用程序段編寫成子程序,當主程序需要使用子程序時用子程序調(diào)用指令,而子程序的最后一條指令必須是子程序返回指令,以便執(zhí)行完子程序后能返回到主程序繼續(xù)執(zhí)行。ACALL為絕對調(diào)用指令,指令執(zhí)行時,先將PC加2(ACALL為雙字節(jié)指令),指向下一條指令地址(即斷點地址)。然后將斷點地址壓入堆棧,先把PC的低8位PC7~0壓人堆棧,再把PC的高8位PC15~8壓入堆棧。單元2任務(wù)2延時時間的計算
模塊二最后將子程序入口地址的低11位addrll送入PC10~0,ACALL指令的下一條指令地址的高5位送入PC15~11程序轉(zhuǎn)到子程序處執(zhí)行。程序的入口地址必須與ACALL指令的下一條指令的第一字節(jié)在相同的2KB存儲區(qū)內(nèi),目的地址的形成與AJP指令類似。LCALL為長調(diào)用指令,指令執(zhí)行時,先將PC加3(LCALL為三字節(jié)指令),指向下一條指令地址(即斷點地址)。然后將斷點地址壓人堆棧,先把PC的低8位PC7~0壓入堆棧,再把PC的高8位PC15~8壓入堆棧。最后將子程序人口地址addr16送入PC,程序轉(zhuǎn)到子程序處執(zhí)行。子程序可存放在程序存儲器64KB的任意位置。RET為子程序返回指令,指令執(zhí)行時,將保存在堆棧內(nèi)的斷點地址彈出送入PC,使程序返回到原斷點地址(即子程序調(diào)用指令的下一條指令)處繼續(xù)執(zhí)行。
單元2任務(wù)2延時時間的計算
模塊二在程序中addr11或addr16通常用子程序的第一條指令的標號(子程序名)代替,在程序匯編時,子程序入口地址由計算機自動算出。在子程序調(diào)用時,斷點保護和轉(zhuǎn)移至子程序入口地址的過程,以及在子程序返回時,斷點的彈出和回到斷點處的過程均由單片機自動完成。
2.時序單位和指令周期定義幾個時序單位:時鐘周期、狀態(tài)周期、機器周期和指令周期。1)時鐘周期時鐘周期也稱振蕩周期,定義為振蕩頻率的倒數(shù),用T0表示,它是單片機中最基本的、最小的時間單位。在一個時鐘周期內(nèi),CPU僅完成一個最基本的動作。2)狀態(tài)周期兩個時鐘周期定義為一個狀態(tài)周期,用Ts表示。3)機器周期一個機器周期單片機完成一個基本操作,如取指令、存儲器讀/寫等。一個機器周期由6個狀態(tài)周期組成,用TM表示。
單元2任務(wù)2延時時間的計算
模塊二4)指令周期執(zhí)行一條指令的時間定義為指令周期,一般由若干機器周期組成。指令不同,所需的機器周期數(shù)也不同,在51系列單片機中有單周期、雙周期和四周期指令,各指令機器周期數(shù)見附錄D指令機器碼表。上述幾個時序單位有如下關(guān)系:TM=6×Ts=12×T0例:設(shè)單片機振蕩頻率fosc為12MHZ,試計算時鐘周期、狀態(tài)周期和機器周期。根據(jù)單片機時鐘周期、狀態(tài)周期和機器周期的關(guān)系可得:單元2任務(wù)2延時時間的計算
模塊二
3.延時時間計算(1)計算機器周期設(shè)單片機振蕩頻率為12MHZ,則機器周期:(2)標出延時程序各條指令的機器周期數(shù)標出下面延時程序的各條指令的機器周期數(shù):單元2任務(wù)2延時時間的計算
模塊二(3)精確計算法第一重循環(huán)一次的機器周期數(shù):1+1+2=4第一重循環(huán)總的機器周期數(shù):4×250=1000第二重循環(huán)一次的機器周期數(shù):1+1000+2=1003第二重循環(huán)總的機器周期數(shù):1003×250=250750單元2任務(wù)2延時時間的計算模塊二第三重循環(huán)一次的機器周期數(shù):1+250750+2=250753第三重循環(huán)總的機器周期數(shù):250753×4=1003012總的機器周期數(shù):1+1003012=1003013延時時間:1003013×1us=1003013us=1.003013s(4)估算法采用估算法計算機器周期如下:估算機器周期數(shù)=第一重循環(huán)一次的機器周期×第一重循環(huán)次數(shù)×第二重循環(huán)次數(shù)×第三重循環(huán)次數(shù)。估算延時時間=估算機器周期數(shù)×機器周期。所以以上延時程序的延時時間為:4×250×250×4×1us=1000000us=1s單元2任務(wù)2延時時間的計算模塊二四、任務(wù)準備1.電工常用工具每人一套。2.電工操作臺兩人一臺。3.按裝MedWinV3.0軟件或偉福6000軟件電腦及下載設(shè)備兩人一套。4.材料元器件明細表如表2-15所示。單元2任務(wù)2延時時間的計算模塊二序號元件名稱元件型號元件數(shù)量備注1單片機芯片AT89S511片DIP封裝2蜂鳴器1只電磁式3晶振12MHz1只普通型4電容30pF2只瓷片電容10uF1只電解電容5電阻10kΩ2只碳膜電阻6按鍵1只無自鎖740腳IC座1片安裝AT89S51芯片8晶體管三極管90131只9細導(dǎo)線、焊錫若干10萬能電路板4×15cm21片表2-15單片機控制的蜂鳴器鳴叫元器件明細表單元2任務(wù)2延時時間的計算模塊二五、任務(wù)實施1.硬件電路設(shè)計在單片機應(yīng)用中,首先應(yīng)考慮硬件電路的設(shè)計,控制程序編寫和電路結(jié)構(gòu)是互相對應(yīng)的。(1)電路設(shè)計分析使用AT89C51單片機芯片(含片內(nèi)程序存儲器),外加振蕩電路、復(fù)位電路、控制電路、電源,組成一個單片機最小系統(tǒng)。對于電磁式蜂鳴器,其發(fā)聲原理是電流通過電磁線圈,使電磁線圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的,因此需要一定的電流才能驅(qū)動它。蜂鳴器控制電路如圖2-19所示。單元2任務(wù)2延時時間的計算模塊二圖2-20蜂鳴器控制電路對于電平驅(qū)動的蜂鳴器,只要在其正、負兩極間加上合適的工作電壓(1.5~5V),蜂鳴器即可鳴叫;將電壓撤除,鳴叫即停止。使用一只晶體管進行電流放大。利用蜂嗚器的工作特點,結(jié)合單片機P1口P1.0引腳輸出信號的狀態(tài),可以實現(xiàn)蜂鳴器的單片機控制。單元2任務(wù)2延時時間的計算模塊二(2)電路設(shè)計選用的AT89S51;單片機工作條件設(shè)計電源:VCC(40腳):接+5V電源,又稱電源引腳。GND(20腳):接電源負端,又稱接地引腳。時鐘電路:采用內(nèi)部時鐘電路,18腳、19腳外接晶振(12MHZ)和電容(30pF。)復(fù)位電路:采用按鍵復(fù)位電路,9腳外接RC電路及按鍵。2)蜂鳴器控制電路蜂鳴器的正極接到電源正極,負極與晶體管的發(fā)射極相連。晶體管是否導(dǎo)通取決于基極電位,若基極電位為低電位0,則晶體管導(dǎo)通;若基極電位為高電位1,則晶體管截止。晶體管的基極通過10kΩ的電阻與單片機芯片AT89C51的P1.0引腳連接,因此可以通過控制P1.0引腳的輸出信號來控制晶體管的通斷。綜合以上分析,得到圖2-21所示的電路原理圖。單元2任務(wù)2延時時間的計算模塊二圖2-21單片機控制的蜂鳴器鳴叫電路原理圖
單元2任務(wù)2延時時間的計算模塊二2.控制程序的編寫
(1)繪制程序流程圖
本控制使用簡單程序設(shè)計中的順序結(jié)構(gòu)形式實現(xiàn),程序結(jié)構(gòu)流程圖如圖2-22所示。(2)單片機控制的蜂鳴器鳴叫程序設(shè)計1)程序分析單片機上電或執(zhí)行復(fù)位操作后。程序都將回到初始位置“0”000H單元開始執(zhí)行。為使蜂鳴器發(fā)音,蜂鳴器應(yīng)置高電平1,選用指令“SETBP1.0”。此時由于晶體管基極通過10kΩ的限流電阻與單片機引腳連接,所以晶體管導(dǎo)通,蜂鳴器發(fā)聲。為了能清楚地分辨蜂鳴器的發(fā)聲情況,執(zhí)行“LCALLDELAY”,調(diào)用5s延時子程序,以維持蜂鳴器發(fā)聲的狀態(tài)。為能清楚地分辨蜂鳴器的發(fā)聲情況,需要停止5s,產(chǎn)生一段時間間隔,要求蜂鳴器停止,選用指令“CPLP1.0”,程序段同時延時5s。單元2任務(wù)2延時時間的計算模塊二圖2-22程序結(jié)構(gòu)流程圖ORG0000HSETBP1.0LCALLDELAYCPLP1.0END單元2任務(wù)2延時時間的計算模塊二2)綜合以上分析設(shè)計好源程序如下:ORG0000HMAIN1:SETBP1.0LCALLDELAYCPLP1.0LCALLDELAYLJMPMAIN1DELAY:MOVR3,#20K3:MOVR2,#250K2:MOVR1,#250K1:NOPNOPDJNZR1,K1DJNZR2,K2DJNZR3,K3RETEND單元2任務(wù)2延時時間的計算模塊二3.程序仿真與調(diào)試(1)運行MedWin軟件,將本項目中的匯編源程序以文件名FengMQ.ASM保存,添加到工程文件。如圖2-23所示。(2)將已經(jīng)保存文件進行編譯,若編譯中檢測到錯誤的符號,會將錯誤信息用紅色條紋反顯,用鼠標雙擊錯誤提示,即可以在對應(yīng)位置進行修改,很多錯誤是因為中文狀態(tài)輸入下造成的。(3)利用MedWin進行軟件仿真。編譯成功的程序在寫入芯片前,可以先進行計算機軟件模擬仿真,通過觀察分析存儲器中相關(guān)數(shù)據(jù)的變化,分析源程序是否正確,通過程序運行時間,驗證設(shè)計時間是否正確。如圖2-24所示。單元2任務(wù)2延時時間的計算模塊二圖2-23匯編源程序圖單元2任務(wù)2延時時間的計算模塊二圖2-24利用MedWin軟件仿真計算延時時間
單元2任務(wù)2延時時間的計算(4)程序的下載及運行。利用編程器將匯編完成的文件下載到所用的芯片中,安裝到焊接好的電路板上,通電后運行程序,蜂鳴器發(fā)出鳴笛5s,然后停止5s。(5)修改源程序,將#20改為#8,觀察蜂鳴器鳴叫長短。(6)將編譯后的程序?qū)懭雴纹瑱C芯片正確連接編程器并把AT89S51芯片插好,根據(jù)選用的編程器型號,運行對應(yīng)的軟件并將匯編生成的*.HEX文件下載到芯片中4.蜂鳴器電路板的制作(1)將存盤后FengMQ.HEX十六進制文件下載到AT89S51單片機中。(2)按電路原理圖在萬能線路板上按工藝要求布線,首先要判別三極管極性再焊接。蜂鳴器要安裝到P1.0的接口上。(3)按硬件圖調(diào)試運行;將寫完程序的芯片安裝到焊接好的硬件電路中,如圖2-25所示,給電路板通電,控制單片機工作,觀察蜂鳴器的鳴叫過程
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單方美容培訓(xùn)合同范例
- 勞務(wù)合同范本 物業(yè)
- 單位樓房翻新合同范例
- 1999勞動合同范本
- 包廠合作合同范本
- 廠家定貨合同范本
- 分家析產(chǎn)合同范本
- 包裝木箱定做合同范例
- 鹵味培訓(xùn)協(xié)議合同范本
- 廠房續(xù)租賃合同范本
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫附答案
- 2025屆高考英語二輪復(fù)習(xí)備考策略課件
- 《高鐵乘務(wù)安全管理與應(yīng)急處置(第3版)》全套教學(xué)課件
- 歷年湖北省公務(wù)員筆試真題2024
- 學(xué)校食品安全長效管理制度
- 2.2 說話要算數(shù) 第二課時 課件2024-2025學(xué)年四年級下冊道德與法治 統(tǒng)編版
- 滋補品項目效益評估報告
- 提綱作文(解析版)- 2025年天津高考英語熱點題型專項復(fù)習(xí)
- 2025年南京機電職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點試題含答案解析
- 2025年春新人教版歷史七年級下冊全冊課件
- 2025年浙江臺州機場管理有限公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論