單片機原理及應(yīng)用(專升本)復(fù)習(xí)總結(jié)_第1頁
單片機原理及應(yīng)用(專升本)復(fù)習(xí)總結(jié)_第2頁
單片機原理及應(yīng)用(專升本)復(fù)習(xí)總結(jié)_第3頁
單片機原理及應(yīng)用(專升本)復(fù)習(xí)總結(jié)_第4頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及應(yīng)用復(fù)習(xí)單片機 (MicroControllerUnit, 簡稱 MCU):把中央處理器 (CPU)、隨機存儲器 (RAM)、只讀存儲器(ROM)、輸入 / 輸出接口電路、定時器 / 計數(shù)器以及串行通信接口等集成在一塊芯片中,構(gòu)成一個完整的微型計算機。第一部分時鐘與復(fù)位一、振蕩器和時鐘電路1. 內(nèi)部時鐘方式2. 外部時鐘方式:外部時鐘信號接至 XTAL1,XTAL2懸空 (P34 圖 2-11)二、時序1. 振蕩周期:也稱為時鐘周期。取決于晶振的頻率。 (以 12MHz為例)2. 狀態(tài)周期:兩個時鐘周期為一個狀態(tài)周期,用S 表示。兩個時鐘周期作為一個狀態(tài)的兩個節(jié)拍,分別稱為節(jié)拍P1

2、和節(jié)拍 P2。3. 機器周期:一個機器周期包含 6 個狀態(tài)周期,用 S1、S2、 、 S6表示;共 12 個節(jié)拍,依次可表示為 S1P1、 S1P2、 S2P1、 S2P2、 、 S6P1、S6P2。4. 指令周期:執(zhí)行一條指令所占用的全部時間,它以機器周期為單位。(1)1 機器周期指令: ADD A,Rn (P291 :1us)(2)2機器周期指令: INC DPTR (P292 :2us)(3)4 機器周期指令: MUL AB;DIV AB;DA A(P292: 4us)應(yīng)用舉例 :8051晶振采用 12MHz,執(zhí)行完下面子程序,需要花多少時間?DL: MOV R7, #20(1)DL2:

3、 MOV R6,#250 (1)DL1: DJNZ R6,DL1(2)DJNZ R7,DL2(2)RET(2)1×1us + 250 ×20× 2× 1us + 20 ×1×1us + 20 ×2×1us + 2 ×1us 10ms-注意事項(I) 在每個機器周期內(nèi), ALE信號兩次有效(出現(xiàn)兩次高電平,每次高電平的寬度為2 個時鐘周期)。(1) 第一次出現(xiàn)在 S1P2 S2P1 (2) 第二次出現(xiàn)在 S4P2-S5P1(II) 沒有 3 機器周期指令(III) 定時器是對機器周期(不是時鐘周期)進行計數(shù)

4、,每個機器周期加1。(IV)RST 引腳端出現(xiàn)兩個機器周期(24 個時鐘周期)以上高電平時,80C51進入復(fù)位狀態(tài)。三、復(fù)位和復(fù)位電路1. 復(fù)位電路(1) 上電復(fù)位(2) 按鍵復(fù)位注意事項(I) 復(fù)位工作過程(II) 復(fù)位條件:在 RST引腳保持 24 個時鐘周期以上的高電平(III) 復(fù)位電路中電阻和電容的取值,保證復(fù)位條件得到滿足。2. 復(fù)位狀態(tài)單片機在 RST引腳高電平的控制下,特殊功能寄存器和程序計數(shù)器PC復(fù)位后的狀態(tài)如下表所示。(1) (SP) = 07H ;(P0 P3)=(FFH), 其余專用寄存器全為 0;(2) (PC) = 0000H :復(fù)位后,單片機從 0000H地址處開

5、始執(zhí)行程序ORG 0000HSTART:MOV .END(3) 復(fù)位時: ALE和 PSEN 引腳成輸入狀態(tài),為高電平(4) P0P3 這四個雙向口皆處于輸入口。第二部分并行 I/O(一)四個 I/O 口( P0P3)一、P1 口Output:內(nèi)部總線 = 1P1.x = 1內(nèi)部總線 = 0P1.x = 0Input:輸入時, Q0 管要截止,內(nèi)部總線要先寫入1P1.x = 1內(nèi)部總線 = 1P1.x = 0內(nèi)部總線 = 0應(yīng)用舉例1.P1 口作為輸出口使用下圖為 8 段共陰數(shù)碼管與8051 的連接,請寫出顯示如下字符時P1口的輸出值。0 3FH 1 06H 2 5BH 3 4FH 4 66H

6、 5 6DH P 73H 7 07H 8 7FH C 39H思考題:如果采用的是共陽極數(shù)碼管,顯示上述字符時 P1口應(yīng)輸出何值? 2.P1 口作為輸入口使用根據(jù)下圖,當(dāng)KEY按下時, LED點亮;當(dāng) KEY未按時, LED滅。KEY:MOV P1,#01HMOV A,P1ANL A,#01HJZNEXT1SETB P3.0AJMP NEXT2NEXT1:CLR P3.0NEXT2:AJMP KEY二、P2 口MUX:多路開關(guān),由控制信號線決定開關(guān)是打向左還是打向右。( 控制線、讀線、寫線均由CPU產(chǎn)生 )引腳復(fù)用:減少引腳數(shù)目,降低芯片成本1. 作為普通 I/O 口使用 ( 與 P1 口相同

7、): 控制 =0,開關(guān)打向左端2. 作為高 8 位地址輸出口:控制 =1,開關(guān)打向右端(注意:高 8 位地址存放在 DPH中 )地址線= 1P2.x = 1地址線= 0P2.x = 0三、P3 口引腳復(fù)用:減少引腳數(shù)目,降低芯片成本1. 作為普通 I/O 口使用:第二功能輸出端要保持高電平(1)Output:內(nèi)部總線 = 1P3.x = 1內(nèi)部總線 = 0P3.x = 0(2)Input:內(nèi)部總線先向鎖存器寫入1P3.x = 1內(nèi)部總線= 1P3.x = 0內(nèi)部總線= 02. 作為第二功能 I/O 口:鎖存器輸出端保持 1(1)Output:第二功能輸出線 =1P3.x = 1第二功能輸出線

8、=0P3.x = 0(2)Input:第二功能輸出線 =1P3.x = 1P3.x = 0第二功能輸入線第二功能輸入線= 1= 0( 注: P3口各位的第二功能見P16 表 2-2)四、P0 口1. 作為普通 I/O 口使用:控制線 =0,V1 截止,多路開關(guān)打到 0 端Input:內(nèi)部總線先寫入1,V2 截止P0.x = 0內(nèi)部總線= 0P0.x = 1內(nèi)部總線= 1Output:內(nèi)部總線 = 0P0.x = 0內(nèi)部總線 = 1P0.x =高阻2. 作為地址 / 數(shù)據(jù)口使用:控制線 =1,多路開關(guān)打到 1 端Output:地址 / 數(shù)據(jù)線 =1 地址 / 數(shù)據(jù)線 =0P0.x = 1P0.x

9、 = 0重點: P0 口是三態(tài)口,輸出時可能為1,可能為 0,還可能是高阻(舉例說明為何要高阻狀態(tài),以數(shù)據(jù)傳輸說明)重點: P0 口是時分復(fù)用,先發(fā)送地址,再發(fā)送數(shù)據(jù)Input:P0.x = 0P0.x = 1內(nèi)部總線內(nèi)部總線= 0= 1四個并行口的總結(jié)1. P0 口為三態(tài)雙向口,負(fù)載能力為 8 個 TTL電路, P1P3口為準(zhǔn)雙向口 ( 用作輸入時,口線被拉成高電平,故稱為準(zhǔn)雙向口) ,負(fù)載能力為 4 個 TTL 電路。2. 在作為一般輸入時,都必須先向鎖存器寫入 1,使驅(qū)動管截止;( 復(fù)位后: (P0P3)=(FFH)進行讀操作時,這四個雙向口皆處于輸入口 )3. 讀入時,分為讀引腳和讀鎖

10、存器兩種(1) 讀引腳: 是讀外部接口的電平信號,讀引腳信號有效。MOV A,P1(2) 讀鎖存器: 是將接口鎖存器的 Q端信號讀回,寫鎖存器信號有效。讀鎖存器指令主要用于讀修改寫指令。如下列這些指令:ANL P1,AXRLP3,AINCP24. 四個 I/O 口在實際使用中,一般遵循以下用法: P0 口一般做系統(tǒng)擴展地址低 8 位/ 數(shù)據(jù)復(fù)用口; P1 口一般做 I/O 擴展口;P2 口做系統(tǒng)擴展地址高 8 位和 I/O 口擴展的地址譯碼用;P3 口做中斷輸入、定時輸出、串行通用口使用。(二)并行 I/O 口的擴展一、簡單并行 I/O 接口的擴展 ( 見 P168圖 8-9)(P2.0 =

11、0時,同時選中 273、244 兩個口 )二、可編程 I/O 接口的擴展 -8155(說明:此部分內(nèi)容放至存儲器擴展部分再講述)第三部分存儲器存儲器 (Memory):程序存儲器 (ROM)和數(shù)據(jù)存儲器 (RAM)兩種。ROM:斷電后存儲在里面的數(shù)據(jù)不會丟失,用來存儲程序代碼;需采用特殊方法進行擦除。1. EPROM2.EEPROM3.FLASHRAM:斷電后存儲在里面的數(shù)據(jù)會丟失;8051 芯片內(nèi)含有 4KB 的 ROM, 256B 的 RAM(128B用戶 RAM,128B 系統(tǒng) RAM)。當(dāng)需要更多的ROM或RAM時,需要連接外部的ROM或外部的 RAM。一、各種存儲器之間的數(shù)據(jù)傳送1.

12、 ROM 送至片內(nèi) RAM( MOVC,MOV)應(yīng)用舉例:已知 'A','B','C','D','E'存儲在程序儲器中,程序存儲器的首地址為500H,編寫一匯編程序,依次將這些數(shù)據(jù)讀出,送入內(nèi)部數(shù)據(jù)存儲器,內(nèi)部數(shù)據(jù)存儲器首地址為30H。ORG500HfDATA: DB'A','B','C','D','E'ORG0000HReset: LJMP MainORG0050HMain:MOVR0,#5MOVR1,#30HMOVDPTR,#fDA

13、TASLOOP:MOVA,#0MOVC A,A+DPTRMOVR1,AINCDPTRINCR1DJNZ R0,SLoopSTOP:LJMP STOPEND2. 片內(nèi) ROM送至片外 RAM(MOVC,MOV,MOVX)應(yīng)用舉例:已知 'A','B','C','D','E'存儲在程序儲器中,程序存儲器的首地址為500H,編寫一匯編程序,依次將這些數(shù)據(jù)讀出,送入外部數(shù)據(jù)存儲器,外部數(shù)據(jù)存儲器的首地址為2000H。ORG500HfDATA: DB'A','B','C',&#

14、39;D','E'ORG0000HReset: LJMP MainORG0050HMain:MOVR2,#0SendLoop:MOV DPTR,#fDATAMOVA,R2MOVC A,A+DPTRMOVDPH,#20HMOVDPL,R2MOVX DPTR,AINCR2CJNE R2,#5,SendLoopSTOP: LJMP STOPEND3. 片內(nèi) RAM送至片內(nèi) RAM應(yīng)用舉例:將位于片內(nèi) RAM的 30H處開始存放的 10 個數(shù)據(jù)依次傳送至片內(nèi)RAM的 40H處開始存放。( 略)4. 片內(nèi) RAM送至片外 RAM應(yīng)用舉例:將位于片內(nèi)RAM的 30H處開始存放的 1

15、0 個數(shù)據(jù)依次傳送至片外RAM的 0030H處開始存放。(略)5. 片外 RAM送至片內(nèi) RAM(略)應(yīng)用舉例:將位于片外RAM的 0030H處開始存放的 10 個數(shù)據(jù)依次傳送至片內(nèi)RAM的 30H處開始存放。(略)6. 片外 RAM送至片外 RAM應(yīng)用舉例:將位于片外RAM的 0030H處開始存放的 10 個數(shù)據(jù)依次傳送至片外RAM的 3000H處開始存放。ORG0000HReset: LJMP MainORG0050HMain:MOVR2,0SendLoop:MOV DPTR,#0030HMOV A,DPLADD A,R2MOV DPL,AMOVX A,DPTRMOVDPTR,#3000H

16、MOVA,DPLADDA,R2MOVDPL,AMOVX DPTR,AINCR2CJNE R2,#10,SendLoopSTOP: LJMP STOPEND綜合應(yīng)用1. 從內(nèi)部 RAM30H單元開始,有10 個單字節(jié)數(shù)據(jù)。試編一個程序,把其中的正數(shù)、負(fù)數(shù)分別送40H和 50H開始的內(nèi)部 RAM單元。MOV R0,#30H MOV R1,#40H MOV A, #50HMOV R7,#10LOOP: MOV 20H, R0JB 20H.7 ,F(xiàn)SHUZSHU: MOV R1, 20HINC R1SJMP NEXTFSHU:XCH A,R1MOV R1,AXCH A,R1INC ANEXT:INC

17、R0DJNZ R7,LOOPEND2. 將外部 RAM的 2000H4FFFH區(qū)域之間的所有單元清零。MOV DPTR, #2000HLOOP: CLR AMOVXDPTR,AINCDPTRMOV A, DPHCJNZ A, #50H,LOOPEND3. 設(shè)邏輯運算表達(dá)式為YA ? BCD ? EF ,其中A,B, C分別為P1.0 、P1.1 、 P1.2 , D、E、F 分別為內(nèi)部 RAM的22H.0、 22H.3,22H.5,輸出變量Y 為P , 試編寫一程序以軟件的方法實現(xiàn)上述邏輯1.5功能。A BIT P1.0B BIT P1.1D BIT 22H.0E BIT 22H.3F BIT

18、 22H.5Y BIT P1.5MOV C,FCPL CORL C,EANL C,DCPL CMOV D,CMOV C,P1.2CPL CORL C,BCPL CANL C,AORL C,DMOV Y,CEND難點:熟練各種尋址方式的應(yīng)用1. 立即尋址2. 寄存器尋址3. 直接尋址 4. 寄存器間接尋址5. 變址尋址6. 相對尋址 7. 位尋址二、存儲器的擴展MCS-51可以擴展 64KB的外部的程序存儲器和 64KB的外部數(shù)據(jù)存儲器。外部數(shù)據(jù)存儲空間可以作為擴展外圍 I/O 的地址空間,這樣,單片機就可以像訪問外部 RAM存儲器那樣訪問外部接口芯片,對其進行讀 / 寫操作。這些外部芯片必須從

19、屬于主機,受主機支配和指揮。因此,主機與各外部擴展的器件之間必須互相連接,溝通信息。連接各擴展部器件的公共信息線稱為總線。1. 線性選擇法:將空余的地址總線(即除去存儲器容量所占用的地址總線外)中的某一根地址線(通常是P2口的某根線 )接到外圍芯片的片選端上,只要該地址線為低電平,就選中該芯片。各芯片的地址空間若將 6116 的 F001H單元的內(nèi)容讀到內(nèi)部RAM20H單元,可執(zhí)行以下程序:MOVDPTR, #0F001HMOVXA, DPTRMOV20H, A2. 全地址譯碼法將低位地址線作為芯片的片內(nèi)地址( 取外部電路中最大的地址線位數(shù)) ,用譯碼器對高位地址線進行譯碼,譯出的信號作為片選

20、線。一般采用 74LSl38 作地址譯碼器。如果譯碼器的輸入端占用三根最高位地址線,則剩余的13 根地址線可作為片內(nèi)地址線,因此,譯碼器的8 根輸出線分別對應(yīng)于一個8K字節(jié)的地址空間。各芯片的地址空間說明:全地址譯碼法比線性選擇法更節(jié)省引腳資源綜合應(yīng)用題第 1 題:某一系統(tǒng),采用 8031 單片機,需外擴 16KB容量的程序存儲器(提供 2764、373 、邏輯電路)要求 a) 畫出擴展后的連接圖。 b) 寫出這 16KB的地址范圍。2764(1) 地址: 0000H 1FFFH2764(2) 地址: 2000H 3FFFH第 2 題1. 下圖中外部擴展的數(shù)據(jù)存儲器容量是多少? (2 分 )2

21、. 三片 6264 的地址范圍分別是多少? ( 地址線未用到的位填 1) (6 分 ,)3. 若外部程序存儲器已擴展(未畫出) ,請編寫程序,要求:將 6264 2# 的前 32 個單元的內(nèi)容送入 40H5FH中; (6 分)P2.7P2.6P2.5P2.45P2.08D0Q037388D7Q78ALEGOEA0A7A8A12A0A7A8 A12A0A7A8 A128031VccCS6264 1#Vcc CS62642#Vcc CS62643#CECECE8D0D7DE WRD0D7 DE WRD0D7 DEWRP0.08P0.7RDWR解:1. 外部擴展的數(shù)據(jù)存儲器為 3 片 8K 的 RA

22、M,總共外擴容量為 24K2.A15A14A13地址范圍6264 #10116000H7FFFH6264 #2101A000HBFFFH6264 #3110C000HDFFFH3 程序如下:ORG0000HRESET:AJMPMAINORG0100H;轉(zhuǎn)主程序MAIN: MOV DPL#00H;初始化DPTRMOV DPH,#0A0HMOVR0,#40H;初始化R0LOOP: MOVX A,DPTRMOV R0,AINCDPTRINCR0CJNER0,#60H,LOOPRET第四部分中斷與定時器(一)中斷一、中斷的概念1. “中斷”中斷是指計算機在執(zhí)行程序的過程中,由于計算機系統(tǒng)內(nèi)、外的某種原

23、因使 CPU暫時停止當(dāng)前程序的執(zhí)行,而轉(zhuǎn)去處理該突發(fā)事件服務(wù),處理完畢后,再返回原程序繼續(xù)執(zhí)行的過程。2. 中斷技術(shù)的優(yōu)點:(1) 提高了 CPU的工作效率(2) 使 CPU能及時處理實時測控現(xiàn)場中許多隨機的參數(shù)和信息。(3) 使 CPU具有了處理故障的能力,提高了系統(tǒng)可靠性。3. 幾個概念:(1)中斷服務(wù)程序(2)中斷請求 (3)斷點(4)響應(yīng)中斷(5)中斷返回 (6)中斷優(yōu)先級 (7)中斷嵌套(8)中斷源(9)中斷矢量 ( 中斷程序入口地址 )8051 單片機的有 5 個中斷源以及對應(yīng)的中斷入口地址:INT0:0003HT0:000BHINT1:0013HT1:001BH串行中斷: 002

24、3H二、與中斷控制有關(guān)的寄存器( 主要有 4 個寄存器 )1. 中斷源的中斷請求標(biāo)志 TCON:bi t8F H8EH8DH8CH8BH8A H89 H88 HTCONTF1TF 0IE 1IT 1IE 088 HIT 0TF1:定時器 T1 的溢出中斷請求標(biāo)志位。TF0:定時器 T0 的溢出中斷請求標(biāo)志位。IE1 :外部中斷 1 的中斷請求標(biāo)志位。IT1 :外部中斷的中斷觸發(fā)方式控制位。IE0 :外部中斷的中斷請求標(biāo)志位,IT0 :外部中斷 0 的中斷觸發(fā)方式控制位。2. 中斷允許控制 IE 與串行口控制寄存器 SCONbi tAFHAEH ADH ACHABHAAHA9HA8HA8HIEE

25、AESET1EX1ET0EX0EA:中斷允許總控制位。ES:串行口中斷允許位。ET1:定時器計數(shù)器T1 的溢出中斷允許位。EX1:外部中斷 1 中斷允許位。ET0:定時器計數(shù)器T0 的溢出中斷允許位。EX0:外部中斷 0 中斷允許位SCON:其低 2 位 TI 和 RI 鎖存串行口的接收中斷和發(fā)送中斷。3. 中斷優(yōu)先級控制寄存器 IP :bi t BFH BEHBDH BCHBBHBAHB9HB8HIPPSPT1PX1PT0B8HPX0IP 中各位的含義(為1 時是高優(yōu)先級,為 0 時是低優(yōu)先級):PS:串行口中斷優(yōu)先級控制位。PT1:定時器 / 計數(shù)器 T1 中斷優(yōu)先級控制位。PX1:外部中

26、斷中斷優(yōu)先級控制位。PT0:定時器 / 計數(shù)器 T0 中斷優(yōu)先級控制位。PX0:外部中斷中斷優(yōu)先級控制位。同一級優(yōu)先級從高到低的順序為:INT0,T0, INT1, T1,串行口。三、中斷響應(yīng)的條件:1. 有中斷源發(fā)出中斷請求;2. 中斷總允許位 EA=1,即 CPU開中斷;3. 申請中斷的中斷源的中斷允許控制位為 1,即中斷沒被屏蔽;4. 無同級或更高級中斷正在被服務(wù);5. 當(dāng)前的指令周期已經(jīng)結(jié)束。INT0,INT1 外部中斷應(yīng)用舉例如下圖所示,要求將開關(guān)所設(shè)的數(shù)據(jù)讀入單片機內(nèi),并依次通過P1.0 P1.3 驅(qū)動發(fā)光二極管?,F(xiàn)要求采用外部中斷邊沿觸發(fā)方式。ORG 0000HRESET:AJM

27、P MAINORG 0003HAJMP INT0_ISRORG 0050H;主程序MAIN:SETB IT0SETB EX0SETB EA;CPU開中斷HERE:SJMP HERE;等待中斷ORG 0200HINT0_ISR:MOV A, #0F0HMOV P1, AMOV A,P1SWAP AMOV P1, ARETIEND( 二) 定時器一、定時電路系統(tǒng)二、與定時有關(guān)的寄存器1. 定時器方式寄存器 TMODbitD7D6D5D4D3D2D1D0TMOD GATEC/TM1M0GATEC/TM1M0 (89H)定時器T1 方式字段定時器T0 方式字段M1.M0:工作方式選擇位,有4 種工作方

28、式M1M0=00時,定時方式0,是一個13 位計數(shù)器,由TL0 的低5 位和TH0的8 位所構(gòu)成。M1M0=01時,定時方式1,是一個16 位計數(shù)器,由TH0(高8 位)和TL0(低8 位)構(gòu)成M1M0=10時,定時方式M1M0=11時,只有定時器2,是一個能自動恢復(fù)初值的8 位定時器計數(shù)器。T0 被選擇為工作方式,它被拆分成個獨立的位計數(shù)器TL0 和TH0 。C/T:0- 定時, 1- 計數(shù)GATE: 0- 由軟件控制 TR0或 TR1位啟動定時器工作1- 由中斷引腳( P3.2 )和( P3.3 )輸入電平分別控制T1 或 T0 的運行。2. 定時器控制寄存器 TCONbitD7D6D5D

29、4D3D2D1D0位地址8FH8EH8DH8CH8BH8A H89H88HTCONTF1TR1TF0TR0(88H)與外部中斷有關(guān)TF1:定時器 T1 溢出標(biāo)志。TR1:定時器 T1 的運行控制位,由軟件置位或復(fù)位。TR11,允許 T1 計數(shù);當(dāng) TR1 0,禁止 T1 計數(shù)。TF0:定時器 T0 溢出標(biāo)志,其含義與TF1類同TR0:定時器 T0 的運行控制位,其含義與TR1類同。3.TH0 , TL0,TH1和 TL1三、定時時間的計算定時器的定時時間t 為:xt ( 2 T0 初值)×機器周期Tx( 2 T0 初值)×時鐘周期× 12注: X 根據(jù)定時器的工作

30、方式03 分別取 13 或 16 或 8例 1: 假設(shè) 8051 單片機晶振頻率為 12MHz,定時器 T0 初值為 912(即 0390H),當(dāng) T0 工作在方式 0 時的定時時間是多少?解:由上述公式可得:定時時間t ( 213 912)× 1/12MHz×12 8000 s8ms例 2:假設(shè) 8051 單片機晶振頻率為 12MHz,所需定時時間為 250 s,當(dāng) T0 工作在方式 0 時 T0 計數(shù)器的初值是多少?解:由定時時間t (2 13T0 初值 ) ×機器周期 T,可得: T0 初值 213定時時間 t/ 機器周期 T213250 s /1s 819

31、2250 7942D11111000 00110B。十六進制表示,高8 位為0F8H,低5 位為06H。其中高8 位放入TH0,即TH00F8H;低5 位放入TL0,即TL006H。-T0,T1定時 / 計數(shù)器應(yīng)用舉例( 一) 計數(shù)器應(yīng)用舉例(略,參見真題分析)( 二) 定時器應(yīng)用舉例1. 查詢方式實現(xiàn)(1) 設(shè) 8051 單片機晶振頻率為 12MHz,使用定時器 T1 以方式 0 產(chǎn)生周期為 500 s 的等寬正方波連續(xù)脈沖,并由 P1.0 輸出。 (用查詢方式)解:設(shè)待求的計數(shù)初值為X,則:(213 X)× 1 s 250s得: X7942D11111000 00110B。其中高

32、 8 位放入 TH1,即 TH10F8H;低 5 位放入 TL1,即TL106H。TMOD寄存器初始化:T1 工作在方式 0,用 TR1為定時功能,故TMOD=00H。ORG 0000HMOV TMOD,#00HMOV TH1, 0F8HMOV TL1, 06HCLR EASETB TR1SETB TR1LOOP: JNB TF1, LOOPCPL P1.0MOV TH1, 0F8HMOVTL1, 06HCLR TF1AJMPLOOP(2) 試編寫程序?qū)?nèi)部 RAM以 30H為起點地址的 X 個數(shù)傳送到外 RAM以 BUF為起點地址的區(qū)域,要求每隔 500ms傳送一個數(shù)據(jù),設(shè) 8031 型單片

33、機的時鐘頻率為 6MHz。(略)2. 中斷方式實現(xiàn) .設(shè)單片機的系統(tǒng)時鐘頻率為12MHz,試編程輸出頻率為100KHZ,占空比為 2:10 的矩形波。解:信號頻率為100KHz,則周期為 1/100kHz=10s,占空比為 2:10 即高電平為 2s,低電平為 8s 的方波,設(shè)采用定時器T0 工作在方式 2, P1.0 輸出該矩形波。8定時 2 s:( 2 - x)× 12/12=2, x=254=0FEH8定時 8 s:( 2 - x)× 12/12=8, x=248=0F8HORG 0000HLJMPMAINORG 000BHLJMPT0_ISRORG0050HMAIN

34、: MOV TOMD,#02HMOVTH0,#0F8HMOVTL0,#0F8HSETBET0SETBEACLRP1.0SETBTR0HERE:SJMPHERET0_ISR:JBP1.0,NEXT1SETB P1.0MOVTH0, #0FEHMOVFL0,#0FEHSJMPNEXT2NEXT1:CLRP1.0MOVTH0, #0F8HMOVTL0, #0F8HNEXT2:RETIEND第五部分串行通信( 一) 串行數(shù)據(jù)通信的基本原理波特率 (baud rate):每秒中傳送數(shù)據(jù)位的數(shù)目;( 二) 串行控制1 SCON寄存器SM0、SM1:串行口工作方式選擇位SM2:多機通信控制位REN:0: 不

35、允許接1:允許接收TB8:發(fā)送數(shù)據(jù)位 8RB8:接收數(shù)據(jù)位 8TI :發(fā)送中斷標(biāo)志RI:接收中斷標(biāo)志2. PCON寄存器SMOD位: 0 波特率保持不變1-波特率增大一倍3.IE 寄存器ES位: 0-禁止串行中斷1-打開串行中斷4.IPPS位: 0 串行斷為低優(yōu)先級1-串行口中斷高優(yōu)先級( 三) 串行通信的應(yīng)用一、方式 0 應(yīng)用 SM1 SM0 = 00SBUF用作同步移位寄存器,波特率為晶振的1/12 。TXD(P3.1) :提供移位脈沖;RXD(P3.2):數(shù)據(jù)移位的入口和出口,低位在先,高位在后。1發(fā)送(串入并出)TXD:輸出移位脈沖RXD:(1)CPU 執(zhí)行 MOV SBUF,A指令時

36、,啟動發(fā)送過程;(2) 在每一個機器周期發(fā)送 SBUF寄存器里的一位數(shù)據(jù),( 故波特率為 fosc/12)(3)8 位數(shù)據(jù)發(fā)送完,中斷標(biāo)志TI=1;( 可以采用查詢方式或中斷方式進行處理)2. 接收(并入串出)TXD:輸出移位脈沖RXD: (1) 當(dāng) REN=1且 RI=0 時,啟動接收;(2) 每一個機器周期向接收 SBUF寄存器送一位數(shù)據(jù);(3) 接收到 8 位數(shù)據(jù)后,中斷標(biāo)志 RI=1。可用查詢或中斷進行處理。二、方式1使用:SM1SM0=01方式1 是10 位為一幀的異步串行通信方式。共包括1 個起始位、8 個數(shù)據(jù)位和一個停止位。其幀格式為:起始停止0 D0D1D2D3D4D5D6D7

37、 11. 數(shù)據(jù)發(fā)送與接收數(shù)據(jù)發(fā)送是由一條寫發(fā)送寄存器( SBUF)指令開始的。接收數(shù)據(jù)時, SCON應(yīng)處于允許接收狀態(tài)( REN1)。2 波特率的設(shè)定(1) 與定時器 T1 有關(guān):通常 T1 工作在 8 位計數(shù)方式(2) 與 SMOD位有關(guān)SMOD波特率 =(2/32) ×定時器 T1 的溢出率應(yīng)用舉例:例:串行口以全雙工方式收發(fā)由7 位二進制數(shù)組成的字符,數(shù)據(jù)第8 位用來作奇偶校驗位,采用偶校驗方式,假設(shè)傳送的波特率為1200 波特、時鐘頻率fosc=6MHz,寫出相關(guān)寄存器的設(shè)置。解:(1) 計算計數(shù)初值:傳輸數(shù)據(jù)的波特率可由定時器T1 產(chǎn)生,將其設(shè)定為工作方式2,避免計數(shù)溢出時

38、重裝定時初值。取 SMOD=0:定時器 T1 的溢出率 =波特率SMOD032/2 =1200×32/2 =38400其對應(yīng)的計數(shù)初值為: X=2n-(fosc/T1的溢出率× 12)=28-(6 ×106/38400 ×12) =243=F3H(2) 確定方式字:對于 SCON:SM0、SM1=01時為方式 1,在 SM2=0和 REN=1條件下,允許接收數(shù)據(jù),其余各位均取0。則 SCON=01010000B=50H。PCON:由于 SMOD=0,所以 PCON=00H(同系統(tǒng)復(fù)位以后的狀態(tài),不必賦值 ) 對于 TMOD:由于只用 T1,且為定時方式

39、2,所以 TMOD=00100000B=20H。三、方式 2 使用: SM1 SM0 = 10定義為 9 位異步通信接口。附加的第 9 位(D8) 數(shù)據(jù)值取決于 SCON中的 TB8SMOD波特率 =(2/64) × fosc-應(yīng)用舉例:設(shè)計一發(fā)送程序,發(fā)送片內(nèi)RAM 50H5FH 中的數(shù)據(jù),串行口設(shè)定為方式2,TB8 用做奇偶較驗位。解:MOVSCON,#80H;設(shè)定為方式 2 發(fā)送MOVPCON ,#80H;波特率為 fosc/32MOVR0, #50H;首地址 50H間址寄存器 R0MOVR7,#16 ;數(shù)據(jù)字節(jié)數(shù) R7LOOP: MOVA, R0;取一數(shù)據(jù) AMOVC,P ;P隨 A變, PCTB8MOV TB8,CMOVSBUF , A;數(shù)據(jù) SBUF,啟動發(fā)送JNBTI,$;等待發(fā)送完CLRTIINCR0;調(diào)整發(fā)送數(shù)據(jù)指針DJNZ R7,LOOPSJMP $-四、方式 3 使用: SM1 SM0 = 11方式 3 為波特率可變的 9 位異步通信方式,除了波特率有所區(qū)別之外,其余方式都與方式2 相同。方式3 的波特率 =(2SMOD/32) ×( 定時器 T1 的溢出率 )( 四) 多機通信具體過程如下

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論