單片機期末復(fù)習(xí)_第1頁
單片機期末復(fù)習(xí)_第2頁
單片機期末復(fù)習(xí)_第3頁
單片機期末復(fù)習(xí)_第4頁
單片機期末復(fù)習(xí)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 單片機期末復(fù)習(xí)資料 第一章 微機計算機系統(tǒng)的基本知識1.單片機就是在一片硅片上集成了中央處理器、隨機存儲器、只讀存儲器、中斷系統(tǒng)、定時/計數(shù)器和多種I/O口的微型計算機系統(tǒng),該系統(tǒng)不帶外部設(shè)備。從組成和功能上看,它已經(jīng)具備了計算機系統(tǒng)的基本屬性,所以也可以稱其為單片微型計算機,簡稱單片機。2.微型處理器是單片機的核心。它主要由三部分組成:寄存器陣列、運算器和控制器、3.程序計數(shù)器PC,專門用于存放現(xiàn)行指令的16位地址。CPU就是根據(jù)PC中的地址到ROM中讀取程序指令。每當(dāng)取出現(xiàn)行指令一個字節(jié)后,PC就自動加1,PC+1PC,當(dāng)遇到轉(zhuǎn)移指令或子程序時,PC內(nèi)容會被指定的地址取代,實現(xiàn)程序轉(zhuǎn)移。

2、PC用于存放CPU下一條要執(zhí)行的指令地址,是一個16位的專用寄存器。(PC的功能與作用)4.運算器用來完成算術(shù)運算和邏輯運算操作,是處理信息的主要部件。運算器主要由累加器A、狀態(tài)寄存器PSW、算術(shù)運算單元ALU組成。累加器A,用來存放參與算術(shù)運算和邏輯運算的一個操作數(shù)和運算結(jié)果。狀態(tài)字寄存器,用來保存ALU操作運算的條件標志,如進位標志、奇偶標志等。算術(shù)運算單元ALU,由加法器和其他邏輯電路組成,其基本功能是進行加法和移位運算,由此實現(xiàn)其他各種算術(shù)和邏輯運算。5.控制器是分析和執(zhí)行指令的部件,控制器只要由程序計數(shù)器PC、指令寄存器和指令譯碼器 組成。6.總線是用于傳送信息的公共途徑??偩€可以分

3、為數(shù)據(jù)總線、地址總線、控制總線。7.數(shù)據(jù)總線DB:數(shù)據(jù)線D0D7共8位,由P0提供,分時輸送低8位地址(通過地址鎖存器鎖存)和8位數(shù)據(jù)信息。數(shù)據(jù)總線是雙向的,可以從CPU輸出,也可以從外部輸入到CPU。8.地址總線AB:地址線A0A15共16位,P2口提供高8位地址A8A15,P0口經(jīng)地址鎖存器提供低8位地址A0A7。片外存儲器可尋址范圍達到64KB(即65536字節(jié))。9.控制總線CB:控制總線由P3口的第二功能P3.6、P3.7H和3根獨立的控制線ALE、和組成。10.存儲器是用來存儲數(shù)據(jù)和程序的部件。按其功能來分,存儲器可以分為隨機存儲器(RAM)和只讀存儲器(ROM)兩大類。11.RA

4、M:可以隨機寫入讀出,讀寫速度快,讀寫方便。缺點是電源斷電后,被存儲的信息會丟失。RAM主要用于存放各種數(shù)據(jù)。12.ROM:一般用來存放固定的數(shù)據(jù)和程序。其特點是信息寫入后,能長期保存,不會因斷電而 丟失。所謂“只讀”指不能寫入。13.(基本了解)ROM的5種不同形式:MaskROM(淹膜ROM) OTPROM EPROM E²PROM FlashROM14.單片機程序設(shè)計語言可分為三類:機器語言、匯編語言和高級語言機器語言:機器語言是計算機可以識別和直接執(zhí)行的語言,它由一組二進制代碼組成,不同的微處理器機器語言也不同。匯編語言:用助記符替代機器語言中的操作碼,用十六進制數(shù)代替二進制

5、數(shù)。計算執(zhí)行時,必須將匯編語言翻譯成機器語言。匯編語言和機器語言一樣,微處理器不同,匯編語言也不同,即不同的微處理器采用不同的匯編語言。思考與練習(xí):Ø 1.1什么是單片機?答:單片機就是在一片硅片上集成了中央處理器、隨機存儲器、只讀存儲器、中斷系統(tǒng)、定時/計數(shù)器和多種I/O口的微型計算機系統(tǒng),該系統(tǒng)不帶外部設(shè)備。從組成和功能上看,它已經(jīng)具備了計算機系統(tǒng)的基本屬性,所以也可以稱其為單片微型計算機,簡稱單片機。Ø 1.2單片機的基本組成有哪些?答:單片機由中央處理器、隨機存儲器、只讀存儲器、中斷系統(tǒng)、定時/計數(shù)器和多種I/O口組成。第二章 單片機的硬件結(jié)構(gòu)(重點復(fù)習(xí))15.(簡

6、答題)80C51單片機有4個8位的雙向并行輸入/輸出(I/O)端口,稱為P0口、P1口、P2口和P3口。P0口:P0口是一個雙功能的8位并行I/O口,可用作輸入/輸出端口,又可作地址/數(shù)據(jù)總線分時傳輸時低8位地址和8位數(shù)據(jù)。P1口:P1口是單一功能的并行I/O口,只用作通用的數(shù)據(jù)輸入/輸出口。P2口:P2口是一個雙功能的8位并行I/O,可用作通用的輸入/輸出口,又可用作高8位地址總線。P3口:P3口是一個雙功能的8位并行I/O口,它的第一功能是通用輸入/輸出口,作第二功能用時,各引腳定義如下:P3.0:RXD串行口輸入;P3.1:TXD串行口輸出;P3.2:外部中斷0輸入;P3.3:外部中斷1

7、輸入;P3.4:T0定時/計數(shù)器0外部計數(shù)脈沖輸入;P3.5:T1定時/計數(shù)器1外部計數(shù)脈沖輸入;P3.6:片外數(shù)據(jù)存儲器寫選通訊號輸出;P3.7:片外數(shù)據(jù)存儲器讀選通訊號輸出。16.基本時序單位單片機的時序單位有:振蕩周期:晶振的振蕩周期,又稱時鐘周期,為最小的時序單位。狀態(tài)周期:振蕩頻率經(jīng)單片機內(nèi)的二分頻器分頻后提供給片內(nèi)CPU的時鐘周期。因此,一個 狀態(tài)周期包含2個振蕩周期。機器周期:1個機器周期由6個狀態(tài)周期即12個振蕩周期組成。是計算機執(zhí)行一種基本操作(如取指令,讀存儲器,寫存儲器等)的時間單位。指令周期:執(zhí)行一條指令所需的時間。一個指令周期由14個機器周期組成,依據(jù)指令不同而不同。

8、 4種時序單位中,振蕩周期和機器周期是單片機內(nèi)計算其他時間值(例如,波特率、定時器的定時時間等)的基本時序單位。 例:單片機外接晶振頻率fosc= 12MHZ時的各種時序單位:振蕩周期=1/fosc=1/12MHZ=0.0833us;狀態(tài)周期=2/fosc=2/12MHZ=0.167us;機器周期=12/fosc=12/12MHZ=1us;指令周期=(14)機器周期=14us 。 17. MCS-51的存儲器結(jié)構(gòu)與常見的微型計算機的配置方法不同,采用哈佛結(jié)構(gòu)它將程序存儲器和數(shù)據(jù)存儲器分開,各有自己的尋址方式、控制信號和功能。程序存儲器用來存放程序、始終要保留的表格、常數(shù)。數(shù)據(jù)存儲器存放程序運行

9、中所需要的數(shù)據(jù)和結(jié)果(常數(shù)和變量)。18. 從物理空間(實際結(jié)構(gòu))看,MCS-51有四個存儲器地址空間: 片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器、片內(nèi)程序存儲器、片外程序存儲器19. 從邏輯上(使用角度)看,MCS-51有三個存儲器空間:片內(nèi)、片外統(tǒng)一編址的程序存儲器,片外數(shù)據(jù)存儲器,片內(nèi)數(shù)據(jù)存儲器20. 程序存儲器中的幾個特殊地址的使用:地址 用途0000H 復(fù)位操作后的程序入口0003H 外部中斷0服務(wù)程序入口000BH 定時器0中斷服務(wù)程序入口0013H 外部中斷1服務(wù)程序入口001BH 定時器1中斷服務(wù)程序入口0023H 串行口中斷服務(wù)程序入口21. 外部數(shù)據(jù)存儲器作用:用于存放隨機讀寫的數(shù)據(jù)

10、。外部數(shù)據(jù)存儲器包括兩部分空間:外部RAM 擴展的I/O口地址內(nèi)部數(shù)據(jù)存儲器(單元數(shù)少,但最復(fù)雜)特殊功能寄存器空間,離散分布,作數(shù)據(jù)緩沖器、標志位等22. 程序存儲器與外部數(shù)據(jù)存儲器的比較相同:地址線A15A0不同:訪問的指令不同,讀寫信號不同。訪問程序寄存器的指令為MOVC指令,訪問外部數(shù)據(jù)存儲器的指令為MOVX指令;程序寄存器:只讀,PSEN作為外部ROM讀信號;外部數(shù)據(jù)存儲器:可讀寫,RD作為讀信號,WR作為寫信號。23.工作寄存器區(qū)的選擇RS1:程序狀態(tài)寄存器PSW的D4位;RS0:程序狀態(tài)寄存器PSW的D3位;RS1 RS0寄存器區(qū)R0R7所占單元的地址0 00區(qū)00H07H0 1

11、1區(qū)08H0FH1 02區(qū)10H17H1 13區(qū)18H1FH復(fù)位時,自動選中0區(qū)。一旦選中其中一個區(qū),其它三區(qū)只能作為普通RAM單元使用,而不能作為工作寄存器使用。設(shè)置多個工作寄存器區(qū)可以方便保護現(xiàn)場。24. 字節(jié)地址與位地址在使用上如何區(qū)別?例: MOV C,20H MOV A,20H 位操作指令 MOV C,20H 位地址只有1bit(小圓區(qū)域)字節(jié)操作指令 MOV A,20H 字節(jié)地址共8bit(大橢圓區(qū)域)25. 位地址空間組成及位地址表示法 內(nèi)部數(shù)據(jù)存儲器的20H2FH共16個單元可按位尋址,128位;例1:位地址 1EH= 23H . 6即字節(jié)單元23H的D6位 專用寄存器地址能被

12、8整除的可按位尋址。例2: 位地址 D4H= D0H . 4= PSW. 4= RS126.特殊功能寄存器的地址分配(名稱必須記?。?7.累加器ACC:累加器為8位的寄存器,是程序中使用最頻繁的寄存器,是用于存放中間結(jié)果和數(shù)據(jù)傳送的渠道。程序狀態(tài)字寄存器PSW:PSW也稱為標志寄存器CY:進/借位標志。CY=1,有進/借位 ;CY=0,無進/借位。AC:輔助進位標志,反映高半字節(jié)與低半字節(jié)之間的進/借位。AC=1有進/借位;AC=0無進/借位 。F0:用戶標志位RS1,RS0:工作寄存器的控制位OV:溢出標志位。有溢出 OV=1,無溢出OV=0。P:奇偶標志位。運算結(jié)果有奇數(shù)個“1”,P=1;

13、偶數(shù)個“1”,P=0。D1:無效位,一般不用。數(shù)據(jù)指針DPTR:數(shù)據(jù)指針DPTR是一個16位的專用寄存器,DPTR主要用來存放16位地址。PC用于存放CPU下一條要執(zhí)行的指令地址,是一個16位的專用寄存器。27. 訪問不同的存儲器空間使用不同的指令:程序存儲器,使用MOVC指令;外部數(shù)據(jù)存儲器,使用MOVX指令;內(nèi)部數(shù)據(jù)存儲器,使用MOV指令;特殊功能寄存器,使用MOV指令;位地址空間,使用MOV、SETB、CLR等指令。28. 堆棧是在單片機內(nèi)部RAM中從某個選定的存儲單元開始劃定的一個地址連續(xù)的區(qū)域。堆棧操作是在內(nèi)存RAM區(qū)專門開辟出來的按照“先進后出”原則進行數(shù)據(jù)存取的一種工作方式,主要

14、用于子程序調(diào)用及返回和中斷處理斷點的保護和返回。SP用來指示堆棧所處的位置。當(dāng)數(shù)據(jù)堆入棧區(qū)后,SP的值也自動隨之變化。51單片機屬于向上生長型堆棧(即向高地址方向生成)。29. 用一個稱為堆棧指針SP的特殊功能寄存器來給出棧頂存儲單元的地址。堆棧指針SP中存儲的總是堆棧棧頂存儲單元的地址,即堆棧指針SP總是指向堆棧棧頂。30. 向上生長型堆棧出棧入棧的操作原則是“先進后出”或“后進先出”。31. 實現(xiàn)復(fù)位操作,必須使RST引腳(9)保持兩個機器周期以上的高電平。32. 復(fù)位是單片機的初始化操作,其主要功能是程序計數(shù)器PC值變?yōu)?000好,使單片機從0000H開始執(zhí)行程序。上電復(fù)位后,RAM的內(nèi)

15、容是隨機的。寄存器 初始狀態(tài) 寄存器 初始狀態(tài)PC 0000H ACC 00H PSW 00H SP 07H思考與練習(xí):2.1 51單片機內(nèi)部包括哪些主要部件?答:51單片機包括中央處理器CPU、數(shù)據(jù)存儲器RAM、只讀存儲器ROM、并行輸入輸出口P1P3口、串行口、并行口、定時/計數(shù)器、中斷系統(tǒng)及特殊功能寄存器等8個部件。2.2 80C51單片機的存儲器有哪幾種類型?可以劃分為哪幾個部分?答:80C51單片機的存儲器按功能可以劃分為兩大類:隨機存儲器(RAM)和只讀存儲器(ROM)??梢詣澐譃橐韵挛宀糠郑浩瑑?nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器、特殊功能寄存器、片外數(shù)據(jù)存儲器。Ø

16、; 2.3 80C51如何確定和改變當(dāng)前工作寄存器區(qū)?答:在選擇工作寄存器區(qū)時,可通過對特殊功能寄存器中的程序狀態(tài)寄存器PSW的RS1和RS0的狀態(tài)設(shè)置,來選擇哪一組工作寄存器作為當(dāng)前的工作寄存器組。單片機復(fù)位時,當(dāng)前工作寄存器默認為0組。Ø 2.4 位地址和字節(jié)地址如何區(qū)分?位地址00H7FH與片內(nèi)RAM的字節(jié)地址編址相同,容易混淆。區(qū)分方法:在80C51的指令系統(tǒng)中,有專門的位操作指令和字節(jié)操作指令來區(qū)分。(位操作指令 MOV C,20H 位地址只有1bit;字節(jié)操作指令 MOV A,20H 字節(jié)地址共8bit)。Ø 2.6 PC在執(zhí)行指令過程中,起什么作用?答:PC在

17、執(zhí)行指令過程中,PC用于存放CPU下一條要執(zhí)行的指令地址,是一個16位的專用寄存器。第三章 51單片機的指令系統(tǒng)33. 計算機所有的指令集合稱為該計算機的指令系統(tǒng)。34. 指令是基本格式:標號: 操作碼 目的操作數(shù) ,源操作數(shù) ;注釋標號:指令的符號地址;操作碼:規(guī)定指令的操作功能,是指令格式中唯一不能空缺的部分;操作數(shù):用于給指令的操作提供數(shù)據(jù)或地址。把左邊的操作數(shù)稱為目的操作數(shù),右邊的操作 數(shù)稱為源操作數(shù);注釋:注釋是對語句或程序段功能的說明。注釋用“:”開頭,可空缺。35. 按指令的功能分類:數(shù)據(jù)傳送指令(28條)、算術(shù)運算類指令(24條)、邏輯運算與移位類指令(25條)、控制轉(zhuǎn)移類指令

18、(17條)、位操作類指令(17條)。36.尋址方式立即尋址指令中跟在操作碼后面的數(shù)據(jù)就是實際參與運算的操作數(shù),稱為立即數(shù)。MCS-51指令系統(tǒng)中允許使用8位和16位立即數(shù),立即數(shù)之前加“#”予以標識。例:MOV A,#6DH MOV A,#3AH MOV DPTR,#0DFFFH MOV 40H,#30HMOV A,#60H MOV DPTR,#3400H MOV 30H,#40H直接尋址指令中包含了操作數(shù)的地址,該地址直接給出了參加運算或傳送的單元的地址。 直接尋址可訪問兩種地址空間: 特殊功能寄存器SFR(又叫做專用寄存器) 內(nèi)部數(shù)據(jù)存儲器RAM中的128個字節(jié)單元。例:MOV A,52H

19、 MOV A,P1 MOV 30H,20H MOV P0,P1寄存器尋址把指定的某一可尋址的工作寄存器R0R7或A,B(乘、除指令中),DPTR,的內(nèi)容作為操作數(shù)。例:MOV 53H,A MOV B,A MOV 20H,R1 MOV P0,R0寄存器間接尋址指令指定的某一寄存器的內(nèi)容作為操作數(shù)地址??捎脕黹g接尋址的寄存器有R0、R1和數(shù)據(jù)指針DPTR,前面加表示間接尋址??稍L問內(nèi)部RAM或外部數(shù)據(jù)存儲器。堆棧指針SP在執(zhí)行指令中也起到寄存器間接尋址的作用,但它不出現(xiàn)在指令表達形式中。實現(xiàn)間接尋址的地址指針:(1)Ri(R0、R1):尋址對象為片內(nèi)RAM的128個單元;(1)DPTR:尋址對象為

20、外部數(shù)據(jù)存儲器 。例:MOV A,R0 MOV B,R1 MOVX A,DPTR PUSH 20H POP ACC MOV R0,A MOVX A,R1 MOVX DPTR,A變址尋址基址寄存器(DPTR或PC):存放基準地址;變址寄存器(A):存放偏移量;基址寄存器的內(nèi)容與變址寄存器的內(nèi)容的和為可尋址單元的地址。該類尋址方式用于訪問程序存儲器,對查表訪問特別有用。注意:A中內(nèi)容為無符號數(shù)。例:MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR位尋址采用位尋址方式的操作數(shù)是8位二進制數(shù)中的某1位,指令中給出的是位址。尋址對象:片內(nèi)數(shù)據(jù)存儲器位尋址區(qū)中,位地址為00H7FH

21、的128位11個可位尋址的特殊功能寄存器中的82個有效可尋址位。例:MOV C,3AH SETB PSW,4 MOV C,00H MOV C,20H思考與練習(xí):Ø 3.4下列哪些指令是非法指令,并改正。CJNE A,#30H,ABC ;合法CJNE A,30H,ABC ;合法CJNE 30H,A,ABC;非法CJNE A,30H,ABCCJNE R7,#30H,ABC ;合法CJNE R5,#30H,ABC ;合法CJNE A,R4,ABC ;非法不存在這種格式CJNE A,R4,ABC ;非法不存在這種格式(CJNE A,#data,rel/CJNE A,direct,rel/CJ

22、NE Ri,#data,rel/CJNE Rn,#data,rel)DJNZ ACC,ABC ;合法DJNZ 30H,ABC ;合法(DJNZ Rn,rel/DJNZ direct,rel)INC DPTR ;合法(INC A/INC direct/INC Ri/INC Rn/INC DPTR)MOV A,R3 ;合法MOVX A,DPTR ;非法MOVX A,DPTR (MOVX A,DPTR/MOVX A,Ri/MOVX DPTR,A/MOVX Ri,A)DEC DPTR ;非法不存在這種格式(DEC A/DEC direct/DEC Ri/DEC Rn)JB 70H ;非法不存在這種格式

23、(JB bit,rel)ADDC B,DIRECT1 ;非法不存在這種格式(ADDC A,#data/ADDC A,direct/ADDC A,Ri/ADDC A,Rn)Ø 3.5指出源操作數(shù)的尋址方式。MOV A,#30H (立即尋址)MOV A,B (直接尋址)MOV P0,P1 (直接尋址) DIV AB (寄存器尋址)MOVC A,A+DPTR (變址尋址)MOV 30H,A (寄存器尋址)PUSH 30H (直接尋址)PUSH B (寄存器尋址)POP ACC (寄存器間接尋址)Ø 3.7寫出下列程序執(zhí)行的結(jié)果。(40H)=FFHMOV 50,#40H ;(50H

24、)=40HMOV R1,#50H ;R1=50HMOV A,R1 ;A=40HMOV R0,A ;R0=40HMOV 60H,R0 ;(60H)=FFHMOV 30H,60H ;(30H)=FFHØ 3.9分析下面程序執(zhí)行的結(jié)果。MOV SP,#2FH ;SP=2FHMOV A,#30H ;A=30HMOV B,#31H ;B=31HPUSH A ;SP=30H,(30H)=30HPUSH B ;SP=31H,(31H)=31HPOP A ;SP=30H,A=31HPOP B ;SP=2FH,B=30HØ 3.10分析執(zhí)行下列程序后A和標志位C,AC,OV及P的結(jié)果。MOV

25、 A,#0DH ;A=0DHMOV R7,#3DH ;R7=3DHADD A,R7 ;A=4AH,C=0,AC=1,OV=0,P=1第四章 51單片機的匯編語言程序設(shè)計37.偽指令:在對匯編語言進行翻譯的過程中,需要提供一些有關(guān)匯編的信息指令。這些指令在匯編時起到控制作用,但其自身不產(chǎn)生機器代碼。偽指令就是匯編程序能夠識別的匯編命令,它是程序員發(fā)給匯編程序的命令,只在匯編過程中起作用,它不是單片機要執(zhí)行的指令,所以沒有機器碼。起始偽指令ORG(ORIGIN)格式:<標號:>ORG<地址>功能:出現(xiàn)在源程序的開頭,用于規(guī)定目標程序存放的起始地址。例:程序如下: ORG 0

26、000H START:MOV A,#20H ADD A,#08H MOV 20H,A HERE:SJMP HERE結(jié)束偽指令END(END OF ASSEMBLY)格式:<標號:>END<表達式>功能:匯編終止命令,本命令用于終止源程序的匯編工作。例:程序如下: ORG 0000H START:MOV A,#20H ADD A,#08H MOV 20H,A HERE:SJMP HERE END賦值偽指令EQU(EQUATE)格式:<字符名稱>EQU<賦值項>功能:本命令用于給標號賦值。例:程序如下:PP EQO R0 QQ EQU 30H MOV

27、 A,PP ;把R0中的值送給A MOV B,QQ ;把30H中的值送給直接地址F0H定義字節(jié)偽指令DB(DEFINE BYTE)格式:<標號:>DB<8位數(shù)表>功能:定義字節(jié)命令,本命令用于從指定的地址開始,在程序存儲器的連續(xù)單元中定義字節(jié)數(shù)據(jù)。例:程序如下:ORG 0000H TAB:DB 00H,45H,67H,78H DB 78H,58H,90H,57H 匯編后結(jié)果:(0000H)=00H (0001H)=45H (0002H)=67H (0003H)=78H (0004H) =78H (0005H)=58H (0006H)=90H (0007H)=57H定義字

28、偽指令DW(DEFINE WORD)格式:<標號:>DW<16位數(shù)表>功能:定義數(shù)據(jù)字命令,本命令用于從指定地址開始,在程序存儲器的連續(xù)單元中定義16位的數(shù)據(jù)字。該命令將字數(shù)據(jù)表中的數(shù)據(jù)依從左到右的順序存放在指定的存儲單元中,數(shù)據(jù)字的高8位放在低地址單元,低8位放在高地址單元。例:程序如下:ORG 0030H TAB:DW 6789H,3456H DW 1234H,5678H 匯編后的結(jié)果:(0030H)=67H,(0031H)=89H (0032H) =34H,(0033H)=56H (0034H) =12H,(0035H)=34H (0036H) =56H,(003

29、7H)=87H位定義命令BIT格式:<字符名稱>BIT<位地址>功能:本命令用于給字符名稱賦以位地址。例:程序如下:AQ BIT P0.0 DEF BIT P1.0匯編結(jié)果:把P0.0的位地址賦給AQ,把P1.0的位地址賦給DEF。38. 程序設(shè)計舉例:【例4-2】設(shè)在片內(nèi)RAM中,20H和21H單元各存放有一個8位數(shù)據(jù),要求拼裝一個新字節(jié)并送30H保存,其低5位取自20H單元中的低5位,高3位取自21H單元中的低3位。實現(xiàn)程序如下:MOV 30H,20H ;20H單元中的數(shù)據(jù)送入30H單元ANL 30H,#00011111B ;屏幕高3位MOV A,21H ;21H單

30、元中的數(shù)據(jù)送入ASWAP A ;將A中的數(shù)據(jù)高低3位交換,循環(huán)左移4次RL A ;將A中數(shù)據(jù)再循環(huán)左移1次ANL A,#11100000B ;屏蔽A中數(shù)據(jù)的低5位ORL 30H,A ;完成拼裝【例4-6】設(shè)在外部RAM的3個連續(xù)存儲單元ST1/ST2和ST3中,ST1和ST2存放著兩個不帶符號的二進制數(shù),請找出其中的大數(shù)并存在ST3中。程序如下:START:CLR C ;進位位清0 MOV DPTR,#ST1 ;設(shè)置數(shù)據(jù)指針 MOVX A,DPTR ;取第一個數(shù) MOV R7,A ;暫存R7 INC DPTR ;數(shù)據(jù)指針加1 MOVX A,DPTR ;取第二個數(shù) SUBB R7 ;比較兩數(shù)的大

31、小 JNC BIG1 ;第二個數(shù)大轉(zhuǎn)移 XCH A,R7 ;第一個數(shù)大送ABIG0: INC DPTR ;數(shù)據(jù)指針加1 MOVX DPTR,A ;存大數(shù) RETBIG1: MOVX A,DPTR ;第二個數(shù)送A【例4-11】有一數(shù)據(jù)塊從片內(nèi)RAM的30H單元開始存入,設(shè)數(shù)據(jù)塊長度為10個單元。根據(jù)下式:求出Y的值,將Y值存入31H單元。程序如下: ORG 1000H MOV A,30H ;取數(shù) JB ACC.7,NEG ;負數(shù),轉(zhuǎn)NEG JZ ZERO ;為零,轉(zhuǎn)ZERO ADD A,#02H ;為正數(shù),求X+2 AJMP SAVE ;轉(zhuǎn)到SAVE,保存數(shù)據(jù)ZERO:MOV A,#64H ;數(shù)

32、據(jù)為零,Y=100 AJMP SAVE ;轉(zhuǎn)到SAVE,保存數(shù)據(jù)NEG:DEC ACPL A ;求|X|SAVE:MOV 31H,A ;保存數(shù)據(jù) SJMP $ ;暫?!纠?-13】在外部RAM首地址為table的數(shù)據(jù)表中,有10個字節(jié)的數(shù)據(jù),編程將每個字節(jié)的最高位無條件的置1。實現(xiàn)程序如下: MOV DPTR,#table ;送數(shù)據(jù)表首地址 MOV R7,#OAH ;置處理次數(shù)LOOP:MOVX A,DPTR ;取數(shù)據(jù) ORL A,#10000000B ;最高位置1 MOV X DPTR,A ;送回 INC DPTR ;地址加1 DJNZ R7,LOOP ;未處理完返回 SJMP $【例4-2

33、0】編寫一程序,實現(xiàn)下圖中邏輯運算電路。其中P3.1、P1.1、P1.0分別是單片機端口線上的信息,RS0、RS1是PSW寄存器的兩個標志位,30H、31H是兩個位地址,運算結(jié)果由P1.0輸出。程序如下:ORG 0000HMOV C,P3.1ANL C,P1.1CPL C MOV 20H,C;暫存數(shù)據(jù)MOV C,30HORL C,/31HANL C,RS1ANL C,20HANL C,RS0MOV P1.0,C ;輸出結(jié)果SJMP $思考與練習(xí):Ø 4.5編程:把內(nèi)部RAM20H單元開始有8個數(shù),試找出其中最大的數(shù),送入MAX單元。答:程序如下: MAX EQU 2AHSMAX:MO

34、V R0,#20H ;置數(shù)據(jù)區(qū)首地址 MOV MAX,R0 ;讀第一個數(shù)暫作最大數(shù) MOV R7,#7 ;置數(shù)據(jù)長度(N-1)LOOP:INC R0 ;指向下一個數(shù) MOV A,R0 ;讀下一個數(shù) CJNE A,MAX,NEXT ;數(shù)值比較,在C中產(chǎn)生大小標志NEXT:JC LOP1 ;C=1,表明A值小,轉(zhuǎn) MOV MAX,A ;C=0,表明A值大,大數(shù)送MAXLOP1:DJNZ R7,LOOP ;判數(shù)據(jù)比完否?未完比較下一個 RET ;數(shù)據(jù)比完,退出循環(huán)Ø 4.11編程實現(xiàn)邏輯運算:Y=G(H+C)+D(E+X)答:假設(shè)各個變量,對應(yīng)的計算機引腳如下兩式: Y = G (H +

35、C) + D (E + X)P1.0=P1.1*(P1.2+P1.3)+P1.4*(P1.5+P1.6)程序如下 MOV C, P1.2 ;取來H ORL C, P1.3 ;或上 C ANL C, P1.1 ;與上G MOV PSW.5, C ;暫時存放 MOV C, P1.5 ;取來E ORL C, P1.6 ;或上X ANL C, P1.4 ;與上D ORL C, PSW.5 ;或上前面結(jié)果 MOV P1.0,C ;輸出到Y(jié)第五章 51單片機的中斷系統(tǒng)39.51單片機共有5個中斷源,2個中斷優(yōu)先級,可以實現(xiàn)兩級中斷嵌套。40.中斷源就是引起中斷的來源,也可認為是中斷的原因。51單片機提供了

36、5個中斷源:兩個外部中斷請求和,兩個片內(nèi)計數(shù)器/定時器中斷T0和T1,另一個為片內(nèi)串行口中斷。41.外部中斷源:表TCON寄存器位結(jié)構(gòu)位置D7D6D5D4D3D2D1D0位地址8F8E8D8C8B8A8988位符號TF1TR1TF0TR0IE1IT1IE0IT0IT0是觸發(fā)方式控制位,即選擇外部中斷0是電平觸發(fā)方式還是下降沿觸發(fā)方式,此位可由軟件置位和復(fù)位;IE0是中斷下降沿請求標志位;IT1和IE1分別為外部中斷1的觸發(fā)方式控制位和下降沿中斷請求標志位。42.內(nèi)部中斷源:(1)定時器/計數(shù)器中斷源TF0是片內(nèi)定時器/計數(shù)器0溢出時中斷申請標志位。TF1是片內(nèi)定時器/計數(shù)器1溢出時中斷申請標志

37、位,功能與TF0相同。(2)串行口中斷:表SCON寄存器位結(jié)構(gòu):位置D7D6D5D4D3D2D1D0位地址9FH9EH9DH9CH9BH9AH99H98H位符號SM0SM1SM2RENIB8RB8TIRI TI是串行口發(fā)送完畢中斷標志位。當(dāng)TI=1時,就向CPU申請中斷,表示數(shù)據(jù)發(fā)送完畢; RI是串行口接收完畢中斷標志位。RI=1表示串行口接收器向CPU申請中斷。43.計算機中斷系統(tǒng)中有兩種不同類型的中斷:一種稱為非屏蔽中斷,另一種稱為可屏蔽中斷。對非屏蔽中斷,用戶不能用軟件方法加以禁止,一旦有中斷申請,CPU必須予以響應(yīng)。但對可屏蔽中斷,用戶則可以通過軟件方法來控制是否允許某中斷源的中斷。5

38、1系列單片機的5個中斷源都是可屏蔽中斷的。44.表中斷允許寄存器IE的位結(jié)構(gòu)位置D7D6D5D4D3D2D1D0位地址AFHADHACHABHAAHA9HA8H位符號EA-ESET1EX1ET0EX0EA是CPU中斷總允許位。當(dāng)EA=1時,開放中斷,而每個中斷是開放還是屏蔽分別由各自的允許位確定。EA=0,禁止所有中斷,不論其他為是否為1。ES是串行口中斷允許位。ES=1,允許串行口的接收和發(fā)送中斷;ES=0,禁止串行口中斷。ET1是開放或禁止定時器1溢出中斷位。ET1=0則禁止定時器1中斷,置位則開啟其中斷。EX1是外部中斷1的中斷允許位。EX1=0,則禁止外部中斷1中斷,EX=1,則開啟其

39、中斷。ET0是開放或禁止定時器0溢出中斷位。ET0=0則禁止定時器0中斷,置位則開啟其中斷。EX0是外部中斷0的中斷允許位。EX0=0,則禁止外部中斷0中斷,置位則開啟其中斷。45. 表中斷優(yōu)先級寄存器IP的位結(jié)構(gòu)位置D7D6D5D4D3D2D1D0位地址BDHBCHBBHBAHB9HB8H位符號-PSPT1PX1PT0PX0PS:串行口優(yōu)先級設(shè)定位。PS=1時,則編程為高優(yōu)先級。PT1:定時器1優(yōu)先級設(shè)定位。PT1=1時,則編程為高優(yōu)先級。PX1:外部中斷1優(yōu)先級設(shè)定位。PX1=1時,則編程為高優(yōu)先級。PT0: 定時器0優(yōu)先級設(shè)定位。PT0=1時,則編程為高優(yōu)先級。PX0:外部中斷0優(yōu)先級設(shè)

40、定位。PX0=1時,則編程為高優(yōu)先級。46.單片機對中斷優(yōu)先級的處理原則:CPU同時接收到幾個相同優(yōu)先級的中斷請求時,首先響應(yīng)優(yōu)先權(quán)最高的中斷請求;低優(yōu)先級中斷可以被高優(yōu)先級中斷所中斷;中斷不能被與它同級和比它低級的中斷所中斷;當(dāng)同一級中斷同時申請中斷時,按單片機系統(tǒng)內(nèi)部硬件查詢順序確定優(yōu)先級,用戶無法自行更改。47.各中斷源的入口地址:(熟記)中斷源入口地址外部中斷00003H定時器/計數(shù)器T0000BH外部中斷10013H定時器/計數(shù)器T1001BH串行口中斷0023H48.中斷響應(yīng)條件:相應(yīng)的中斷是開放的;沒有同級的中斷或更高級別的中斷正在處理;正在執(zhí)行的指令必須執(zhí)行完最后 1個機器周期

41、若正在執(zhí)行RETI,或正在訪問IE或IP寄存器,則必須執(zhí)行完當(dāng)前指令的下一條指令。后方能響應(yīng)中斷。49.設(shè)置中斷的初始化工作:單片機中斷系統(tǒng)初始化包括設(shè)置堆棧、選擇中斷觸發(fā)方式(對外中斷而言)、開中斷、設(shè)置中斷優(yōu)先級等,對定時器/計數(shù)器還要對運行控制位TR置位。50. 中斷服務(wù)程序的編寫:在中斷入口地址處設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷服務(wù)程序的實際入口處;保護現(xiàn)場;中斷服務(wù)主體程序;若是外中斷電平觸發(fā)方式,應(yīng)有中斷信號撤除操作;若是串行收發(fā)中斷,應(yīng)有對RI、TI清0指令;恢復(fù)現(xiàn)場;中斷返回。思考與練習(xí):Ø 5.7簡述中斷初始化過程。答: 設(shè)置堆棧指針SP;定義中斷優(yōu)先級(IP);選擇外

42、中斷觸發(fā)方式(TCON);開放相應(yīng)中斷允許(IE);安排好等待中斷或中斷發(fā)生前主程序應(yīng)完成的操作內(nèi)容,如設(shè)置計數(shù)器、串行口的有關(guān)參數(shù)等。Ø 5.8中斷服務(wù)程序的設(shè)計要考慮哪些因素?答:在中斷入口地址處設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷服務(wù)程序的實際入口處;保護現(xiàn)場;中斷服務(wù)主體程序;若是外中斷電平觸發(fā)方式,應(yīng)有中斷信號撤除操作;若是串行收發(fā)中斷,應(yīng)有對RI、TI清0指令;恢復(fù)現(xiàn)場;中斷返回。第六章 51單片機的定時器/計數(shù)器51. 定時器/計數(shù)器結(jié)構(gòu)框圖從圖中可以看出,51計數(shù)器是一個加1計數(shù)器,其計數(shù)源來自兩個,一個是端口T0的外部中斷源,另一個是系統(tǒng)振蕩器的12分頻,“計數(shù)源開關(guān)”可實

43、現(xiàn)兩個計數(shù)源的轉(zhuǎn)換,另一個開關(guān)為“控制開關(guān)”,用來決定加1計數(shù)器的開啟。這兩個模擬開關(guān)都是位開關(guān),通過對特殊功能寄存器(TMOD與TCON)的對應(yīng)位置1或清0來實現(xiàn)開關(guān)功能。52.所謂計數(shù)是指對外部事件進行的計數(shù)。計數(shù)功能的實質(zhì)就是對外部輸入脈沖進行計數(shù)。53.定時功能實際上也是通過計數(shù)器的計數(shù)來實現(xiàn)的。此時的計數(shù)脈沖源是通過對振蕩器12分頻得到,即一個機器周期產(chǎn)生一個計數(shù)脈沖,換句話說就是每個機器周期計數(shù)器加1,因此計數(shù)頻率為振蕩頻率的1/12。54.16位計數(shù)器,它的最大值為65535(16進制數(shù)為0FFFFH),加1計數(shù)器不斷進行對脈沖個數(shù)的累加,最終會達到這個最大值,如果此時計數(shù)器再加

44、1,就會使16位計數(shù)器的值變?yōu)?,并使中斷標志位置1,觸發(fā)中斷,這就是定時器/計數(shù)器的“溢出”。55.定時方式寄存器TMOD的位結(jié)構(gòu)位置D7D6D5D4D3D2D1D0位地址GATEC/M1M0GATE C/M1M0位符號定時器T1定時器T0GATE選通控制位。當(dāng)GATE=0時,由寄存器TCON中的運行控制位TRx啟動定時器X;當(dāng)DATE=1時,只有外中斷請求信號為高電平且TRx置位時,才啟動定時器X。C/定時方式或計數(shù)方式選擇位。C/=0為定時器工作方式;C/=1為計數(shù)器工作方式。M1M0工作方式選擇位。當(dāng)M1M0=00時,為方式013位定時器/計數(shù)器工作方式;當(dāng)M1M0=01時,為方式11

45、6位定時器/計數(shù)器工作方式;當(dāng)M1M0=10時,為方式2常數(shù)自動裝入的8位定時器/計數(shù)器工作方式;當(dāng)M1M0=11時,為方式3僅適用于定時器T0,為兩個8位定時器/計數(shù)器工作方式。在方式3時,定時器T1停止計數(shù)。56.定時控制寄存器TCON既參與中斷控制又參與定時控制。TF0定時器0計數(shù)溢出標志位。TR0定時器0運行控制位。TR=0,關(guān)閉定時器/計數(shù)器0,反之則開啟。TF1定時器1計數(shù)溢出標志位。TR1定時器1運行控制位。57.定時器/計數(shù)器初值計算(1)計數(shù)初值計算:方式0:X=213S方式1:X=216S方式2或方式3:X= S(其中X值計數(shù)初值,即時間常數(shù);S指輸入脈沖數(shù))(2)定時初值

46、計算:定時時間 t=S*TM=(2N-X) * 12/fosc (其中t指計滿溢出時間;S指輸入脈沖數(shù); TM指機器周期; 2N指計數(shù)器位數(shù);X指計數(shù)初值即時間常數(shù);fosc指振蕩頻率)定時方式0 計數(shù)初值X= 213 t * fosc/12定時方式1 計數(shù)初值X= 216 t * fosc/12定時方式2或3 計數(shù)初值X= 28 t * fosc/1258.定時器/計數(shù)器初始化步驟:(1)根據(jù)定時器/計數(shù)器的工作方式,設(shè)置TMOD ;(2)計算定時器/計數(shù)器的初值,寫入T0(TH0、TL0), T1(TH1、TL1);(3)設(shè)置IE、IP,以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級;(4)使TR0/T

47、R1置位,啟動定時/計數(shù)器。59.定時器/計數(shù)器的工作方式:方式0:此時的計數(shù)器是一個13位寄存器結(jié)構(gòu);方式1:方式1是16位計數(shù)結(jié)構(gòu)的工作方式;方式2:方式2與方式0、1的區(qū)別除了計數(shù)位數(shù)不一樣外(方式2是8位計數(shù)結(jié)構(gòu)),最顯著的區(qū)別就是計數(shù)器計數(shù)溢出時,能夠自動裝載初值。思考與練習(xí):Ø 6.7已知單片機系統(tǒng)時鐘頻率為6MHz,利用定時器0控制P2.1口,使其輸出周期為60ms,占空比為2:1的方波。答:設(shè)定時間基準為20ms,即定時時間為20ms。則定時初值高電平的軟件計數(shù)為2,低電平的軟件計數(shù)為1.主程序如下:- 26 -計算機應(yīng)用技術(shù)071班 胡劍穎整理 僅供計算機應(yīng)用技術(shù)專

48、業(yè)期末考試復(fù)習(xí) 祝愿期末通過ORG 0000HLJMP MAINORG 000BHLJMP INT0MAIN:SETB P2.1 MOV R2,#02H MOV TMOD,#01H MOV TH0,#D8H MOV TL0.#0F0H SETB ET0 SETB EA SETB TR0 SJMP $INT0:PUSH PSW PUSH ACC MOV TH0.#D8H MOV TL0,#0F0H DJNE R2,EXITCPL P2.1JNB P2.1MOV R2,#02HSJMP EXITL1:MOV R2.#01H POP ACC POP PSWEXIT:RETIENDØ 6.9利用定時器定0,循環(huán)點亮8個發(fā)光二極管,每個持續(xù)時間0.5s。試畫出電路圖并編寫程序。答:假設(shè)單片機晶振頻率為12MHZ,那么模式1最多能定時65.526ms,對于1秒的定時,必須設(shè)置一個軟件計數(shù)器,進行軟硬結(jié)合進行定時。假定讓定時器定時50ms,軟件計數(shù)器R7初

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論