




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第四章
單片機(jī)的其他片內(nèi)
功能部件4-1 并行I/O口
4-2 定時(shí)器/計(jì)數(shù)器
4-4 中斷系統(tǒng)
4-3 串行通信接口
I/O接口的作用實(shí)現(xiàn)和不同外設(shè)的速度匹配改變數(shù)據(jù)傳送方式改變信號的性質(zhì)和電平外部設(shè)備的編址1.對外設(shè)端口單獨(dú)編址
INA,(N);N端口中的數(shù)OUT(N),A2.外設(shè)端口和存儲(chǔ)器統(tǒng)一編址將一部分地址空間讓給外設(shè)端口,存儲(chǔ)器不再使用。優(yōu)點(diǎn):(1)一切指令均適用于I/O端口的訪問,增強(qiáng)了CPU對外圍設(shè)備的處理能力。(2)CPU本身不需要專門的I/O指令。(3)外設(shè)地址安排靈活,數(shù)量不限。端口與接口端口:常指I/O接口中帶有端口地址的寄存器或緩沖器,CPU通過端口地址就可以對端口中信息進(jìn)行讀寫。接口:指CPU與外設(shè)間的I/O接口芯片,一個(gè)外設(shè)通常需要一個(gè)I/O接口,但一個(gè)I/O接口可以有多個(gè)I/O端口,傳送數(shù)據(jù)字的端口稱數(shù)據(jù)口,傳送命令字的稱命令口,傳送狀態(tài)字的稱為狀態(tài)口。4-1并行I/O口四個(gè)8位并行I/O端口:P0、P1、P2和P3。每個(gè)端口都是8位準(zhǔn)雙向口,包含一個(gè)鎖存器(即特殊功能寄存器P0~P3)、一個(gè)輸出驅(qū)動(dòng)器和一個(gè)輸入緩沖器。這四個(gè)并行I/O口都可以作準(zhǔn)雙向通用I/O口,既可以作輸入口,又可以作輸出口,還可以作雙向口。輸出有鎖存功能;輸入有三態(tài)緩沖但無鎖存功能。它們既可以以字節(jié)尋址,也可以按位獨(dú)立輸入/輸出。
三種I/O端口操作方式1.數(shù)據(jù)輸出方式(寫端口)通過一條指令將數(shù)據(jù)寫入P0-P3的數(shù)據(jù)鎖存器,然后通過輸出驅(qū)動(dòng)器送到端口引腳。MOVP0,A;累加器A中內(nèi)容送P0口2.讀端口對端口鎖存器數(shù)據(jù)進(jìn)行讀入,這個(gè)數(shù)據(jù)并非端口引腳上的數(shù)據(jù)MOVA,P1;P1鎖存器中數(shù)據(jù)送A3.讀引腳從端口引腳上讀數(shù)據(jù),先使對應(yīng)端口鎖存器置位,使T管截止,然后打開數(shù)據(jù)緩沖器,使引腳數(shù)據(jù)輸入數(shù)據(jù)總線。MOVP1,#0FH;使P1口低四位鎖存器置位MOVA,P1;讀P1口低四位引腳線信號P1口的位結(jié)構(gòu)通用I/O口 可以采用字節(jié)操作也可以采用位操作,CPU既可以把它們看作數(shù)據(jù)口也可以看作狀態(tài)口。
CPU復(fù)位后,口鎖存器為“1”,對于作為輸入的口腳(讀引腳),相應(yīng)位的口鎖存器不能寫入“0”。4-1-1P1口例4-1讀P1.4~P1.7口狀態(tài)送指示燈顯示。
字節(jié)操作參考程序:
ORLP1,#0F0H;P1.4~P1.7口鎖存器置1MOVA,P1;讀P1.4~P1.7引腳狀態(tài)SWAPA;MOVP1,A;RETP2口有兩種功能:對于內(nèi)部有程序存貯器的單片機(jī),P2口既可以作為輸入/輸出口使用,也可以作為系統(tǒng)擴(kuò)展的地址總線口,輸出高8位地址A8~A15。
對于內(nèi)部沒有程序存貯器的單片機(jī),必須外接程序存貯器,一般情況下P2口只能作為系統(tǒng)擴(kuò)展的高8位地址總線口,而不能作為外部設(shè)備的輸入/輸出口。
4-1-2P2口P2口作通用I/O口
例4-3
XRLP2,#01H;P2.0取反CPLP2.0;P2.0取反
P2口作地址總線(1)若片外數(shù)據(jù)存儲(chǔ)器的容量≤256B這時(shí)P2口不輸出地址,仍可作為I/O口使用例4-4將56H寫入外部RAM的38H單元,CPU執(zhí)行下面的程序段不影響P2口狀態(tài):
MOVR0,#38HMOVA,#56HMOVX@R0,A
(2)若片外數(shù)據(jù)存儲(chǔ)器的容量≥256B
MOVXA,@DPTRMOVX@DPTR,A
4-1-3P0口
P0口既可作通用I/O口(用8051時(shí))使用,又可作地址/數(shù)據(jù)分時(shí)復(fù)用總線使用。
P3口除了作為準(zhǔn)雙向通用I/O接口使用外,每一根線還具有第二種功能。4-1-4P3口
引腳第
二
功
能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INT0(外部中斷0請求輸入端)P3.3INT1(外部中斷1請求輸入端)P3.4T0(定時(shí)器/計(jì)數(shù)器0計(jì)數(shù)脈沖輸入端)P3.5T1(定時(shí)器/計(jì)數(shù)器1計(jì)數(shù)脈沖輸入端)P3.6WR(片外RAM寫選通信號輸出端)P3.7RD(片外RAM讀選通信號輸出端)1、MCS-51內(nèi)部具有兩個(gè)定時(shí)/計(jì)數(shù)器,可用于定時(shí)控制,分頻器和事故處理來用。2、內(nèi)部是一個(gè)二進(jìn)制加1計(jì)數(shù)器,當(dāng)計(jì)數(shù)器計(jì)滿回零時(shí)能自動(dòng)產(chǎn)生溢出中斷請求,表示定時(shí)時(shí)間已到或計(jì)數(shù)已中止。4-2 定時(shí)器/計(jì)數(shù)器2個(gè)可獨(dú)立控制的16位定時(shí)器/計(jì)數(shù)器:T0、T1原理:1、定時(shí)模式
每一個(gè)機(jī)器周期計(jì)數(shù)器加1,直至計(jì)滿溢出產(chǎn)生中斷請求。對于一個(gè)N位的加1計(jì)數(shù)器,若計(jì)數(shù)時(shí)鐘的頻率f是已知的,則從初值a開始加1計(jì)數(shù)至溢出所占用的時(shí)間為:當(dāng)N=8、a=0、t=1/f時(shí),最大的定時(shí)時(shí)間為:T=256t2、計(jì)數(shù)模式 外部輸入信號是加到T0(P3.4)或T1(P3.5)端,CPU每個(gè)機(jī)器周期對T0(或T1)檢測一次,只有在前一次檢測為1后一次檢測為0時(shí)才使計(jì)數(shù)器加1。所以,對外部輸入信號的最高計(jì)數(shù)速率是晶振的1/24。一.定時(shí)器控制、狀態(tài)寄存器1.TMOD定時(shí)器方式寄存器(89H)1)功能選擇位C/T:=0,定時(shí)功能,計(jì)數(shù)內(nèi)部機(jī)器周期脈沖;=1,計(jì)數(shù)功能,計(jì)數(shù)引腳T0(T1)輸入的脈沖下降沿。2)方式選擇位M1、M0:4種工作方式:13/16/8位3)門控方式選擇位GATE:=0,非門控方式(內(nèi)部啟動(dòng)):
TRx=1,啟動(dòng)定時(shí)器工作;
TRx=0,停止定時(shí)器工作。=1,門控方式(外部啟動(dòng)):TRx=1且引腳INTx=1才啟動(dòng)。T1T0MOV TMOD,#11010010B
或MOV TMOD,#0D2H注:只能字節(jié)尋址
TMOD確定定時(shí)器工作方式指令:MOVTMOD,#方式字例:設(shè)T0用方式2非門控定時(shí),T1用方式1門控計(jì)數(shù)。2.TCON定時(shí)器控制/狀態(tài)寄存器(88H)1)啟動(dòng)控制位TR0、TR1=0,停止定時(shí)器工作;=1,啟動(dòng)定時(shí)器工作。例:啟動(dòng)T0: SETB TR0;注:可以位尋址
2)溢出中斷標(biāo)志位TF0、TF1定時(shí)器溢出使TFx=1。中斷方式:TFx=1引起中斷請求,CPU響應(yīng)Tx中斷后,自動(dòng)對TFx清0。軟件查詢方式:可用軟件檢測TFx,必須軟件清0。
WAIT:JBCTF0,NEXT;檢測T0是否溢出
SJMP WAIT ;未溢出,繼續(xù)檢測
NEXT:… ;溢出,TF0清0,處理溢出3.可預(yù)置初值的16位加1定時(shí)計(jì)數(shù)器屬于SFR中的一種,T0由TH0、TL0組成,
T1由TH1、TL1組成。通過預(yù)設(shè)初值來定時(shí)。預(yù)置T0初值指令: MOV TH0,#XH
MOV TL0,#XL二、定時(shí)器工作方式
由方式選擇位M1、M0設(shè)定1.方式013位定時(shí)/計(jì)數(shù)器。計(jì)數(shù)外部脈沖個(gè)數(shù):1~8192(213)定時(shí)時(shí)間(12MHz,即:T=1s):1s~8.192ms振蕩器÷12THxTLxTFx8位5位Tx腳&TRx1GATE啟動(dòng)控制INTxC/T=0C/T=1中斷申請THx
高8位和TLx
低5位組成13位加1計(jì)數(shù)器例:計(jì)算得初值為7692,13位定時(shí)器T0應(yīng)裝初值多少?7692化為16進(jìn)制數(shù)1E0CH,則TH0=0FOH,TL0=0CH2.方式116位定時(shí)/計(jì)數(shù)器。THx8位和TLx8位組成16位加1計(jì)數(shù)器計(jì)數(shù)外部脈沖個(gè)數(shù):1~65536(216)定時(shí)時(shí)間(T=1s):1s~65536×T=65.54ms振蕩器÷12THxTLxTFx8位8位Tx腳&TRx1GATE啟動(dòng)控制INTxC/T=0C/T=1中斷申請3.方式2自動(dòng)恢復(fù)初值8位定時(shí)/計(jì)數(shù)器。TLx為8位加1計(jì)數(shù)器,THx為8位初值暫存器。無需重裝初值,用于需要重復(fù)定時(shí)和計(jì)數(shù)的場合。最大計(jì)數(shù)值:256(28)最大定時(shí)時(shí)間(T=1s):256s振蕩器÷12TLxTHxTFx8位
Tx腳&TRx1GATE啟動(dòng)控制INTxC/T=0C/T=1中斷申請重裝方式2下,當(dāng)定時(shí)器計(jì)滿回零時(shí),一方面向CPU發(fā)出溢出中斷請求,另一方面從TH中重新獲得初值并啟動(dòng)計(jì)數(shù)。而方式0、1、3下,定時(shí)器必須通過重裝初值來重新啟動(dòng)計(jì)數(shù)。4.方式3(只適用T0)T0分成2個(gè)獨(dú)立的8位定時(shí)器:TL0定時(shí)/計(jì)數(shù)器和TH0定時(shí)器TL0占用T0控制位:C/T,TR0,GATE;TH0占用T1控制位。T1不能使用方式3工作,一般當(dāng)T1作為波特率發(fā)生器時(shí),T0選方式3。振蕩器÷12TL0TF08位
T0腳&TR01GATE啟動(dòng)控制INT0C/T=0C/T=1中斷申請TH0TF18位
啟動(dòng)控制中斷申請振蕩器÷12TR14-2-3定時(shí)器/計(jì)數(shù)器的初始化
1.初始化步驟
1)給定時(shí)器方式寄存器TMOD寫一個(gè)方式控制字。2)給定時(shí)器送定時(shí)初值。3)給中斷允許寄存器IE選送中斷控制字和中斷優(yōu)先級寄存器IP選送中斷優(yōu)先級字,以開放相應(yīng)中斷和設(shè)定中斷優(yōu)先級。4)給定時(shí)器控制寄存器TCON送命令字,以啟動(dòng)或禁止定時(shí)器/計(jì)數(shù)器的運(yùn)行。
2.計(jì)數(shù)器初值的計(jì)算
TC=M-C
方式0時(shí)M為2^13;方式1時(shí)M為2^16;方式2和方式3時(shí)M為2^8。TC為計(jì)數(shù)初值C為計(jì)滿所需要的計(jì)數(shù)個(gè)數(shù)3.定時(shí)器初值的計(jì)算T=(M-TC)T計(jì)數(shù)上式也可寫成:TC=M-T/T計(jì)數(shù)式中,M為模值,和定時(shí)器的工作方式有關(guān);T計(jì)數(shù)是單片機(jī)時(shí)鐘周期TCLK的12倍;TC為定時(shí)器的定時(shí)初值。
例4-7
若單片機(jī)時(shí)鐘頻率為12MHz,請計(jì)算定時(shí)2ms所需的定時(shí)器初值。解:由于定時(shí)器工作在方式2和方式3下時(shí)的最大定時(shí)時(shí)間只有0.256ms,因此要想獲得2ms的定時(shí)時(shí)間定時(shí)器必須工作在方式0或方式1。若采用方式0,則根據(jù)公式可得定時(shí)器初值為:TC=M-T/T計(jì)數(shù)=
2^13
-2*10^3/1=6192=1830H即:TH0應(yīng)裝#0C1H;TL0應(yīng)裝#10H(高三位為0)若采用方式1,則根據(jù)公式可得定時(shí)器初值為:TC=-2ms/1=63536=F830H
即:TH0應(yīng)裝#0F8H;TL0應(yīng)裝#30H。例:設(shè)8031時(shí)鐘頻率為12MHz,要求定時(shí)器T0定時(shí)50ms,寫出初始化程序。TC=M-T/T計(jì)數(shù)=2^16-50ms/1us=15536=3CB0HSTART:MOVTMOD#01H;方式1MOVTH0,#3CH;裝初值MOVTL0,#0B0HSETBTR0;啟動(dòng)T0計(jì)數(shù)WAIT:JBCTF0,TT0;檢測T0是否溢出
SJMPWAIT ;未溢出,繼續(xù)檢測TTO:MOVTH0,#3CH;重裝初值MOVTL0,#0B0H…
4-3 串行接口一、數(shù)據(jù)通信的基本方式并行通信數(shù)據(jù)有多少位就需多少根傳送線,傳送距離短,傳送速度快。串行通信只需一對傳送線,傳送距離相對較遠(yuǎn),但傳送速度慢。二.串行通訊的基本方式(一).異步通訊
以字符為傳送單位用起始位和停止位標(biāo)識每個(gè)字符的開始和結(jié)束,字符間隔不固定,只需字符傳送時(shí)同步。
(二).同步通信
每一數(shù)據(jù)塊開頭時(shí)發(fā)送一個(gè)或兩個(gè)同步字符,使發(fā)送與接收雙方取得同步。數(shù)據(jù)塊的各個(gè)字符間取消了起始位和停止位,所以通信速度得以提高。
三.串行數(shù)據(jù)傳送方向單工通訊:數(shù)據(jù)單向傳送。半雙工通訊:數(shù)據(jù)可分時(shí)雙向傳送。全雙工通訊:可同時(shí)進(jìn)行發(fā)送和接收。發(fā)送器接收器發(fā)送器接收器四.串行接口的基本結(jié)構(gòu)1.發(fā)送器:并串?dāng)?shù)據(jù)格式轉(zhuǎn)換,添加標(biāo)識位和校驗(yàn)位,一幀發(fā)送結(jié)束,設(shè)置結(jié)束標(biāo)志,申請中斷。2.接收器:串并數(shù)據(jù)格式轉(zhuǎn)換,檢查錯(cuò)誤,去掉標(biāo)識位,保存有效數(shù)據(jù),設(shè)置接收結(jié)束標(biāo)志,申請中斷。3.控制器:接收編程命令和控制參數(shù),設(shè)置工作方式:同步/異步、字符格式、波特率、校驗(yàn)方式、數(shù)據(jù)位與同步時(shí)鐘比例等。五、MCS-51的串行接口控制器1.數(shù)據(jù)緩沖器(發(fā)送器和接收器)SBUF發(fā)送SBUF和接收SBUF共用一個(gè)地址99H 。
1)發(fā)送SBUF存放待發(fā)送的8位數(shù)據(jù),寫入SBUF將同時(shí)啟動(dòng)發(fā)送。發(fā)送指令:
MOV SBUF,A2)接收SBUF存放已接收成功的8位數(shù)據(jù),供CPU讀取。讀取串行口接收數(shù)據(jù)指令:MOVA,SBUF2.串行口控制/狀態(tài)寄存器SCON(98H)(控制器)SM0,SM1:選擇串行口4種工作方式。2.串行口控制/狀態(tài)寄存器SCONSCONCON(98H)SM2:多機(jī)控制位,用于多機(jī)通訊。方式2、3時(shí),SM2=1&RB8=1則激活RI;方式1時(shí),SM2=0&RB8=1時(shí)激活RI.REN:允許接收控制位,REN=1,允許接收;REN=0,禁止接收.TB8:發(fā)送的第9位數(shù)據(jù)位,可用作校驗(yàn)位和地址/數(shù)據(jù)標(biāo)識位.RB8:接收的第9位數(shù)據(jù)位或停止位.TI:發(fā)送中斷標(biāo)志,發(fā)送一幀結(jié)束,TI=1,須軟件清零.RI:接收中斷標(biāo)志,接收一幀結(jié)束,RI=1,須軟件清零.SMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍,SMOD=0,則不加倍。3.節(jié)電控制寄存器PCONPPCPCPCONONCON波特率:每秒鐘傳送二進(jìn)制數(shù)碼的位數(shù)(bit數(shù)),單位是bps(bitpersecond)。若波特率為1200bps,字符的實(shí)際傳送速率為1200/10=120幀/秒。四、串行接口的工作方式
SM0,SM1選擇四種工作方式。方式0:同步移位寄存器方式。用于擴(kuò)展并行I/O接口。1.數(shù)據(jù)結(jié)構(gòu):一幀8位,無起始位和停止位。2.RXD:數(shù)據(jù)輸入/輸出端。
TXD:同步脈沖輸出端,每個(gè)脈沖對應(yīng)一個(gè)數(shù)據(jù)位。3.波特率:B=fosc/12
如:fosc=12MHz,B=1MHz,每位數(shù)據(jù)占1s。4.發(fā)送過程:先對TI清零,寫入SBUF,啟動(dòng)發(fā)送,一幀發(fā)送結(jié)束,TI=1。
接收過程:REN=1且RI=0,啟動(dòng)接收,一幀接收完畢,RI=1。
串行輸入、并行輸出移位寄存器內(nèi)部結(jié)構(gòu)RXDTXD(2)方式1
8位數(shù)據(jù)異步通訊方式。1.數(shù)據(jù)結(jié)構(gòu):一幀10位,8位數(shù)據(jù)位,1個(gè)起始位(0),1個(gè)停止位(1)。2.RXD:接收數(shù)據(jù)端。
TXD:發(fā)送數(shù)據(jù)端。3.波特率:用T1作為波特率發(fā)生器,B=(2SMOD/32)×T1溢出率。4.發(fā)送:先對TI清零,寫入SBUF,同時(shí)啟動(dòng)發(fā)送,一幀發(fā)送結(jié)束,TI=1。
接收:REN=1,RI=0,允許接收。接收完一幀,將接收數(shù)據(jù)裝入SBUF,RI=1。接收原理:當(dāng)REN=1,CPU開始采樣RXD引腳負(fù)跳變信號,若出現(xiàn)負(fù)跳變,才進(jìn)入數(shù)據(jù)接收狀態(tài)。即先檢測起始位,若第一位為0,繼續(xù)接收其余位;否則,停止接收,重新采樣負(fù)跳變。數(shù)據(jù)采樣速率為波特率16倍頻,在數(shù)據(jù)位中間,用第7、8、9個(gè)脈沖采樣3次數(shù)據(jù)位,并3中取2保留采樣值。寫入SBUF采樣(a)發(fā)送時(shí)序圖TXD數(shù)據(jù)輸出TID0D1D2D3D4D5D6D7停止位起始位RXD輸入數(shù)據(jù)(b)接收時(shí)序圖D0D1D2D3D4D5D6D7停止位起始位RI檢測負(fù)跳變接收和發(fā)送時(shí)序圖(3)
方式2和方式3
9位數(shù)據(jù)異步通訊方式。1.一幀為11位:9位數(shù)據(jù)位,1個(gè)起始位(0),1個(gè)停止位(1)。第9位數(shù)據(jù)位在TB8/RB8中,常用作校驗(yàn)位和多機(jī)通訊標(biāo)識位。2.RXD:接收數(shù)據(jù)端TXD:發(fā)送數(shù)據(jù)端3.波特率:方式2:B=(2SMOD/64)×fosc。
方式3:B=(2SMOD/32)×T1溢出率。4.發(fā)送:先裝入TB8,寫入SBUF并啟動(dòng)發(fā)送,發(fā)送結(jié)束,TI=1。
接收:REN=1,允許接收。接收完一幀,若RI=0,SM2=0或RB8=1,將接收數(shù)據(jù)裝入接收SBUF,第9位裝入RB8,使RI=1;否則丟棄接收數(shù)據(jù),不置位RI。(4)計(jì)算波特率方式0為固定波特率:B=fosc/12 方式2可選兩種波特率:B=(2SMOD
/64)×fosc 方式1、3為可變波特率,用T1作波特率發(fā)生器。
B=(2SMOD/32)×T1溢出率T1為方式2的溢出時(shí)間:t=(28-X)T=(28-X)×12/foscT1溢出率=1/t=fosc/[12×(2n-X)]
波特率B=(2SMOD
/32)×fosc/[12×(28-X)]串行口方式1、3,根據(jù)波特率選擇T1工作方式,計(jì)算時(shí)間常數(shù)。T1選方式2:TH1=X=28-fosc/12×2SMOD/(32×B)T1選方式1用于低波特率,需考慮T1重裝時(shí)間常數(shù)時(shí)間。4-3-5單片機(jī)雙機(jī)通訊和多機(jī)通信
1.雙機(jī)通訊
2.多機(jī)通訊串行口的應(yīng)用串行口初始化編程格式:
SIO:MOVSCON,#××H;方式字,且TI=RI=0 MOVPCON,#80H ;波特率加倍
MOVTMOD,#20H ;T1作波特率發(fā)生器,方式2
MOVTH1,#X;選定波特率
MOVTL1,#X SETBTR1 SETBEA ;開串行口中斷
SETBES發(fā)送程序:先發(fā)送一個(gè)字符,等待TI=1后再發(fā)送下一個(gè)字符。1.查詢方式:TRAM: MOV A,@R0 ;取數(shù)據(jù)
MOV SBUF,A ;發(fā)送一個(gè)字符WAIT: JBC TI,NEXT ;等待發(fā)送結(jié)束
SJMP WAITNEXT: INC R0 ;準(zhǔn)備下一次發(fā)送
SJMP TRAM2.中斷方式:
ORG 0023H ;串行口中斷入口
AJMPSINTMAIN: … ;初始化編程TRAM: MOV A,@R0 ;取數(shù)據(jù)
MOV SBUF,A ;發(fā)送第一個(gè)字符
H: SJMP H ;其它工作
SINT: CLRTI ;中斷服務(wù)程序
INC R0 MOV A,@R0 ;取數(shù)據(jù)
MOV SBUF,A ;發(fā)送下一個(gè)字符
RETI接收程序:REN=1、RI=0等待接收,當(dāng)RI=1,從SBUF讀取數(shù)據(jù)。1.查詢方式:
WAIT: JBC RI,NEXT ;查詢等待
SJMP WAITNEXT: MOV A,SBUF ;讀取接收數(shù)據(jù)
MOV @R0,A ;保存數(shù)據(jù)
INC R0 ;準(zhǔn)備下一次接收
SJMP WAIT2.中斷方式:
ORG 0023H AJMP RINTMAIN: … ;初始化編程
H: SJMP H ;其它任務(wù)
RINT: CLR RI ;清中斷標(biāo)志
MOV A,SBUF ;讀取接收數(shù)據(jù)
MOV @R0,A ;保存數(shù)據(jù)
INC R0 RETI(二)異步通訊程序舉例
1.發(fā)送程序:將片內(nèi)RAM50H起始單元的16個(gè)數(shù)由串行口發(fā)送。要求發(fā)送波特率為系統(tǒng)時(shí)鐘的32分頻,并進(jìn)行奇偶校驗(yàn)。MAINT:MOV SCON,#80H;串行口初始化,方式2
MOV PCON,#80H;波特率,SMOD=1
MOV R0,#50H ;設(shè)數(shù)據(jù)指針
MOV R7,#10H ;數(shù)據(jù)長度LOOP:MOVA,@R0 ;取一個(gè)字符
MOV C,P ;加奇偶校驗(yàn)
MOV TB8,C MOV SBUF,A ;啟動(dòng)第一次發(fā)送
WAIT: JBC TI,NEXT ;等待發(fā)送結(jié)束
SJMP WAITNEXT: INC R0 ;準(zhǔn)備下一次發(fā)送
DJNZ R7,LOOP;是否發(fā)送完?
END2.接收程序:串行接收16個(gè)字符,存入片內(nèi)RAM的50H起始單元,串行口波特率為2400(設(shè)晶振為11.0592MHz),進(jìn)行奇偶校驗(yàn)。MAIN: MOV SCON,#0D0H;串行口方式3允許接收
MOV TMOD,#20H;T1方式2定時(shí)
MOV TL1,#0F4H;寫入T1時(shí)間常數(shù)
MOV TH1,#0F4H SETBTR1 ;啟動(dòng)T1 MOV R0,#50H;設(shè)數(shù)據(jù)指針
MOV R7,#10H
;接收數(shù)據(jù)長度
WAIT:JBCRI,NEXT ;等待串行口接收
SJMPWAIT
NEXT:MOVA,SBUF ;取一個(gè)接收字符
JNB P,COMP ;奇偶校驗(yàn)
JNB RB8,ERR ;P≠RB8,數(shù)據(jù)出錯(cuò)
SJMPRIGHT ;P=RB8,數(shù)據(jù)正確COMP:JB RB8,ERRRIGHT:MOV@R0,A ;保存一個(gè)字符
INCR0 ;修改指針
DJNZR7,WAIT;全部字符接收完?
CLRF0 ;F0=0,接收數(shù)據(jù)全部正確
SJMPQUITERR:SETBF0;F0=1,接收數(shù)據(jù)出錯(cuò)QUIT: RET4.4.1中斷系統(tǒng)概述一、中斷的概念中央處理器CPU正在處理某事件的時(shí)候,外部發(fā)生了更為緊急的事件,請求CPU暫停當(dāng)前的工作,轉(zhuǎn)入處理所發(fā)生的事情,處理完后,再回到被中斷的地方,繼續(xù)原來的工作,這樣的過程稱為中斷。日常事務(wù)程序中斷服務(wù)程序4-4 中斷系統(tǒng)中斷技術(shù)的優(yōu)點(diǎn):提高CPU的效率。提高實(shí)時(shí)數(shù)據(jù)的處理時(shí)效。
被控對象的實(shí)時(shí)參數(shù)、越限數(shù)據(jù)和故障信息為計(jì)算機(jī)及時(shí)采集,以便應(yīng)急處理。故障處理
如掉電中斷。中斷系統(tǒng)的功能:中斷優(yōu)先權(quán)排隊(duì)
根據(jù)輕重緩急排隊(duì),優(yōu)先處理最緊急事件的中斷請求。實(shí)現(xiàn)中斷嵌套
CPU處理中斷時(shí),發(fā)生另一個(gè)優(yōu)先級更高的中斷請求,CPU轉(zhuǎn)而響應(yīng)優(yōu)先級更高的中斷請求,處理完之后再回到原來中斷服務(wù)程序。自動(dòng)響應(yīng)中斷實(shí)現(xiàn)中斷返回。二、中斷系統(tǒng)結(jié)構(gòu)2個(gè)外部中斷源信號:INT0、INT12個(gè)定時(shí)器T0、T1溢出中斷請求:TF0、TF11個(gè)串行口數(shù)據(jù)發(fā)送、接收結(jié)束中斷請求:TI、RI三、中斷控制寄存器四、中斷控制寄存器中的各中斷標(biāo)志1.中斷標(biāo)志位:
TF1、TF0、IE1、IE0、RI、TI
SCONTCON登記各中斷源請求信號:=1,有中斷請求;=0,無中斷請求。CPU響應(yīng)中斷后,各中斷標(biāo)志自動(dòng)清零。注意:TI,RI標(biāo)志必須軟件清零。2.外部中斷觸發(fā)方式選擇位:IT0、IT1=1,負(fù)邊沿觸發(fā)中斷請求;=0,低電平觸發(fā)中斷請求。五、中斷控制寄存器中各控制位=1,開中斷;=0,關(guān)中斷。例:允許CPU響應(yīng)T0的中斷請求
MOVIE,#82H或者SETBET0 SETBEA 2級優(yōu)先級:=1,為高優(yōu)先級;=0,為低優(yōu)先級。 同一優(yōu)先級別按內(nèi)部查詢順序排列優(yōu)先級:
高INT0、T0、INT1、T1、SIO低。3.中斷允許控制位:EA、ES、ET1、EX1、ET0、EX0IEIP4.中斷優(yōu)先級控制位:PS、PT1、PX1、PT0、PX0注意:低優(yōu)先級中斷可以被高優(yōu)先級中斷所中斷,反之不能。一種中斷一旦得到響應(yīng),與它同級的中斷不能再中斷它。4.4.2中斷處理過程
1.中斷響應(yīng)(一)中斷響應(yīng)條件1.有中斷源發(fā)出中斷請求;2.中斷總允許位EA=1,即CPU開中斷;3.相應(yīng)的中斷允許位為1,即沒有屏蔽。(二)響應(yīng)過程1.阻斷同級或低級中斷;2.PC指針內(nèi)容壓棧保護(hù);3.相應(yīng)中斷入口地址裝入PC,程序轉(zhuǎn)移到該中斷入口地址單元。(三)中斷響應(yīng)阻斷.1.當(dāng)CPU未執(zhí)行完一條指令。2.當(dāng)有同級或高級中斷服務(wù)。3.執(zhí)行RET、RETI等指令后,不能立即響應(yīng)中斷。2.中斷處理注意:
(1)各中斷源的入口矢量地址之間,相隔8個(gè)單元,通常是在中斷入口矢量地址單元處存放一條無條件轉(zhuǎn)移指令,轉(zhuǎn)至存儲(chǔ)器其他的任何空間去執(zhí)行中斷服務(wù)程序。
(2)若要在執(zhí)行當(dāng)前中斷程序時(shí)禁止更高優(yōu)先級中斷,應(yīng)用軟件關(guān)閉CPU中斷,或屏蔽更高級中斷源的中斷,在中斷返回前再開放中斷。
(3)在保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場時(shí),為了不使現(xiàn)場信息受到破壞或造成混亂,一般在此情況下,應(yīng)關(guān)CPU中斷,使CPU暫不響應(yīng)新的中斷請求。
3.中斷返回中斷返回指令:
RETI=RET指令+通知CPU中斷服務(wù)已結(jié)束。4.4.3中斷系統(tǒng)應(yīng)用中斷服務(wù)程序的—般格式如下:
CLR EA ;關(guān)中斷PUSHPSW;保護(hù)現(xiàn)場PUSHA…SETB EA ;開中斷,允許CPU響應(yīng)高級中斷CLR EA ;關(guān)中斷POPA;恢復(fù)現(xiàn)場POPPSW…SETB EA ;開中斷RETI ;中斷返回
…;服務(wù)程序1.定時(shí)器/計(jì)數(shù)器的應(yīng)用和編程
例4-10產(chǎn)生2ms的方波
ORG 0000HRESET:AJMP MAIN
;轉(zhuǎn)主程序
ORG000BH
;轉(zhuǎn)中斷處理程序
AJMP IT0P
ORG0100HMAIN:MOVSP,#6
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 花藝師個(gè)人品牌建設(shè)的試題及答案
- 2024年輔導(dǎo)員考試真題回顧與試題及答案
- 農(nóng)藥制劑考試試題及答案
- 2024年花藝師考試關(guān)鍵點(diǎn)及答案
- 深入解析2024福建事業(yè)單位考試試題及答案
- 電工(初級工)試題及答案
- 2024年農(nóng)藝師考試模擬試題及答案講解
- 卡車員工考試題及答案解析
- 學(xué)習(xí)重點(diǎn)分析農(nóng)藝師試題及答案
- 花藝師考試模擬題及答案解析
- 河南農(nóng)商銀行系統(tǒng)招聘筆試真題2024
- 眼鏡定配工中級資格考試題庫
- Unit 3 Faster,highter,stronger Understanding Ideas The road to success群文閱讀說課稿 2024-2025學(xué)年高中英語人教版選擇性必修第一冊
- 沈陽市地圖課件
- 醫(yī)院醫(yī)療廢棄物管理制度
- 上海大學(xué)通信學(xué)院復(fù)試專業(yè)課英語
- 企業(yè)管理基礎(chǔ)知到智慧樹章節(jié)測試課后答案2024年秋山東經(jīng)貿(mào)職業(yè)學(xué)院
- 清明節(jié)傳統(tǒng)文化知識主題班會(huì)184
- UL987標(biāo)準(zhǔn)中文版-2019固定和固定電動(dòng)工具第八版
- 自考《英語二》高等教育自學(xué)考試試卷與參考答案(2025年)
- 2024年河北高中學(xué)業(yè)合格性考試歷史試題(含答案)
評論
0/150
提交評論