版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第 1 章 復(fù) 習(xí)21.1 8051單片機的特點與基本結(jié)構(gòu) 8051系列無片內(nèi)ROM型帶片內(nèi)ROM型片內(nèi)EPROM型:87C51,4k片內(nèi)EEROM型:89C51,4k, flash片內(nèi)掩膜ROM型:8051,4k一次編程:8031 8051單片機的基本組成包括: 中央處理器CPU,它是單片機的核心,用于產(chǎn)生各種控制信號,并完成對數(shù)據(jù)的算術(shù)邏輯運算和傳送; 內(nèi)部數(shù)據(jù)存儲器RAM,用以存放可以讀寫的數(shù)據(jù); 內(nèi)部程序存儲器ROM,用以存放程序指令或某些常數(shù)表格; 4個8位的并行I/O接口P0, P1, P2和P3,每個口都可以用做輸入或者輸出; 內(nèi)部時鐘,但晶體和微調(diào)電容需要外接,振蕩頻率可以高達
2、40M HZ.345 中中央處理器CPU包含運算器和控制器兩大部分。1運算器 運算器以算術(shù)邏輯單元ALU為核心,加上累加器ACC、寄存器B 、暫存寄存器TMP和程序狀態(tài)字寄存器PSW等所組成。 ALU主要用于完成二進制數(shù)據(jù)的算術(shù)和邏輯運算。 累加器ACC工作最為繁忙,因為在進行算術(shù)邏輯運算時,ALU的輸入多為ACC的輸出,而大多數(shù)運算結(jié)果也需要送到ACC中。 B寄存器,在作乘除運算時用來存放一個操作數(shù),它也用來存放乘除運算后的一部分結(jié)果 。 程序狀態(tài)字寄存器PSW,用于存放運算結(jié)果的一些特征 進位標(biāo)志 輔助進位標(biāo)志 用戶標(biāo)志 工作寄存器組選擇 溢出標(biāo)志 奇偶校驗標(biāo)志 62控制器 控制器包括定時
3、控制邏輯、指令寄存器、指令譯碼器、程序計數(shù)器PC、數(shù)據(jù)指針DPTR 、堆棧指針SP、地址寄存器和地址緩沖器等。 它的功能是對逐條指令進行譯碼,并通過定時和控制電路在規(guī)定的時刻發(fā)出各種操作所需的內(nèi)部和外部控制信號,協(xié)調(diào)各部分的工作。 程序計數(shù)器PC:用于存放下一條將要執(zhí)行指令的地址。當(dāng)一條指令按PC所指向的地址從程序存儲器中取出之后,PC的值會自動增加,即指向下一條指令。PC不屬于特殊功能寄存器,不能被訪問。堆棧指針SP:用來指示堆棧的起始地址。 指令譯碼器:當(dāng)指令送入指令譯碼器后,由譯碼器對該指令進行譯碼,即把指令轉(zhuǎn)變成為所需要的電平信號,CPU根據(jù)譯碼器輸出的電平信號使定時控制電路產(chǎn)生執(zhí)行該
4、指令所需要的各種控制信號。71.2 8051單片機的存儲器結(jié)構(gòu)8051單片機在物理上它有4個存儲器空間:片內(nèi)程序存儲器(4k)和片外程序存儲器;片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。 圖1.5 8051單片機存儲器結(jié)構(gòu)8 8051單片機通過不同的信號來選通ROM或RAM。當(dāng)從外部ROM中取指令時,用選通信號PSEN,而從外部RAM中讀寫數(shù)據(jù)時則采用讀寫信號RD或WR來選通,因此不會因地址重疊而發(fā)生混亂。 8051系列單片機的片內(nèi)數(shù)據(jù)存儲器RAM有256個字節(jié),其中00H-7FH地址空間是直接尋址區(qū),該區(qū)域內(nèi)00H-1FH地址為工作寄存器區(qū),安排了4組工作寄存器,每組占用8個地址單元,記為R0-R7,
5、在某一時刻,CPU只能使用其中任意一組工作寄存器,究竟選擇哪一組工作寄存器由程序狀態(tài)字寄存器PSW中RS0和RS1的狀態(tài)決定。 片內(nèi)RAM的20H-2FH地址單元為位尋址區(qū),共16個字節(jié),每個字節(jié)的每一位都規(guī)定了位地址,該區(qū)域內(nèi)每個地址單元除了可以進行字節(jié)操作之外,還可進行位操作,右圖所示為片內(nèi)RAM的位地址分配。 9 P0.0-P0.7 (39-32):雙向I/O口P0。其第二功能是在訪問外部存儲器時,可分時用做低8位地址和8位數(shù)據(jù)線。P0口能以吸收電流的方式驅(qū)動8個LS型TTL負載。P1.0-P1.7 (1-8):雙向I/O口P1。 P1口能驅(qū)動(吸收或輸出電流)4個LS型TTL負載。在8
6、052單片機中,還用作定時器2的計數(shù)觸發(fā)輸入端T2, 還用作定時器2的外部控制端T2EX。P2.0-P2.7 (21-28):雙向I/O口P2。P2口可以驅(qū)動(吸收或輸出電流)4個LS型TTL負載。其第二功能是在訪問外部存儲器時,輸出高8位地址。P3.0-P3.7 (10-17):雙向I/O口P3。P3口能驅(qū)動(吸收或輸出電流)4個LS型TTL負載。P3口的每條引腳都有各自的第二功能。第 2 章 Proteus快速入門11 英國Labcenter公司推出的Proteus軟件采用虛擬仿真技術(shù),很好地解決了單片機及其外圍電路的設(shè)計和協(xié)同仿真問題 。集成環(huán)境ISIS Proteus軟件包提供一種界面
7、友好的人機交互式集成環(huán)境ISIS,其設(shè)計功能強大,使用方面。 該軟件已有近20年的歷史,它針對單片機應(yīng)用,可以直接在虛擬模型上進行軟件編程和虛擬仿真,配合虛擬示波器、邏輯分析儀等,用戶能看到單片機系統(tǒng)運行后的輸入輸出效果。 ISIS在Windows環(huán)境下運行,它的主界面,由下拉菜單、快捷工具欄、預(yù)覽窗口、原理圖編輯窗口、元器件列表窗口等組成。File菜單:包括常用的文件功能,如創(chuàng)建一個新設(shè)計、打開己有設(shè)計、保存設(shè)計、導(dǎo)入導(dǎo)出文件、打印設(shè)計文檔等。View菜單:包括是否顯示網(wǎng)格、設(shè)置網(wǎng)格間距、縮放原理圖、顯示與隱藏各種工具欄等命令。Edit菜單:包括撤銷恢復(fù)操作、查找與編輯、剪切、復(fù)制、粘貼元器
8、件、設(shè)置多個對象的層疊關(guān)系等命令。第 3 章 指令系統(tǒng)復(fù)習(xí)13 2414 ADD A, #14H ; 累加器A中的內(nèi)容與14H相加 3.1 指令助記符和字節(jié)數(shù) 指令本身是一組二進制數(shù)代碼,助記符一般采用有關(guān)英文單詞的縮寫 。 740A MOV A, #0AH ;將十六進制數(shù)0AH放入累加器A中 指令助記符 一條指令通常由兩部分組成:操作碼和操作數(shù)。 操作碼用來規(guī)定這條指令完成什么操作。操作數(shù)則表示這條指令所完成的操作對象,即是對誰進行操作。 操作碼操作數(shù)14 在8051單片機中,對于不同的指令,指令的字節(jié)數(shù)不相同。8051單片機有單字節(jié),雙字節(jié)或三字節(jié)指令。 1、 單字節(jié)指令:指令只有一個字節(jié)
9、,操作碼和操作數(shù)同在一個字節(jié)中。在80C51系列的指令系統(tǒng)中,共有49條單字節(jié)指令。 操作碼+地址碼如 MOV A,Rn 指令機器碼為單字節(jié) ,其中rrr可表示為000111,分別代表R0R7 (1)單字節(jié)指令中既包含操作碼信息,也包含操作數(shù)信息。 例如數(shù)據(jù)指針加1指令:INC DPTR,由于操作的內(nèi)容和對象都很明確,故不必再加操作數(shù)字節(jié),其指令碼為: (2)用一個字節(jié)中的幾位來表示操作數(shù)或操作數(shù)所在的位置。 11101rrr 1010001115 例如 把8位二進制數(shù)傳送到累加器A的指令: MOV A, #data其中#data表示8位二進制數(shù),也叫立即數(shù),這就是雙節(jié)指令,其指令碼為:011
10、10100#data2 雙字節(jié)指令:其中一個字節(jié)為操作碼,另一個字節(jié)是操作數(shù)。操作碼數(shù)據(jù)或地址碼 在80C51系列的指令系統(tǒng)中,共有45條雙字節(jié)指令。163.三字節(jié)指令則是一個字節(jié)的操作碼,兩個字節(jié)的操作數(shù)。操作數(shù)可以是數(shù)據(jù),也可以是地址,因此,可能有四種情況:操作碼立即數(shù)立即數(shù)操作碼操作碼操作碼 地 址 立即數(shù)立即數(shù) 地 址 地 址 地 址 8051單片機共有17條三字節(jié)指令,只占全部指令的15%。一般而言,指令的字節(jié)數(shù)越則其執(zhí)行速度越快,從這個角度來說,8051單片機的指令系統(tǒng)是比較合理的。ANL direct, #dataMOV DPTR, #1234H173.2 尋址方式 所謂尋址,就
11、是尋找操作數(shù)據(jù)的地址。 例如:MOV A, R0 所謂尋址方式就是通過確定操作數(shù)據(jù)所在的地址把操作數(shù)據(jù)提取出來的方法。 在8051單片機中,有7種尋址方式: 1寄存器尋址 2直接尋址 3立即尋址 4寄存器間接尋址 5變址尋址 6相對尋址 7位尋址目的字節(jié)源字節(jié)18指令分類詳解 算術(shù)運算類指令(24條); 邏輯運算類指令(25條) ; 數(shù)據(jù)傳送類指令(28條) ; 控制轉(zhuǎn)移類指令(17 條); 布爾操作(位)類指令(17條)。 8051單片機共有111條指令,按指令功能可分為算術(shù)運算指令、邏輯運算指令、數(shù)據(jù)傳送指令、控制轉(zhuǎn)移指令及位操作指令等5大類。19算術(shù)運算指令 算術(shù)運算指令包括加、減、乘、
12、除法指令,加法指令又分為普通加法指令、帶進位加法指令和加1指令。 1普通加法指令 ADD A, Rn ;Rn(n=0-7)為工作寄存器 ADD A, direct ;direct為直接地址單元 ADD A, Ri ;Ri(i=0-1)為工作寄存器 ADD A, #data ;#data為立即數(shù) 這組指令的功能是將累加器A的內(nèi)容與第二操作數(shù)的內(nèi)容相加,結(jié)果送回到累加器A中。 在執(zhí)行加法的過程中,如果位7有進位,則置“1”進位標(biāo)志CY,否則清“0” CY。如果位3有進位,則置“1”輔助進位標(biāo)志AC。如果位6有進位而位7沒有進位,或者位7有進位而位6沒有進位,則置“1”溢出標(biāo)志OV,否則清“0” O
13、V。202帶進位加法指令 ADDC A, Rn ;Rn(n=0-7)為工作寄存器 3加1指令 INC A 不影響任何標(biāo)志。4十進制調(diào)整指令 DA A5帶進位減法指令 SUBB A, Rn ;Rn(n=0-7)。指令意義 (A)(Rn)(CY)(A)6減1指令DEC A 7單字節(jié)乘法指令 MUL AB8單字節(jié)除法指令 DIV AB 乘積的低8位存放在累加器A中,高8位存放在寄存器B中。 商的整數(shù)部分存放在累加器A中,余數(shù)部分存放在寄存器B中21邏輯運算指令 邏輯運算指令分為簡單邏輯操作指令、邏輯與指令、邏輯或指令以及邏輯異或指令。1簡單邏輯指令 CLR A;對累加器A清“0”,不影響標(biāo)志位。 S
14、WAP A;將A的高半字節(jié)(A.7-A.4)與低半字節(jié)(A.3-A.0)交換 CPL A;對進行累加器的內(nèi)容逐位取反,結(jié)果仍存在A中。 RL A;累加器A的內(nèi)容向左環(huán)移一位 RLC A;累加器A的內(nèi)容帶進位位CY向左環(huán)移一位 RR A;累加器A的內(nèi)容向右環(huán)移一位 RRC;累加器A的內(nèi)容帶進位位CY向右環(huán)移一位 2邏輯與指令 ANL A, Rn 3邏輯或指令 ORL A, Rn 4邏輯異或指令 XRL A, Rn 22數(shù)據(jù)傳送指令 8051單片機的存儲器區(qū)域可分為如下3個部分,即: 程序存儲器 0000H-FFFFH 內(nèi)部RAM 00H-FFH 外部RAM/IO區(qū) 0000H-FFFFH 對于程
15、序存儲器ROM,只能通過變址尋址方式采用MOVC指令訪問。 外部數(shù)據(jù)存儲器RAM只能通過間接尋址方式用MOVX指令訪問。 1數(shù)據(jù)傳送到累加器A的指令 MOV A, Rn ;n=0-7 MOV A, direct MOV A, Ri ;i=0或1 MOV A, #data 這組指令的功能是把源操作數(shù)的內(nèi)容送入累加器A。 234堆棧操作指令 PUSH direct;進棧 POP direct;出棧 在8051單片機的特殊功能寄存器中有一個堆棧指針寄存器SP,進棧(PUSH)指令的功能是首先將堆棧指針SP的內(nèi)容加1,然后將直接地址所指出的內(nèi)容送入SP指出的內(nèi)部RAM單元。5累加器A與外部數(shù)據(jù)存儲器R
16、AM之間的數(shù)據(jù)傳送指令MOVX A, DPTR ;(DPTR) A6查表指令MOVC A, A+PCMOVC A, A+DPTR7字節(jié)交換指令XCH A, Rn ;n=0-78半字節(jié)交換指令XCHD A, Ri ;i=0或1 將累加器A的低4位內(nèi)容和R (i) 的低4位內(nèi)容相互交換。24控制轉(zhuǎn)移指令1無條件短跳轉(zhuǎn)指令 AJMP addrll 這是2K字節(jié)范圍內(nèi)的無條件跳轉(zhuǎn)指令。2相對轉(zhuǎn)移指令SJMP rel 執(zhí)行時跳轉(zhuǎn)至(PC)+ rel+2。因此轉(zhuǎn)移的目標(biāo)地址可以在這條指令前128個字節(jié)到后127個字節(jié)之間。3長跳轉(zhuǎn)指令 LJMP addr16 4散轉(zhuǎn)指令 JMP A+DPTR 255條件轉(zhuǎn)
17、移指令 JZ rel ;(A)=0時轉(zhuǎn)移JNZ rel ;(A)#0時轉(zhuǎn)移JC rel ;CY=1時轉(zhuǎn)移JNC rel ;CY=0時轉(zhuǎn)移JB bit,rel ;(bit)=1時轉(zhuǎn)移JNB bit,rel ;(bit)=0時轉(zhuǎn)移JBC bit,rel ;(bit)=1時轉(zhuǎn)移,并清“0 bit位 6比較不相等轉(zhuǎn)移指令: CJNE A, direct, rel 這組指令的功能是比較前面兩個操作數(shù)的大小,如果它們的值不相等則轉(zhuǎn)移。 影響進位標(biāo)志:如果第一操作數(shù)(無符號整數(shù))小于第二操作數(shù)(無符號整數(shù)),則置“1”進位標(biāo)志CY。7減1不為0轉(zhuǎn)移指令 DJNZ Rn, rel ;n=0-7 這組指令把源操
18、作數(shù)(Rn, direct)的內(nèi)容減1,并將結(jié)果回送到源操作數(shù)中去。如果相減的結(jié)果不為0則轉(zhuǎn)移。26 8短調(diào)用指令 ACALL addrll 這是一條2K字節(jié)范圍內(nèi)的子程序調(diào)用指令。 9長調(diào)用指令 LCALL addr16 這條指令無條件地調(diào)用位于16位地址addr16處的子程序。 10子程序返回指令RET 這條指令的功能是從堆棧中彈出PC的高8位和低8位字節(jié),同時把SP的值減2,并從PC指向的地址開始繼續(xù)執(zhí)行程序。11中斷返回指令RETI 這條指令的功能與RET指令相似,不同的是它還清“0”單片機的內(nèi)部中斷狀態(tài)標(biāo)志。12空操作指令NOP ;這條指令只完成(PC) +1,而不執(zhí)行任何其他操作。
19、27位操作指令 程序狀態(tài)字寄存器PSW,用于存放運算結(jié)果的一些特征 進位標(biāo)志 輔助進位標(biāo)志 用戶標(biāo)志 工作寄存器組選擇 溢出標(biāo)志 奇偶校驗標(biāo)志 8051單片機內(nèi)部RAM中有一個位尋址區(qū),還有一些特殊功能寄存器也可以位尋址。 簡化:CY=C1位數(shù)據(jù)傳送指令 MOV C, bitMOV bit, C 這組指令的功能是把由源操作數(shù)指出的位變量送到目的操作數(shù)指定的位單元去 28 2位變量修改指令 CLR C ;0CY CLR bit ;0bit CPL C ;對CY的內(nèi)容取反 CPL bit ;對bit位取反 SETB C ; “1” CY SETB bit ; “1” bit3位變量邏輯與指令A(yù)NL
20、 C, bitANL C,/bit 這組指令的功能是將進位標(biāo)志與指定的位變量(或位變量的取反值)相“與”,結(jié)果送到進位標(biāo)志,不影響別的標(biāo)志。4位變量邏輯或指令 ORL C, bit ORL C, /bit 這組指令的功能是將進位標(biāo)志與指定的位變量(或位變量的取反值)相“或”,結(jié)果送到進位標(biāo)志,不影響別的標(biāo)志。293.4 匯編語言程序格式與偽指令1設(shè)置起始地址ORG一般格式:ORG nnnn 其中,nnnn為4位十六進制數(shù),表示程序的起始地址。 2定義字節(jié)DB3定義字DW4保留程序存儲器空間DS5為標(biāo)號賦值EQU6源程序結(jié)束END7. BIT 位定義偽指令 用于給字符名稱賦予位地址。例:30例3
21、-2若單片機的晶振為6 MHz,則一個機器周期為2us。子程序的入口條件為:(R0)=延時毫秒數(shù),(R1) =10ms(預(yù)定值)。出口條件為:定時時間到,返回。 ORG 1000H 機器周期數(shù) DELAY:MOV R0,#10 ;延時10ms值R0 1DL2: MOV R1,#MT ;10ms預(yù)定值 R1 1DL1: NOP ;延時1個機器周期 1 NOP ;延時1個機器周期 1 DJNZ R1,DL1 ;1ms延時循環(huán) 2 DJNZ R0,DL2 ;10ms延時循環(huán) 2 RET ;延時結(jié)束,返回 2 這是一個雙重循環(huán)程序,預(yù)定值MT需要計算。預(yù)定延時時間也已經(jīng)給定 ( 10ms ),故MT的
22、值可以這樣確定: (1+1+2) 2 MT 1010 1000 ( us ) 所以: MT1257DH第四章 中斷系統(tǒng)復(fù)習(xí)32中斷的概念 中斷過程: 程序執(zhí)行過程中,允許外部或內(nèi)部事件通過硬件打斷程序的執(zhí)行,使其轉(zhuǎn)向中斷服務(wù)程序中去;完成中斷服務(wù)程序后,CPU繼續(xù)原來被打斷的程序,這樣的過程稱為中斷。33中斷響應(yīng) :CPU暫停當(dāng)前的工作轉(zhuǎn)去處理中斷源事件。中斷系統(tǒng):單片機中實現(xiàn)中斷功能的部件,也是中斷管理系統(tǒng)。中斷源:產(chǎn)生中斷的請求的外部或內(nèi)部事件。中斷申請:中斷源向CPU發(fā)出的請求。優(yōu)點: 中斷方式的一個重要應(yīng)用領(lǐng)域是實時控制。能將從現(xiàn)場采集到的數(shù)據(jù)及時傳送給CPU,經(jīng)過處理后就可立即作出響
23、應(yīng),實現(xiàn)現(xiàn)場控制。 中斷方式完全消除了CPU在查詢方式中的等待現(xiàn)象,大大提高了CPU的工作效率。342中斷的排隊 如果有若干個中斷申請同時發(fā)生,就需要決定先對哪一個中斷申請進行響應(yīng)。3中斷的響應(yīng) 單片機在響應(yīng)了中斷源的申請時,應(yīng)使CPU從主程序轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序,同時要把斷點地址送入堆棧進行保護,中斷系統(tǒng)還要能確定各個被響應(yīng)中斷源的中斷服務(wù)子程序的入口。4中斷的撤除 8051單片機中斷系統(tǒng)的任務(wù):1開中斷或關(guān)中斷 中斷的開放或關(guān)閉可以通過指令對相關(guān)特殊功能寄存器的操作來實現(xiàn),只有在開中斷的情況下,才有可能接受中斷源的申請。35 8051中有5個中斷源: 兩個外部中斷源/INT0和/INT1
24、;4.2 中斷系統(tǒng)結(jié)構(gòu)與中斷控制 三個內(nèi)部中斷源為:T0和T1的定時/計數(shù)溢出中斷源(2個);和串行口發(fā)送或接收中斷源(1個)。 外部中斷請求信號可以是電平觸發(fā)方式和負邊沿觸發(fā)方式。若是電平觸發(fā)方式,只要在INT0或INT 1引腳有低電平信號即為有效的中斷申請。36圖中斷系統(tǒng)結(jié)構(gòu)定時器控制寄存器中斷允許寄存器中斷優(yōu)先級寄存器 串行口控制寄存器 37 INT0,INT1,T0 及 T1的中斷標(biāo)志存放在 TCON(定時器計數(shù)器控制寄存器)中; TCON字節(jié)地址為88H,其格式如下:中斷控制系統(tǒng)INT0 、INT1的中斷觸發(fā)方式控制位。為0選擇電位觸發(fā),為1選擇跳變觸發(fā)。由軟件設(shè)置。外部中斷0、1申
25、請中斷標(biāo)志。為1表示有外部中斷申請。T0、T1計數(shù)溢出標(biāo)志;為1表示溢出,由硬件置位、響應(yīng)中斷硬件復(fù)位。不用中斷用軟件清0。1. 中斷標(biāo)志38串行口的中斷標(biāo)志存放在 SCON(串行口控制寄存器)中。SCON字節(jié)地址為98H,其格式如下:串行口發(fā)送中斷標(biāo)志。發(fā)送完一幀,由硬件置位。響應(yīng)中斷后,必須用軟件清 0。串行口接收中斷標(biāo)志。接收完一幀,由硬件置位。響應(yīng)中斷后,必須用軟件清0。39 中斷允許和禁止由中斷允許寄存器IE(A8H)控制。 IE中各位設(shè)置:為0時,禁止中斷;為 1時,允許中斷。中斷允許位。當(dāng)EA1,允許所有中斷開放;當(dāng)EA0時,屏蔽所有中斷。串行口中斷允許位。T0、T1中斷允許位。
26、外部中斷0、外部中斷1中斷允許位。2. 中斷允許控制40 中斷優(yōu)先級寄存器IP(B8H)的格式如下,IP中各位設(shè)置:為0時,為低優(yōu)先級;為1時,設(shè)為高優(yōu)先級。 在中斷執(zhí)行過程中,高中斷優(yōu)先級可以中斷低中斷優(yōu)先級的中斷過程(即中斷嵌套)。 當(dāng)CPU同時接收到兩個不同優(yōu)先級的中斷請求時,先響應(yīng)高優(yōu)先級的中斷串口定時器1外部中斷03. 中斷優(yōu)先級41 在同一優(yōu)先級內(nèi)有一個由內(nèi)部查詢序列確定的優(yōu)先級結(jié)構(gòu)。其排列如下: 中斷源中斷優(yōu)先級 最高 外部中斷0 定時器T0中斷 外部中斷1 定時器T1中斷 串行口中斷 最低中斷嵌套: 優(yōu)先級高的事件可以中斷CPU正在處理的低級的中斷服務(wù)程序,待完成了高級中斷服務(wù)
27、程序之后,再繼續(xù)被打斷的低級中斷服務(wù)程序。這是中斷嵌套問題。42表4.1 8051單片機的中斷源及中斷矢量1.單片機在接收到中斷申請以后,先把這些申請鎖定在各自的中斷標(biāo)志位中,然后在下一個機器周期按優(yōu)先級分別來查詢這些標(biāo)志。在下一個機器周期響應(yīng)中斷,完成兩件工作:一是把當(dāng)前程序計數(shù)器PC的內(nèi)容送入堆棧保護,另一個是根據(jù)中斷的不同來源把程序的執(zhí)行轉(zhuǎn)移到相應(yīng)的中斷服務(wù)子程序的入口。中斷響應(yīng)過程3.當(dāng)某個中斷請求得到響應(yīng)之后,相應(yīng)的中斷標(biāo)志位應(yīng)該予以清除(即復(fù)“0”) 。43 1必須沒有同級或更高級別的中斷正在得到響應(yīng),如果有的話,則必須等CPU為它們服務(wù)完畢,返回主程序并執(zhí)行一條指令之后才能響應(yīng)新
28、的中斷申請。 2必須要等當(dāng)前正在執(zhí)行的指令執(zhí)行完畢以后,CPU才能響應(yīng)新的中斷申請。 3若正在執(zhí)行的指令是RETI(中斷返回),則必須要在執(zhí)行完該指令以及緊隨其后的另外一條指令之后才可以響應(yīng)新的中斷申請。中斷響應(yīng)的條件:中斷標(biāo)志的清除: 1.由硬件自動使標(biāo)志位復(fù)“0”(即撤除),它們是: 定時器0或1的中斷請求標(biāo)志TF0或TF1 ; 外部中斷0或1的中斷請求標(biāo)志IE0或IE1。2. 中斷系統(tǒng)不予以自動撤除,它們是: 串行口的中斷請求標(biāo)志TI和RI 。44 在8051中,實現(xiàn)中斷需要用軟件對以下5個內(nèi)容進行初始化設(shè)置: 中斷服務(wù)程序入口地址的設(shè)定。 CPU開中斷與關(guān)中斷。 某一中斷源中斷請求的允
29、許與禁止。 各中斷源優(yōu)先級別的設(shè)定。 對于外部中斷請求,還需進行觸發(fā)方式的設(shè)定。中斷服務(wù)程序的設(shè)計中斷程序一般包含中斷控制程序和中斷服務(wù)程序兩部分。 中斷控制程序即中斷初始化程序,一般不獨立編寫,而是包含在主程序中,根據(jù)上述的5點通過編寫幾條指令來實現(xiàn)。 中斷服務(wù)程序是一種為中斷源的特定事態(tài)要求服務(wù)的獨立程序段,以中斷返回指令RETI結(jié)束。第5章 定時器/計數(shù)器復(fù)習(xí)46 定時器/計數(shù)器的作用:1) 產(chǎn)生一個時間很長的定時信號,可實現(xiàn)定時控制;2)可以測量外部脈沖信號的個數(shù)及頻率。 1軟件法 常用生產(chǎn)定時信號的方法: 假設(shè)單片機使用12MHz晶振,一個機器周期是1us。要編一個延時50ms的程序
30、。DEL: MOV R7, #200DEL1:MOV R6, #125 DEL2: DJNZ R6, DEL2 DJNZ R7, DEL1單條指令執(zhí)行時間2us總時間:212520050000us缺點:1)占用CPU時間;2)定時有時不準(zhǔn)。472. 采用定時器計數(shù)器 最大特點是:可以通過軟件設(shè)置來實現(xiàn)定時長短,通過中斷方法來完成定時。原理: 計數(shù)器就象一個容器,來1個脈沖加1粒顆粒,對進入的脈沖信號進行“加1”計數(shù),低位滿了向高位進位,當(dāng)所有的位都滿了就產(chǎn)生溢出,在TCON中產(chǎn)生計數(shù)器溢出標(biāo)志。定時器計數(shù)器還要解決的問題:1. 實現(xiàn)定時器與計數(shù)器功能轉(zhuǎn)換。2. 在計數(shù)寄存器中裝入初值。3. 改
31、變計數(shù)寄存器的總位數(shù)。4. 定時器計數(shù)器何時及如何啟動?48計數(shù)寄存器方式寄存器控制寄存器輸入引腳時鐘分頻器定時器計數(shù)器T0、T1原理示意圖:49 T0、T1 的方式寄存器TMODD7 D6 D5 D4 D3 D2 D1 D0GATEC/TM1M0GATEC/TM1M0T1T0門控位:為0時僅由TR1置位來啟動定時器T1。為1時由外部中斷引腳、和TR1共同來啟動定時器。定時器計數(shù)器方式選擇位,為0時為定時器。工作方式選擇位,可以有四種工作方式。5.1 定時器計數(shù)器的工作方式與控制字50M1、M0工作方式選擇位。 由于有M1和M0兩位,可以有四種工作方式,如下表所示。M1 M0工作方式 計數(shù)器配
32、置 0 0方式0 13位計數(shù)器 0 1方式1 16位計數(shù)器 1 0方式2 自動重裝載的8位計數(shù)器 1 1方式3 T0分為2個8位計數(shù)器/定時器,T1分為1個8位計數(shù)器/定時器。51 控制寄存器TCON是一個逐位定義的8位寄存器,字節(jié)地址為88H,位尋址的地址為88H8FH。其格式如下:位地址 8FH 8EH8DH8CH8BH8AH89H88H位功能 TF1TR1TF0TR0IE1IT1IE0IT0 T0、T1 的運行控制寄存器TCONT1的溢出標(biāo)志T1的運行控制位置 1時,啟動 T1,清 0時,停止 T1 。外部中斷1申請中斷位外部中斷0觸發(fā)類型選擇位52 根據(jù)對TMOD寄存器中M1和M0的設(shè)
33、定,T0可選擇四種不同的工作方式,而T1只具有三種工作方式(即方式0、方式1和方式2)。 方式0:13位定時器/計數(shù)器當(dāng)M10、M00時,選定方式0工作。非或與為1時閉合定時器計數(shù)器T0、T1 的工作方式:53 門控位GATE可用作對INTx引腳上的高電平時間進行計量。當(dāng)GATE0時,A點為高電平,定時器計數(shù)器的啟動停止由 TRx決定。TRx1,定時器計數(shù)器啟動;TRx0,定時器計數(shù)器停止。 當(dāng)GATE1時,A點的電位由INTx決定,因而B點的電位就由TRx和INTx決定,即定時器計數(shù)器的啟動停止由TRx和INTx兩個條件決定。 非或與為1時閉合54 方式1:16位定時器/計數(shù)器 當(dāng)TMOD中
34、的M10、M0l時,選定方式1工作。方式1時,T0、T1的邏輯結(jié)構(gòu)如圖所示。這種方式下,計數(shù)寄存器由16位組成,THx高8位和TLx的低8位。 計數(shù)時,TLx溢出后向THx進位,THx溢出后將TFx置位,如果中斷允許,CPU響應(yīng)中斷并轉(zhuǎn)入中斷服務(wù)程序,由內(nèi)部硬件清TFx。TFx也可以由程序查詢和清零。55 方式2:定時常數(shù)自動重裝載的8位定時器/計數(shù)器 當(dāng)TMOD中的M11、M00時,選定方式2工作。這種方式是將16位計數(shù)寄存器分為兩個8位寄存器,組成一個可重載的8位計數(shù)寄存器。方式2時定時器/計數(shù)器T0、T1的邏輯結(jié)構(gòu)如下圖所示。當(dāng)TLx計數(shù)溢出時,將THx的內(nèi)容重新裝入TLx中,繼續(xù)計數(shù)。
35、 方式2適合于作為串行口波特率發(fā)生器使用。56 方式3 當(dāng)TMOD中的M1l、M01時,選定方式3工作。 工作方式3下的定時器/計數(shù)器T0 方式3時,這種方式是將T0分為一個8位定時器計數(shù)器和一個 8位定時器,TL0用于 8位定時器計數(shù)器,TH0用于8位定時器。57定時器計數(shù)器應(yīng)用舉例 8051單片機定時器計數(shù)器的初始化編程包括如下幾個步驟: 1確定工作方式,即給方式控制寄存器TMOD寫入控制字。 2計算定時器計數(shù)器初值,并將初值寫入寄存器TL和TH 。 3根據(jù)需要對中斷控制寄存器IE置初值,決定是否開放定時器中斷。 4使運行控制寄存器TCON中的TR0或TR1置“1,啟動定時器計數(shù)器。計數(shù)初
36、始值X確定: 假設(shè)計數(shù)器的最大計數(shù)值為M(根據(jù)不同工作方式,M可以是213、216或28),則計算初值X的公式如下: 計數(shù)方式:X=M要求的計數(shù)值 (5-1)定時方式:XM 要求的定時值(12/fosc) (5-2)機器周期58例 5.5 要求在 引腳上產(chǎn)生周期為2 ms的方波輸出。已知晶體振蕩器的頻率為fosc=6MHz??墒褂肨0作定時器,設(shè)為方式0,設(shè)定 lms的定時,每隔1ms使引腳上的電平變反(1) 解:定時常數(shù)計算 振蕩器的頻率fosc6MHz,機器周期為2s,方式0計數(shù)器長度13,定時時間 t1ms方式0最大計數(shù)值為M=213,因此定時器的初值應(yīng)為: X=213(1 10-3)(
37、12/ (6106) =7692D59( 2) 編 程 (中斷法) ORG 0000H AJMP MAIN ORG 000BH;T0中斷矢量 AJMP INQP ORG 0030HMAIN:MOV TMOD,00H ;寫控制字, ;設(shè)T0為定時器方式0 MOV TH0,0F0H ;寫定時常數(shù)(定時1ms)MOV TL0,0CHSETB TR0 ;啟動 T0 SETB ET0 ;允許T0中斷 SETB EA ;開放CPU中斷 AJMP $ ;定時中斷等待 ORG XXXX H ;T0中斷服務(wù)程序INQP:MOV TH0,0F0H ;重寫定時常數(shù) MOV TL0,0CHCPL P10 ;變反輸出
38、RETI ;中斷返回第6章單片機的串行口原理及應(yīng)用復(fù)習(xí) 61問題 2什么叫波特率?它反映的是什么?它與時鐘頻率是相同的嗎?3. 8051單片機的串行口有哪幾種工作方式?各有什么特點和功能?1. 8051單片機與串行口相關(guān)的特殊功能寄存器有哪幾個?說明它們各個位的功能意義。62 并行通信方式與串行通信方式 并行通信 在數(shù)據(jù)傳輸時,如果一個數(shù)據(jù)編碼字符的所有各位都同時發(fā)送、并排傳輸,又同時被接收,則將這種傳送方式稱為并行傳送方式。特點:傳送速度快、效率高。數(shù)據(jù)線多,成本高。 串行通信 在數(shù)據(jù)傳輸時,數(shù)據(jù)編碼字符的所有各位不是同時發(fā)送,而是按一定順序,一位接著一位在信道中被發(fā)送和接收,則將這種傳送方
39、式稱為串行傳送方式。特點:成本低,但速度慢。串行通信方式632 異步傳輸和同步傳輸 異步傳輸 異步傳輸以一個字(或稱字符)為單位進行數(shù)據(jù)傳輸,每個字符都用起始位、停止位包裝起來,在字符間允許有長短不一的間隙(空閑位)。 一個字符由四個部分組成:起始位、數(shù)據(jù)位、奇偶校驗位和停止位。起始位為“0”信號, 起始位后面緊跟著的是數(shù)據(jù)位,它一般是8位,奇偶校驗位只占一位, 停止位用來表征字符的結(jié)束,它一定是“1” ,停止位可以是1位或2位。643. 波特率 波特率表示串行通信時每秒鐘傳送”位” 的數(shù)目,比如1s傳送1bit,就是1波特。即1波特1bit/s (位/秒) 串行通信常用的標(biāo)準(zhǔn)波特率在RS-2
40、32C標(biāo)準(zhǔn)中已有規(guī)定,如波特率為600、1200、2400、4800、9600、19200等等。 假若數(shù)據(jù)傳送速率為120字符/s,而每一個字符幀已規(guī)定為10個數(shù)據(jù)位,則傳輸速率為120101200bit/s,即波特率為1200。 同步傳輸 同步傳輸用來對數(shù)據(jù)塊進行傳輸,一個數(shù)據(jù)塊中包含著許多連續(xù)的字符,在字符之間沒有空閑。65 8051通過RXD(P30)引腳、TXD(P31)引腳輸入、輸出,與外界通信。內(nèi)部有一個通用異步接收發(fā)送器(UART),及波特率發(fā)生器。 UART由同步移位寄存器、接收緩沖器(SBUF)和發(fā)送緩沖器(SBUF)組成它主要完成把數(shù)據(jù)進行串、并行的轉(zhuǎn)換。8051串行口基本
41、結(jié)構(gòu)主要由兩大部分組成。 波特率發(fā)生器: 主要由T1及內(nèi)部的一些控制開關(guān)和分頻器所組成。它提供串行口的時鐘信號為 TXCLOCK(發(fā)送時鐘)和 XCLOCK(接收時鐘)。 串行口的內(nèi)部串行口的工作方式與控制66 8051串行口結(jié)構(gòu)圖 UART67 串行口狀態(tài)控制寄存器 SCON位地址 9FH 9EH9DH9CH 9BH9AH 99H 98H位功能SM0SM1SM2REN TB8 RB8 TI RI 寄存器SCON既可字節(jié)尋址也可位尋址,字節(jié)地址為98H,位地址為98H9FH。其格式如下:工作方式選擇位允許方式2、3中的多處理機通信位允許串行接收位方式2和方式3中要發(fā)送、接收的第9位數(shù)據(jù)發(fā)送、接
42、收中斷標(biāo)志位68 SM0,SM1串行口工作方式選擇位,其功能見表。 SM0 SM1方式 特 點 波 特 率 0 0 方式0 8位移位寄存器 fosc/12 0 1 方式1 10位UART 可變 1 0 方式2 11位UART fosc/64或fosc/32 1 1 方式3 11位UART 可變SM2(SCON.5)允許方式2、3中的多處理機通信位。 方式0時,SM20。 方式1時,若SM2l,只有接收到有效的停止位,接收中斷RI才置1。 方式2和方式3時,若SM21,則只有當(dāng)接收到的第9位數(shù)據(jù)(RB8)為1時,才將接收到的前8位數(shù)據(jù)送入緩沖器SBUF中,并把RI置1、同時向CPU申請中斷;如果
43、接收到的第9位數(shù)據(jù)(RB8)為0,RI置0,將接收到的前8位數(shù)據(jù)丟棄。 而當(dāng)SM20時,則不論接收到的笫九位數(shù)據(jù)是0 或1 ,都將前8位數(shù)據(jù)裝入SBUF中,并申請中斷。 69 電源控制寄存器 PCON 其中最高位SMOD與串行口控制有關(guān),其它位與掉電方式有關(guān)。其格式如下: D7 D6 D5 D4 D3 D2 D1 D0SMOD GF1 GF0 PD IDL SMOD(PCON.7)串行通信波特率系數(shù)控制位。 當(dāng)SMOD1時,使波特率加倍。復(fù)位后,SMOD0。 串行數(shù)據(jù)寄存器SBUF 包含在物理上是隔離的兩個8位寄存器:發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器,它們共用一個地址99H。其格式如下: D7
44、D6 D5 D4 D3 D2 D1 D0 SD7 SD6 SD5 SD4 SD3 SD2 SD1 SD0 讀SBUF(MOVA,SBUF),訪問接收數(shù)據(jù)寄存器;寫SBUF(MOV SBUF,A),訪問發(fā)送數(shù)據(jù)寄存器。 701 串行口方式0 同步移位寄存器方式 當(dāng)SM00、SM10時,串行口選擇方式0。這種工作方式實質(zhì)上是一種同步移位寄器方式。 數(shù)據(jù)傳輸波特率固定為(112)fosc。 由RXD(P30)引腳輸入或輸出數(shù)據(jù), 由TXD(P31)引腳輸出同步移位時鐘。接收發(fā)送的是8位數(shù)據(jù),傳輸時低位在前。幀格式如下: D0D1D2D3D4D5D6D7傳輸方向71當(dāng) SM00、SM1l時,串行口選擇
45、方式1。 數(shù)據(jù)傳輸波特率由T1的溢出決定,可用程序設(shè)定。采用T1作為串行口接收和發(fā)送的波特率發(fā)生器。由 TXD(P31)引腳發(fā)送數(shù)據(jù)。由 RXD(P30)引腳接收數(shù)據(jù)。 發(fā)送或接收一幀信息為10位:1位起始位(0)、8位數(shù)據(jù)位(低位在前)和l位停止位(1)。幀格式如下:起始D0 D1D2D3D4D5D6D7停止2.串行口方式172 當(dāng)SM01、SM10時,串行口選擇方式2;當(dāng)SM11、SM01時,串行口選擇方式3。 由TXD(P3l)引腳發(fā)送數(shù)據(jù)。由RXD(P30)引腳接收數(shù)據(jù)。 為11位:1位起始位(0)、8位數(shù)據(jù)位(低位在前) 、1位可編程位和1位停止位(l)。發(fā)送時可編程位TB8可設(shè)置為
46、1或0,接收時可編程位進入SCON寄存器的RB8位。 方式2的波特率是固定的,為振蕩器頻率的1/32或1/64。方式3的波特率則由T1和T2的溢出決定,可用程序設(shè)定。 幀格式如下: 起 始D0D1D2D3D4D5D6D7D8 停 止3 串行口方式2和3 9位UART738051單片機串行口四種工作方式對應(yīng)著三種波特率。 對于方式0,波特率是固定的,為單片機振蕩頻率fosc的 1/12。 對于方式2,波特率由下式計算:式中,Smod為PCON寄存器中的D7位,fosc為單片機的振蕩頻率。 對于方式1和方式3,波特率都由定時器1的溢出率決定,計算公式如下:式中,Smod為PCON寄存器中的D7位,
47、fosc為單片機的振蕩頻率,k取決于定時器T1的工作方式: 定時器T1工作于方式0時,k=13; 定時器T1工作于方式1時,k=16; 定時器T1工作于方式2和方式3, k=8。(6-1)(6-2)74程序存儲器擴展 P0口是地址和數(shù)據(jù)總線復(fù)用口,只能分時用作地址線。故P0口輸出地址時必須用鎖存器鎖存。 鎖存器的鎖存控制信號為單片機ALE引腳輸出的控制信號。在ALE的下降沿將P0口輸出的地址A0A7鎖存。 由于地址總線寬度為16位,故可尋址范圍為64 KB。(1)地址總線(AB)75(2) 數(shù)據(jù)總線(DB) 由P0口提供,用D0D7表示,是系統(tǒng)中使用最為頻繁的通道。所有單片機與外部交換的數(shù)據(jù)、
48、指令、信息,除少數(shù)可直接通過P1口外,全部通過P0口傳送。(3)控制總線(CB)輸出,用于讀片外程序存儲器(EPROM)中的數(shù)據(jù)。輸入,用于選擇片內(nèi)外程序存儲器,為0時只訪問外部程序存儲器,為1時先訪問內(nèi)部程序存儲器。輸出,用于片外數(shù)據(jù)存儲器(RAM)的讀、寫控制。當(dāng)執(zhí)行片外數(shù)據(jù)存儲器操作指令MOVX時,自動生成 /WR 、/RD控制信號。76(3)控制總線(CB) ALE:輸出P0 口上地址與數(shù)據(jù)隔離信號,用于鎖存P0口輸出的低8位地址的控制線。通常,ALE信號的下降沿控制鎖存器來鎖存地址數(shù)據(jù)。連接在鎖存器的鎖存信號充許端,如74LS373的G端。當(dāng)執(zhí)行MOVX指令時,ALE會輸出一個矩形波,先鎖存由P0口輸出的地址信號,然后再輸出數(shù)據(jù)。ALEP0指令輸入地址輸出數(shù)據(jù)輸入77地址鎖存器的作用:鎖存信號。 當(dāng)ALE為高電平時,8D鎖存器74LS373的輸入和輸出是透明的。當(dāng)ALE為低電平時,8D鎖存器74LS373的輸入是不通的。當(dāng)ALE出現(xiàn)下降沿后,8D鎖存器74
溫馨提示
- 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版節(jié)能環(huán)保設(shè)施運營管理合同范本3篇
- 二零二五年汽車租賃公司兼職司機合同3篇
- 二零二五版家居用品寄售代理合同范本3篇
- 二零二五版草原生態(tài)補償機制承包合同3篇
- 二零二五版插畫師合作合同范本-漫畫創(chuàng)作合作與版權(quán)歸屬協(xié)議3篇
- 二零二五版建筑工程施工企業(yè)施工許可證注銷合同3篇
- 二零二五版安徽農(nóng)民工就業(yè)跟蹤服務(wù)合同范本3篇
- 2025版塊石石材礦山投資合作合同3篇
- 基于2025年度行業(yè)標(biāo)準(zhǔn)的招投標(biāo)實習(xí)合同3篇
- 二零二五年金融創(chuàng)新抵押借款合同范本分享3篇
- 蔣詩萌小品《誰殺死了周日》臺詞完整版
- TB 10010-2008 鐵路給水排水設(shè)計規(guī)范
- 黑色素的合成與美白產(chǎn)品的研究進展
- 建筑史智慧樹知到期末考試答案2024年
- 金蓉顆粒-臨床用藥解讀
- 社區(qū)健康服務(wù)與管理教案
- 2023-2024年家政服務(wù)員職業(yè)技能培訓(xùn)考試題庫(含答案)
- 2023年(中級)電工職業(yè)技能鑒定考試題庫(必刷500題)
- 藏歷新年文化活動的工作方案
- 果酒釀造完整
- 第4章-理想氣體的熱力過程
評論
0/150
提交評論