




已閱讀5頁,還剩59頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
單片機應(yīng)用技術(shù)教案單片機應(yīng)用技術(shù)電子教案佛山職業(yè)技術(shù)學(xué)院Foshan Polytechnic 教學(xué)單元:程序設(shè)計基礎(chǔ)教學(xué)時數(shù): 2學(xué)時教學(xué)方法: 一體化教學(xué)教學(xué)目的:1、掌握89C51單片機存儲器結(jié)構(gòu); 2、掌握89C51單片機片內(nèi)數(shù)據(jù)存儲器結(jié)構(gòu); 3、掌握51單片機七種尋址方式。教學(xué)重點:89C51單片機片內(nèi)數(shù)據(jù)存儲器結(jié)構(gòu),51單片機七種尋址方式。教學(xué)難點:51單片機七種尋址方式。教學(xué)過程模塊二 單片機指令系統(tǒng)及匯編語言程序設(shè)計課題一 程序設(shè)計基礎(chǔ)任務(wù)一 存儲器認(rèn)識一、任務(wù)目標(biāo) 通過本任務(wù)的學(xué)習(xí)掌握單片機的存儲器結(jié)構(gòu)及作用。二、任務(wù)分析 51系列單片機有兩種存儲器(程序存儲器和數(shù)據(jù)存儲器)和4個存儲空間(內(nèi)部程序存儲器、外部程序存儲器、內(nèi)部數(shù)據(jù)存儲器、外部數(shù)據(jù)存儲器)。 89C51單片機片內(nèi)程序存儲器容量為4KB,地址為0000H0FFFH;片外程序存儲器最大容量為64KB,地址為0000H FFFFH;內(nèi)部數(shù)據(jù)存儲器容量為256B,地址為00HFFH;外部數(shù)據(jù)存儲器最大容量為64KB,地址為0000HFFFFH。 內(nèi)部數(shù)據(jù)存儲器根據(jù)其用途的不同又分為兩部分:低128字節(jié)為用戶使用,稱為RAM區(qū);高128字節(jié)為單片機功能控制用,稱為特殊功能寄存器區(qū)(簡稱SFR區(qū))。89C51單片機存儲器的配置圖如圖2-1所示。圖2-1 89C51單片機存儲器的配置圖三、相關(guān)知識1、 程序存儲器 89C51單片機程序存儲器為16位地址,可尋址的范圍為64KB,因此片外程序存儲器最大容量為64KB,而片內(nèi)程序存儲器容量為4KB。在物理結(jié)構(gòu)上分為片內(nèi)程序存儲器和片外程序存儲器兩個部分,在邏輯結(jié)構(gòu)上(即用戶使用角度)為一個部分,采用同一指令(MOVC指令)進行訪問,用外部引腳電平高低區(qū)分低4KB空間訪問的是內(nèi)部程序存儲器還是外部程序存儲器。2、數(shù)據(jù)存儲器51系列單片機的數(shù)據(jù)存儲器在物理上和邏輯上都分為兩個地址空間,一個是片內(nèi)數(shù)據(jù)存儲器,另一個是片外數(shù)據(jù)存儲器。(1) 片內(nèi)數(shù)據(jù)存儲器89C51單片機片內(nèi)256個字節(jié)數(shù)據(jù)存儲器分為兩部分:低128字節(jié)為用戶數(shù)據(jù)RAM單元,地址為00H7FH,該部分為用戶數(shù)據(jù)存取使用;高128字節(jié)為特殊功能寄存器(SFR)單元,地址為80HFFH,該部分為單片機功能控制用。片內(nèi)數(shù)據(jù)存儲器低128字節(jié)根據(jù)用途的不同,又可分為3個區(qū):工作寄存器區(qū),地址為00H1FH,共32個字節(jié),該區(qū)為工作寄存器用;位尋址區(qū),地址為20H2FH,共16個字節(jié)128位,位地址為00H7FH,該區(qū)單元既可按字節(jié)操作,又可按位操作;用戶RAM區(qū),地址為30H7FH,共80個字節(jié),該區(qū)為用戶數(shù)據(jù)存取用,只能按字節(jié)操作。工作寄存器區(qū)32個字節(jié)被均勻地分為4個組:第0組工作寄存器,地址為00H07H;第1組工作寄存器,地址為08H0FH;第2組工作寄存器,地址為10H17H;第3組工作寄存器,地址為18H 1FHH。每組工作寄存器有8個寄存器,均以R0R7來命名。在程序運行時,究竟用哪組工作寄存器,要通過特殊功能寄存器中的程序狀態(tài)字寄存器(PSW)的第3和第4位(RS0和RS1)的值來加以區(qū)分。特殊功能寄存器區(qū)離散地分布了21個特殊功能寄存器,這些寄存器反映了51單片機的運行狀態(tài),很多功能均是通過特殊功能寄存器來定義和控制執(zhí)行的,這些寄存的功能已作了專門的規(guī)定,用戶不能修改其結(jié)構(gòu)。如累加器A、寄存器B、程序狀態(tài)字寄存器PSW、數(shù)據(jù)指針DPTR、I/O口寄存器P0、P1、P2、P3等均為特殊功能寄存器。89C51單片機片內(nèi)數(shù)據(jù)存儲器結(jié)構(gòu)如下圖所示。(2)片外數(shù)據(jù)存儲器結(jié)構(gòu) 51單片機片外數(shù)據(jù)存儲器為16位地址空間,因此最多可擴充64KB。四、任務(wù)實施1、單片機存儲器總體分配51單片機存儲器程序存儲器數(shù)據(jù)存儲器片內(nèi)程序存儲器4KB地址:0000H0FFFH片外程序存儲器64KB地址:0000HFFFFH片內(nèi)數(shù)據(jù)存儲器256B地址:00HFFH片外數(shù)據(jù)存儲器64KB地址:0000HFFFFHRAM區(qū)128B地址:00H7FHSFR區(qū)128B地址:80HFFH工作寄存器區(qū)32B地址:00H1FH位尋址區(qū)16B地址:20H2FH用戶RAM區(qū)80B地址:30H7FH第0組工作寄存器8B地址:00H07H第1組工作寄存器8B地址:08H0FH第2組工作寄存器8B地址:10H17H第3組工作寄存器8B地址:18H1FH數(shù)據(jù)存儲器功能:存放用戶數(shù)據(jù)訪問方式:即能讀又能寫片內(nèi)數(shù)據(jù)存儲器訪問指令:MOV片外數(shù)據(jù)存儲器訪問指令:MOVXRAM區(qū)用途:用戶使用工作寄存器區(qū)用途:工作寄存器用位尋址區(qū)用途:位尋址用用戶RAM區(qū)用途:用戶存取數(shù)據(jù)用2、單片機存儲器各部分的功能及使用注意任務(wù)二 尋址方式一、任務(wù)目標(biāo) 通過本任務(wù)的學(xué)習(xí),應(yīng)熟練掌握單片機的7種尋址方式。二、任務(wù)分析51單片機有7種尋址方式:立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。三、相關(guān)知識1、特殊功能寄存器(1) 累加器ACC 累加器ACC是一個最常用的特殊功能寄存器,累加器的地址為E0H,在指令中常將ACC簡寫為A。大部分單操作數(shù)指令的操作數(shù)取自累加器,很多雙操作數(shù)指令中的一個操作數(shù)也取自累加器。加、減、乘、除運算指令的運算結(jié)果都存放于累加器A或累加器A和寄存器B中。(2) 程序狀態(tài)字寄存器PSW 程序狀態(tài)字也是一個特殊功能寄存器,它在SFR中的地址為D0H,用于存放程序運行的狀態(tài)信息。寄存器的各位定義及功能見表2-1。表2-1 程序狀態(tài)字PSW各位定義及位功能表位序位標(biāo)志位名稱功能PSW.0P奇偶校驗位表示累加器A內(nèi)容的奇偶性,改變A中內(nèi)容的指令會影響奇偶標(biāo)志位。若A中有奇數(shù)個“1”,則P置“1”,否則清“0”。PSW.1PSW.2OV溢出標(biāo)志位執(zhí)行加法指令時,當(dāng)位6向位7有進位或借位,而位7向CY沒有進位或借位時,OV=1?;蛘呶?向位7沒有進位或借位,而位7向CY有進位或借位時,同樣OV=1。所以O(shè)V為位6的進位或借位與位7的進位或借位的異或,即OV=CY6CY7 (其中CY6表示位6的進位或借位,CY7表示位7的進位或借位)。執(zhí)行乘法指令時,乘積超過255時,OV=1,乘積在AB寄存器對中。若OV=0,則說明乘積沒有超過255,乘積只在累加器A中。 執(zhí)行除法指令時,OV=1,表示除數(shù)為0,運算不被執(zhí)行;否則OV=0。PSW.4PSW.3RS1RS0工作寄存器組選擇控制位RS1 RS0 工作寄存器組0 0 第0組(00H07H)0 1 第1組(08H0FH)1 0 第2組(10H17H)1 1 第3組(18H1FH)PSW.5F0用戶標(biāo)志位 供用戶設(shè)置的標(biāo)志位,由軟件置“1”或清“0”。PSW.6AC輔助進位標(biāo)志位進行加、減運算時,當(dāng)?shù)?位向高4位有進位或借位時,AC置“1”,否則清“0”。該位主要用于十進制調(diào)整。PSW.7CY進位標(biāo)志位 此位有兩個功能:一是執(zhí)行加法或減法運算時,存放運算結(jié)果的進位或借位標(biāo)志,當(dāng)運算結(jié)果的最高位有進位或借位時置“1”,否則清“0”。二是在位操作中作累加位使用,在指令中常簡寫為C。 (3) 數(shù)據(jù)指針DPTR 數(shù)據(jù)指針為16位寄存器,其地址為83H和82H,編程時既可以按16位寄存器來使用,也可以按2個8位寄存器來使用,即高字節(jié)寄存器DPH(地址為83H)和低字節(jié)寄存器DPL(地址為82H)。DPTR主要是用來存放16位地址,當(dāng)對64KB外部數(shù)據(jù)存儲器尋址時,作為間址寄存器使用。當(dāng)訪問程序存儲器時,DPTR可用來作基址寄存器,采用基址+變址尋址方式訪問程序存儲器。2、程序計數(shù)器PC 程序計數(shù)器在物理上是獨立的,它不屬于特殊功能寄存器區(qū)中的寄存器。PC是一個16位的計數(shù)器,用于存放一條要執(zhí)行的指令地址,尋址范圍為64KB,PC有自動加1功能,即執(zhí)行完一條指令后,其內(nèi)容自動加1。PC本身并沒有地址,因而不可尋址,用戶無法對它進行讀寫,但是可以通過轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,以控制程序按用戶要求去執(zhí)行。3、片內(nèi)RAM位尋址區(qū)位地址片內(nèi)RAM位尋址區(qū)20H2FH單元,共有16個字節(jié),128個位,位地址為00H7FH,位地址分配見表2-2,CPU能直接尋址這些位,執(zhí)行例如置“1”、清“0”、取反、位傳送和位邏輯運算等操作。表2-2 片內(nèi)RAM位尋址區(qū)位地址表單元地址MSB位地址LSB2FH7FH7EH7DH7CH7BH7AH79H78H2EH77H76H75H74H73H72H71H70H2DH6FH6EH6DH6CH6BH6AH69H68H2CH67H66H65H64H63H62H61H60H2BH5FH5EH5DH5CH5BH5AH59H58H2AH57H56H55H54H53H52H51H50H29H4FH4EH4DH4CH4BH4AH49H48H28H47H46H45H44H43H42H41H40H27H3FH3EH3DH3CH3BH3AH39H38H26H37H36H35H34H33H32H31H30H25H2FH2EH2DH2CH2BH2AH29H28H24H27H26H25H24H23H22H21H20H23H1FH1EH1DH1CH1BH1AH19H18H22H17H16H15H14H13H12H11H10H21H0FH0EH0DH0CH0BH0AH09H08H20H07H06H05H04H03H02H01H00H 4、七種尋址方式(1) 立即尋址 立即尋址就是把操作數(shù)(指令的操作對象)直接在指令中給出,即操作數(shù)包含在指令中,指令操作碼的后面緊跟著參與運算的操作數(shù),一般把指令中的操作數(shù)稱為立即數(shù)。為了與直接尋址相區(qū)別,在立即數(shù)前加上“#”號。 例如:MOVX A, #20H這條指令的意思是將20H這個操作數(shù)送到累加器A中。(2) 直接尋址 直接尋址就是指令中直接給出操作數(shù)的地址。 例如:MOV A, 30H這條指令的意思是把片內(nèi)RAM中的30H單元中的數(shù)據(jù)內(nèi)容傳送到累加器A中。(3) 寄存器尋址 寄存器尋址就是操作數(shù)放在當(dāng)前工作寄存器組的寄存器(R0R7)中,當(dāng)前工作寄存器組的選擇是通過程序狀態(tài)字寄存器PSW的RS1和RS0來確定的,參見表2-1。 例如:MOV A, R1這條指令的意思是把當(dāng)前工作寄存器組中的R1的內(nèi)容送到累加器A中。(4) 寄存器間接尋址 寄存器間接尋址方式就是操作數(shù)放在寄存器指向的地址單元中,即寄存器中存放的是操作數(shù)的地址。在間接地址寄存器前面一定要加符號,在寄存器R0R7中只有R0和R1可作間接地址寄存器用。 例如:MOVA,R0 這條指令的意思是R0寄存器指向的地址單元中的內(nèi)容送到累加器A中。如R0=50H,就是將50H單元中的數(shù)據(jù)送到累加器A中。(5) 變址尋址 變址尋址是以DPTR或PC作為基址寄存器,以累加器A作為變址寄存器,將兩寄存器的內(nèi)容相加形成16位地址,作為操作數(shù)的實際地址。 例如: MOVCA, A+DPTR MOVCA, A+PC 在這兩條指令中,A作為變址(偏移量)寄存器,DPTR或PC作為基址寄存器,A與 DPTR或PC的內(nèi)容相加,得到訪問單元的實際地址。(6) 相對尋址 相對尋址方式是為程序的相對轉(zhuǎn)移而設(shè)計的,以PC當(dāng)前值的內(nèi)容為基址,加上指令中給出的偏移量作為轉(zhuǎn)移目的地址,從而實現(xiàn)程序的轉(zhuǎn)移。轉(zhuǎn)移的目的地址可按下式計算: 目的地址=轉(zhuǎn)移指令地址+轉(zhuǎn)移指令字接數(shù)+偏移量 例如:JNZ 60H 這條指令的意思是:若累加器A為0則程序順序執(zhí)行,即不跳轉(zhuǎn),PC=PC+2;若累加器A不為0,則以PC當(dāng)前值的內(nèi)容為基址,加上指令中給出的偏移量60H后所得的結(jié)果作為程序轉(zhuǎn)移的目的地址。(7) 位尋址 在51系列單片機中,RAM中的位尋址區(qū)20H-2FH單元對應(yīng)的位地址為00H7FH。某些特殊功能寄存器(地址末位數(shù)為0或8,或者是地址能被8整除的特殊功能寄存器)也可進行位尋址,對這些單元既可以采用字節(jié)方式訪問,也可采用位尋址的方式訪問。 例如:SETB 5FH 這條指令的意思是將5FH位(即片內(nèi)RAM中2BH單元的第7位)置“1”。四、任務(wù)實施1、51單片機七種尋址方式七種尋址方式立即尋址直接尋址寄存器間接尋址寄存器尋址變址尋址相對尋址位尋址操作數(shù)在指令中直接給出操作數(shù)地址在指令中直接給出操作數(shù)在寄存器中操作數(shù)的地址在寄存器中操作數(shù)的地址由基址寄存器(DPTR或PC)的內(nèi)容與變址寄存器(A)的內(nèi)容相加得到在轉(zhuǎn)移指令中,以PC當(dāng)前值為基址,加上指令中給出的相對偏移量作為轉(zhuǎn)移目的地址操作數(shù)地址在片內(nèi)數(shù)據(jù)存儲器的位尋址區(qū)或可位尋址的特殊功能寄存器的位中例: MOV A , #20H例: MOV A , 20H例: MOV A , R0例: JZ30H例: MOVCA , A+DPTR MOVC A , A+PC例: MOV A , R0MOVX A , DPTR例: SETB50H 2、 不同存儲器空間采用的尋址方式外部程序存儲器內(nèi)部程序存儲器外部數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器SFR區(qū)用戶RAM區(qū)位尋址區(qū)工作寄存器區(qū)立即尋址(操作數(shù)在指令中)寄存器間接尋址(A+DPTR、A+PC)相對尋址(PC+指令中給出的偏移量)寄存器間接尋址(R0、R1、DPTR)直接尋址直接尋址、寄存器間接尋址(R0、R1)位尋址、直接尋址、寄存器間接尋址(R0、R1)寄存器尋址(R0R7)、直接尋址寄存器間接尋址(R0、R1)小結(jié)1、89C51單片機存儲器結(jié)構(gòu)。2、89C51單片機片內(nèi)數(shù)據(jù)存儲器結(jié)構(gòu)。3、51單片機七種尋址方式。課后作業(yè)1、 簡述單片機存儲器總體分配情況。2、 簡述單片機片內(nèi)數(shù)據(jù)存儲器結(jié)構(gòu)。3、 簡述單片機七種尋址方式。4、 簡述單片機不同存儲器空間的尋址方式。5、 回答下列指令的尋址方式:(1) MOV A, #6AH(2) MOV A, #0E#H(3) MOV A, 3FH(4) MOV A, 7BH(5) MOV A, R1(6) MOV A, R3(7) MOV A, R0(8) MOV A, R1(9) MOVX A, DPTR(10) MOVC A, A+DPTR(11) MOV A, A+PC(12) JZ 50H(13) SETB 01H教學(xué)單元: 延時程序教學(xué)時數(shù): 2學(xué)時教學(xué)方法: 一體化教學(xué)教學(xué)目的:1、了解循環(huán)程序結(jié)構(gòu)。 2、掌握延時程序中的相關(guān)指令及應(yīng)用。 3、掌握延時程序的設(shè)計方法。教學(xué)重點:延時程序的設(shè)計方法。教學(xué)難點:相關(guān)指令及應(yīng)用。教學(xué)過程課題二 延時程序任務(wù)一 延時程序設(shè)計一、任務(wù)目標(biāo) 本任務(wù)主要講解如何設(shè)計出一個規(guī)定延時時間(本任務(wù)中延時時間為1S)的延時程序。二、任務(wù)分析軟件延時程序的主要設(shè)計思想是利用循環(huán)體為空操作或無循環(huán)體的循環(huán)程序,只占用CPU的時間,而不進行任何實質(zhì)性操作,來實現(xiàn)延時功能。在51系列單片機中無專用的循環(huán)指令,通常用寄存器Rn減1不為0則轉(zhuǎn)移指令DJNZ Rn,rel 來實現(xiàn)循環(huán)變量改變及循環(huán)結(jié)束控制。循環(huán)程序結(jié)構(gòu)流程圖如圖2-3所示。單片機的機器周期一般為幾個微秒,所以要實現(xiàn)較長時間的延時,需用多重循環(huán)。如圖2-4所示為兩重循環(huán)程序結(jié)構(gòu)流程示意圖,三重以上循環(huán)程序結(jié)構(gòu)與此類似。N循環(huán)變量賦初值循環(huán)體循環(huán)變量減1 及 循環(huán)結(jié)束判斷MOV Rn,#dataDJNZ Rn,k在延時程序中循環(huán)體為空操作指令NOP或無循環(huán)體開始結(jié)束YKY第二重循環(huán)變量賦初值第一重循環(huán)變量賦初值循環(huán)體第一重循環(huán)變量減1 及循環(huán)結(jié)束判斷第二重循環(huán)變量減1 及循環(huán)結(jié)束判斷開始結(jié)束YNNMOV Rn2,#data2MOV Rn1,#data1NOPDJNZ Rn1,k1DJNZ Rn2,k2K2K1圖2-3 循環(huán)程序結(jié)構(gòu)流程圖圖2-4 兩重循環(huán)程序結(jié)構(gòu)流程示意圖三、相關(guān)知識1、以工作寄存器Rn為目的操作數(shù)的數(shù)據(jù)傳送指令格式: MOV 目的操作數(shù),源操作數(shù)功能:目的操作數(shù)源操作數(shù)中的數(shù)據(jù) MOV Rn,A ;RnA MOV Rn,#data;Rndata MOV Rn,direct;Rn(direct)這3條指令的功能是把源操作數(shù)的內(nèi)容傳送給工作寄存器組R0R7中的某個寄存器。指令執(zhí)行后,源操作數(shù)的內(nèi)容不變,目的操作數(shù)(工作寄存器)的內(nèi)容修改為源操作數(shù)。書寫指令時要注意:Rn代表R0R7中的一個工作寄存器,沒有MOV Rn1, Rn2指令。2、工作寄存器減1不為0的轉(zhuǎn)移指令 DJNZ Rn,rel ;RR1 ;Rn0轉(zhuǎn)移 ;Rn=0順序執(zhí)行下一條指令 DJNZ direct,rel ; (direct) (direct)1 ; (direct)0轉(zhuǎn)移 ;(direct)=0順序執(zhí)行下一條指令這兩條指令將源操作數(shù)減1,結(jié)果仍送回源操作數(shù),如結(jié)果不等于0則轉(zhuǎn)移,如結(jié)果等于0,則順序執(zhí)行下一條指令。rel為相對偏移量,即相對本指令的下一條指令轉(zhuǎn)移的字節(jié)數(shù),rel是一個8位帶符號數(shù),其數(shù)值為-128+127,負(fù)數(shù)表示向后轉(zhuǎn)移,正數(shù)表示向前轉(zhuǎn)移,所以轉(zhuǎn)移范圍為相對本轉(zhuǎn)移指令的下一條指令的-128+127共256個單元。執(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通常用目的地址的標(biāo)號表示,在程序匯編時由計算機自動計算出指令的相對轉(zhuǎn)移偏移量,并填入指令代碼中。3、空操作指令 NOP ;PC PC1該指令控制CPU不進行任何操作(即空操作)而轉(zhuǎn)到下一條指令,常用于產(chǎn)生一個機器周期的延遲。4、指令應(yīng)用舉例 例2-1 已知A=3FH,R1=40H,R2=50H,R3=60H,(A0H)=E8H,分析執(zhí)行下列指令后R1、R2、R3中的內(nèi)容。指令解釋結(jié)果MOV R1, AR1 AR1=3FHMOV R2, 0A0HR2(A0H)R2=E8HMOV R3, #0DBHR3 DBHR3=DBH例2-2 已知R0的當(dāng)前值為10,分析DJNZ R0,K指令執(zhí)行一次后,程序轉(zhuǎn)至何處。K: NOPDJNZ R0,KMOV R1,#0BFH分析:因R0當(dāng)前值為10,所以DJNZ R0,K執(zhí)行一次后,R0的值為R0=10-1=90,所以程序跳轉(zhuǎn)至標(biāo)號為K的指令處執(zhí)行。例2-3 已知R5的當(dāng)前值為1,分析DJNZ R5,K指令執(zhí)行一次后,程序轉(zhuǎn)至何處。 K: NOPDJNZ R5,KMOV R6,#90H分析:因R5當(dāng)前值為1,所以DJNZ R5,K執(zhí)行一次后,R5的值為R5=1-1=0,所以程序不發(fā)生跳轉(zhuǎn),順序執(zhí)行下一條指令MOV R6,#90H。四、任務(wù)實施 設(shè)系統(tǒng)晶振頻率為12MHz,則機器周期為1us。要求延時時間為1S,則應(yīng)用三重循環(huán)結(jié)構(gòu)。 設(shè)R1為第一重循環(huán)變量,初值為250;R2為第二重循環(huán)變量,初值為250;R3為第三重循環(huán)變量,初值為4。循環(huán)變量賦初值用MOV Rn,#data指令,分別為“MOV R3,#4”,“MOV R2,#250”,“MOV R1,#250”;循環(huán)體為兩條空操作NOP指令;循環(huán)變量減1及循環(huán)結(jié)束判斷用DJNZ Rn,rel指令,分別為“DJNZ R1,K1”,“DJNZ R2,K2”,“DJNZ R3,K3”。 根據(jù)上面分析設(shè)計出的延時1S的延時程序如下: MOV R3, #4 ;給第三重循環(huán)變量R3賦初值4第一重循環(huán)第三重循環(huán)第二重循環(huán)K3: MOV R2, #250 ;給第二重循環(huán)變量R2賦初值250K2: MOV R1, #250 ;給第一重循環(huán)變量R1賦初值250K1: NOP ;空操作,占用1個機器周期 NOP ;空操作,占用1個機器周期 DJNZ R1, K1 ;R1減1不為0則轉(zhuǎn)移至K1處,若為0則順序執(zhí)行下一條指令 DJNZ R2, K2 ;R2減1不為0則轉(zhuǎn)移至K2處,若為0則順序執(zhí)行下一條指令 DJNZ R3, K3 ;R3減1不為0則轉(zhuǎn)移至K3處,若為0則順序執(zhí)行下一條指令小結(jié)1、 延時程序中用到的相關(guān)指令。2、 循環(huán)程序設(shè)計方法。課后作業(yè)1、在本任務(wù)中,如要求延時時間為0.5S或2S,則延時程序中循環(huán)變量R3的初值應(yīng)如何修改?2、在本任務(wù)中,如循環(huán)變量R3的初值為12,則延時程序的延時時間為多少?教學(xué)單元: 延時程序教學(xué)時數(shù): 2學(xué)時教學(xué)方法: 一體化教學(xué)教學(xué)目的:1、掌握交替間隔1S左移循環(huán)亮燈程序中的相關(guān)指令。 2、掌握交替間隔1S左移循環(huán)亮燈程序設(shè)計方法。 3、掌握單片機幾個時間單位概念及計算。 4、掌握延時程序的延時時間的計算方法。教學(xué)重點:1、交替間隔1S左移循環(huán)亮燈程序設(shè)計方法。 2、延時程序的延時時間的計算方法。教學(xué)難點:相關(guān)指令及應(yīng)用。教學(xué)過程任務(wù)二 延時程序驗證一、任務(wù)目標(biāo) 本任務(wù)通過一交替間隔1S循環(huán)左移亮燈電路來觀察和驗證任務(wù)一設(shè)計的延時程序的正確性。二、任務(wù)分析根據(jù)設(shè)計任務(wù)得出如圖2-5所示的亮燈情況示意圖。 將8只發(fā)光二極管接于P1口,將上述亮燈數(shù)據(jù)送P1口即可觀察到8只發(fā)光二極管的亮燈情況。根據(jù)上述亮燈示意圖可得如圖2-6所示的程序結(jié)構(gòu)流程圖。亮燈步驟L8 L7 L6 L5 L4 L3 L2 L11 2 3 4 5 6 7 8 表示燈滅表示燈亮圖2-5交替間隔循環(huán)左移亮燈示意圖將A的數(shù)據(jù)左移一位開始亮燈數(shù)據(jù)初值送A將A的數(shù)據(jù)送P1口亮燈延時1S無條件轉(zhuǎn)移至K處KMOV A, #01HMOV P1, A任務(wù)一中的延時程序RL ASJMP K 圖2-6 交替間隔循環(huán)左移亮燈程序流程圖三、相關(guān)知識、 1、以累加器A為目的操作數(shù)的數(shù)據(jù)傳送指令 MOVA,#data;Adata MOVA,direct;A(direct) MOVA,Rn ;ARn MOVA,Ri;A(Ri) 這4條指令是將源操作數(shù)的內(nèi)容傳送給累加器A,源操作數(shù)的尋址方式有立即尋址、直接尋址、寄存器尋址和寄存器間接尋址4種。2、循環(huán)移位指令 RL A ;累加器A的內(nèi)容向左循環(huán)移一位 RR A ;累加器A的內(nèi)容向右循環(huán)移一位 RLC A ;累加器A的內(nèi)容帶進位標(biāo)志位向左循環(huán)移一位 RRC A ;累加器A的內(nèi)容帶進位標(biāo)志位向右循環(huán)移一位循環(huán)移位指令的執(zhí)行示意圖如圖2-7所示。RL ARLC ARR ARRC A圖2-7 循環(huán)移位指令的執(zhí)行示意圖3、無條件轉(zhuǎn)移指令 LJMP addr16 ;PC addr16 AJMP addr11 ;PC PC+2, PC100 addr11 SJMP rel ;PC PC+2,PC PC+rel JMP A+DPTR ; PC A+DPTRLJMP addr16指令為長轉(zhuǎn)移指令,將16位目標(biāo)地址addr16裝入PC,程序無條件轉(zhuǎn)向指定的目標(biāo)地址執(zhí)行。轉(zhuǎn)移指令的目標(biāo)地址可在64KB程序存儲器地址空間的任何單元,不影響任何標(biāo)志位。在程序設(shè)計時addr16通常用轉(zhuǎn)移目的地址的標(biāo)號表示。AJMP addr11指令為絕對轉(zhuǎn)移指令,執(zhí)行該指令時,先將PC加2,然后將addr11(目的地址的低11位)送入PC10PC0,而PC15PC11保持不變。 這樣實際轉(zhuǎn)移的目的地址為AJMP下一條指令的高5位地址加上目的地址的低11位,而想要轉(zhuǎn)移的目的地址要與實際轉(zhuǎn)移的目的地址相同,程序執(zhí)行才不會發(fā)生錯誤,所以必須使想要轉(zhuǎn)移的目的地址的高5位與AJMP下一條指令地址的高5位相同,即想要轉(zhuǎn)移的目的地址與AJMP下一條指令必須在同一個2KB的存儲器區(qū)域內(nèi)。在程序設(shè)計中addr11通常用目的地址的標(biāo)號表示,實際目的地址由匯編程序自動計算出。 SJMP rel指令為相對轉(zhuǎn)移指令,rel為相對偏移量,即相對SJMP的下一條指令轉(zhuǎn)移的字節(jié)數(shù),有關(guān)rel的解釋、rel的計算及轉(zhuǎn)移目標(biāo)地址的計算參見本課題任務(wù)一。 JMP A+DPTR指令為間接轉(zhuǎn)移指令,指令執(zhí)行時,把累加器A中的8位無符號數(shù)與作為基址的數(shù)據(jù)指針DPTR中的16位數(shù)相加作為轉(zhuǎn)移的目的地址送入PC,不改變A和DPTR的內(nèi)容,也不影響任何標(biāo)志位。4、指令應(yīng)用舉例 例2-4 已知R3=20H,(30H)=40H,R1=50H,(50H)=3FH,分析執(zhí)行下列指令后A的值。指令解釋結(jié)果MOV A, R3A R3A=20HMOV A, 30HA (30H)A=40HMOV A, R1A (R1)A=3FHMOV A, #80HA 80HA=80H例2-5 已知A=A2H,CY=1,分析執(zhí)行下列指令后A和CY的值。指令結(jié)果RL AA=45H,CY=1RR AA=51H,CY=1RLC AA=45H,CY=1RRC AA=D1H,CY=0例2-6分析下列指令執(zhí)行后,程序轉(zhuǎn)移至何處,PC的值為多少。地址 指令0100H LJMPK1 1000H K1:MOV R1,#01H LJMP K1指令執(zhí)行后,程序轉(zhuǎn)移至標(biāo)號為K1的指令處,PC的值變?yōu)?000H。地址 指令0200H AJMPK2 0700H K2:MOV R2,#2FH AJMP K2指令執(zhí)行后,程序轉(zhuǎn)移至標(biāo)號為K2的指令處,PC的值變?yōu)?700H。地址 指令0300H AJMPK3 0710H MOV R7,#0FFH 0F10H K3:MOV R3,#68H AJMP K3指令執(zhí)行后,程序?qū)嶋H轉(zhuǎn)移至地址為0710H指令處,PC的值變?yōu)?710H。這與想要轉(zhuǎn)移的目的地址K3不一致,程序設(shè)計發(fā)生錯誤。因?qū)嶋H的目的地址是由AJMP的下一條指令地址的高5位加上K3的低11位組成的,此處由于AJMP下一條指令的高5位與K3的高5位不相同,所以造成實際轉(zhuǎn)移目的地址與想要轉(zhuǎn)移的目的地址不相同。地址 指令0400H SJMPK4 0460H K4:MOV R4,#0BDH SJMP K4指令執(zhí)行后,程序轉(zhuǎn)移至標(biāo)號為K4的指令處,PC的值變?yōu)?460H。注意SJMP指令轉(zhuǎn)移的目的地址與SJMP下一條指令的差必須在-128+127之間,否則也將造成實際轉(zhuǎn)移的目的地址與想要轉(zhuǎn)移的目的地址不一致,而導(dǎo)致程序設(shè)計錯誤。四、任務(wù)實施根據(jù)以上分析,設(shè)計出8只發(fā)光二極管交替循環(huán)間隔1S點亮的程序如下:MOVA,01H ;給A賦初值K: MOVP1,A;將A的數(shù)據(jù)送P1口輸出顯示1S延時程序MOV R3, #4 ;延時1SK3: MOV R2, #250K2: MOV R1, #250K1: NOP NOP DJNZ R1, K1 DJNZ R2, K2 DJNZ R3, K3 RLA ;將亮燈數(shù)據(jù)循環(huán)左移一位SJMPK ;程序轉(zhuǎn)移至K處任務(wù)三 延時時間計算一、任務(wù)目標(biāo) 本任務(wù)講解如何計算延時程序的延時時間,以及自行設(shè)計延時程序時,如何確定各循環(huán)變量的初值。二、任務(wù)分析 計算軟件延時程序的延時時間有兩種方法:精確計算法和估算法。其中精確計算法要求精確計算出延時程序執(zhí)行的機器周期數(shù),該方法計算出的延時時間準(zhǔn)確,但比較復(fù)雜;而估算法只需計算出延時程序執(zhí)行的大概機器周期數(shù),該方法計算出的延時時間為大概時間,但該計算方法比較簡單。三、相關(guān)知識 單片機CPU執(zhí)行指令的一系列動作都是在統(tǒng)一時序脈沖控制下進行的,為便于分析指令的執(zhí)行過程,定義了幾個時序單位:時鐘周期、狀態(tài)周期、機器周期和指令周期。1、時鐘周期 時鐘周期也稱振蕩周期,定義為振蕩頻率的倒數(shù),用T0表示,它是單片機中最基本的、最小的時間單位。在一時鐘周期內(nèi),CPU僅完成一個最基本的動作。 2、狀態(tài)周期 兩個時鐘周期定義為一個狀態(tài)周期,用TS表示。3、機器周期 一個機器周期單片機完成一個基本操作,如取指令、存儲器讀/寫等。一個機器周期由6個狀態(tài)周期組成,用TM表示。4、指令周期 執(zhí)行一條指令的時間定義為指令周期,一般由若干機器周期組成。指令不同,所需的機器周期數(shù)也不同,在51系列單片機中有單周期、雙周期和四周期指令。 上述幾個時序單位有如下關(guān)系: TM=6TS=12T0例2-7 設(shè)單片機振蕩頻率fosc為12MHZ,試計算時鐘周期、狀態(tài)周期和機器周期。 根據(jù)單片機時鐘周期、狀態(tài)周期和機器周期的關(guān)系可得:時鐘周期 狀態(tài)周期 機器周期四、任務(wù)實施1、計算機器周期 設(shè)單片機振蕩頻率為12MHZ,則機器周期。2、標(biāo)出延時程序各條指令的機器周期數(shù) 標(biāo)出任務(wù)一的延時程序的各條指令的機器周期數(shù)如下: 源程序 機器周期數(shù) MOV R3, #4 1第一重循環(huán)第三重循環(huán)第二重循環(huán)K3: MOV R2, #250 1K2: MOV R1, #250 1K1: NOP 1 NOP 1 DJNZ R1, K1 2 DJNZ R2, K2 2 DJNZ R3, K3 23、精確計算法第一重循環(huán)一次的機器周期數(shù):1+1+2=4第一重循環(huán)總的機器周期數(shù):4250=1000第二重循環(huán)一次的機器周期數(shù):1+1000+2=1003第二重循環(huán)總的機器周期數(shù):1003250=250750第三重循環(huán)一次的機器周期數(shù):1+250750+2=250753第三重循環(huán)總的機器周期數(shù):2507534=1003012總的機器周期數(shù):1+1003012=1003013延時時間:10030131us=1003013us=1.003013 s4、估算法 采用估算法計算機器周期如下: 估算機器周期數(shù)=第一重循環(huán)一次的機器周期第一重循環(huán)次數(shù)第二重循環(huán)次數(shù)第三重循環(huán)次數(shù)。 估算延時時間=估算機器周期數(shù)機器周期。 所以本課題任務(wù)一中延時程序的延時時間 =425025041us=1000000us=1 s小結(jié)1、 交替間隔1S左移循環(huán)亮燈程序中用到的相關(guān)指令。2、 交替間隔1S左移循環(huán)亮燈程序設(shè)計方法。3、 單片機幾個時間單位。4、 延時程序延時時間計算方法。課后作業(yè)1、 將本課題任務(wù)二中的R3的值改為01H、02H和08H,觀察亮燈的間隔時間有何變化?2、 將本課題任務(wù)二中的RL A指令改為RR A指令,觀察亮燈的順序有何變化?3、 將本課題任務(wù)二中的亮燈數(shù)據(jù)初值改為03H、07H和55H,觀察亮燈規(guī)律有何變化?4、 設(shè)計一延時5S的延時程序,并替代任務(wù)二中的延時程序,觀察亮燈間隔時間。5、設(shè)單片機振蕩頻率為6MHz,試精確計算下列延時子程序的延時時間。 DEL: MOV R7, #0FAH DEL1: MOV R6, #0F8H NOP DEL2: DJNZ R6, DEL2DJNZ R7, DEL16、設(shè)單片機振蕩頻率為12MHz,試估算下列延時子程序的延時時間。MOV R5, #20 K1: MOV R6, #250 K2: DJNZ R6, K2 DJNZ R5, K1 教學(xué)單元: 算術(shù)運算程序教學(xué)時數(shù): 2學(xué)時教學(xué)方法: 一體化教學(xué)教學(xué)目的:1、掌握加法程序和減法程序設(shè)計中用到的相關(guān)指令。 2、掌握加法程序和減法程序設(shè)計方法。教學(xué)重點:加法程序和減法程序設(shè)計方法教學(xué)難點:相關(guān)指令及應(yīng)用。教學(xué)過程課題三 算術(shù)運算程序任務(wù)一 加法程序設(shè)計一、任務(wù)目標(biāo) 本任務(wù)通過講解兩個雙字節(jié)數(shù)加法程序設(shè)計過程,使讀者掌握在編寫加法程序時的具體步驟和注意事項。二、任務(wù)分析 R0 R1+ R2 R3 R4 R5 R6 已知有兩個雙字節(jié)無符號數(shù),其中一個存放在R0(高字節(jié))、R1(低字節(jié))中,另一個存放在R2(高字節(jié))、R3(低字節(jié))中。求兩個雙字節(jié)數(shù)之和,并把結(jié)果存入R4、R5、R6中,高位在前,低位在后。實現(xiàn)此雙字節(jié)數(shù)加法運算的示意如下:兩個雙字節(jié)數(shù)相加,先進行低字節(jié)相加,再進行高字節(jié)相加。低字節(jié)相加時用不帶進位加法指令A(yù)DD,因其本身就已是最低位了,所以不涉及向它的進位位。而高字節(jié)相加時,除本身兩個高字節(jié)相加外,還應(yīng)加上低字節(jié)相加時可能產(chǎn)生的進位,所以高字節(jié)相加應(yīng)用帶進位的加法指令A(yù)DDC。 兩個雙字節(jié)數(shù)加法運算程序流程如圖2-8所示:開始R1和R3不帶進位位相加結(jié)果存于R6R0和R2帶進位位相加結(jié)果存于R50和0帶進位位相加結(jié)果存于R4結(jié)束MOV A,R1ADD A,R3MOV R6,AMOV A,R0ADDC A,R2MOV R5,AMOV A,#0ADDC A,#0MOV R4,A圖2-8 兩個雙字節(jié)數(shù)加法運算程序流程圖三、相關(guān)知識 1、不帶進位位加法指令 ADD A,#data ;AA+ data ADD A,direct ;AA+(direct) ADD A,Rn ;AA+Rn ADD A,Ri ;AA+(Ri) 這4條指令的功能是將累加器A的內(nèi)容與源操作數(shù)相加,其結(jié)果存放到累加器A中。相加過程中如果位7(D7)有進位,則進位標(biāo)志CY置“1”,否則清“0”;如果位3(D3)位有進位,則輔助進位標(biāo)志AC置“1”,否則清“0”。溢出標(biāo)志位OV=CY6CY7,CY6為位6向位7的進位, CY7為位7向CY的進位。2、帶進位位加法指令 ADDC A,#data ;AA+ data+CY ADDC A,direct ;AA+(dire
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公寓租房辦公合同樣本
- 加盟餐飲意向合同標(biāo)準(zhǔn)文本
- 乳豬供貨合同樣本
- 出口企業(yè)購貨合同標(biāo)準(zhǔn)文本
- 萬寧農(nóng)村建房合同樣本
- 辦公室人員合同樣本
- 公司融資合同樣本
- 買房贈送車位合同樣本
- 加工出售糕團合同標(biāo)準(zhǔn)文本
- 勞動續(xù)約合同樣本
- 三亞鳳凰島國際郵輪母港
- 第三章 液壓機ppt
- 眼科護理中的病人安全與風(fēng)險管理
- 統(tǒng)編版高二歷史選擇性必修2《第13課現(xiàn)代交通運輸?shù)男伦兓氛n件
- GB/T 14713-2023旋切機通用技術(shù)條件
- 無脊椎動物的特征和分類
- 電纜敷設(shè)培訓(xùn)課件
- 植被恢復(fù)安全施工方案
- 2024年員工考勤表(通用版)
- 2024年高考作文熱點新聞素材積累與運用
- 《公共裝置藝術(shù)》課件
評論
0/150
提交評論