版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
單片微機原理及應用機械工程系機電一體化實驗室授課教師:梁蔓安電話論單片機的概念:
發(fā)展:三類單片機實物微芯公司的3類單片機玩具小車的單片機系統(tǒng)直流伺服電機的單片機控制第1章基本概念電子計算機廣泛應用的原因(1)高速度(2)具有記憶功能(3)具有邏輯判斷功能(4)高精度,高可靠性計算機基本結(jié)構(gòu)1、結(jié)構(gòu)如圖P5圖1-1,四部分:(1)CPU(2)存儲器(3)外圍設備(4)接口2、概念:主機,外圍設備,CPU,字長微型計算機硬件結(jié)構(gòu)1、結(jié)構(gòu)如圖P5圖1-2,由以下組成:微處理芯片存儲器芯片
I/O接口電路2、芯片之間用總線連接微處理器由以下組成:
算術(shù)邏輯部件,工作寄存器,控制部件。存儲器有許多存儲單元組成,如圖P6圖1-3。
在訪問(讀或?qū)懀┐鎯ζ鲿r,為明確所要訪問的存儲器單元,需要給每個存儲器單元一個編號,即為地址。輸入輸出(I/O)接口電路
接口的作用:P6總線概念;P6
圖1-4
總線沖突;三態(tài)門緩沖器圖1-5,1-6
地址,數(shù)據(jù),控制總線微型計算機軟件計算機要實現(xiàn)自動控制,除了硬件外,還需將控制想法、邏輯、算法,以軟件的形式送入微型計算機。軟件由各種程序組成,而程序是由一條條指令組成。指令、程序的概念語言:一種操作人員與計算機交流的方式。機器語言、匯編語言、高級語言8952單片機的C程序程序地址機器語言匯編程序計算機中的數(shù)(1)進制、各進制數(shù)之間的轉(zhuǎn)換(2)代符號的數(shù)的表示(3)定點數(shù)、浮點數(shù)(4)ASCII碼參考P365附錄ABCD碼BCD碼(BinaryCodedDecimal)二進制代碼表示的十進制數(shù)。例:求十進制數(shù)876的BCD碼[876]BCD=100001110110運算器由ALU、A、TR、F組成參考P22
圖1-14其中ALU、A是主要部件,各自作用是……控制器工作寄存器程序計數(shù)器PC
(ProgramCounter)概念:復位//單片機復位后,PC=0。程序計數(shù)器作用:記錄下一條將要執(zhí)行的程序指令的地址,起著管理程序執(zhí)行次序的作用。程序的兩種執(zhí)行方式:順序、跳轉(zhuǎn)。程序計數(shù)器(PC)的復位、計數(shù)、直接置數(shù)計算機指令執(zhí)行過程
復位取指令PC+1執(zhí)行指令存儲器只有將所需要的程序和數(shù)據(jù)存入存儲器,計算機才能夠脫離人的直接干預自動工作。存儲器的分類:ROM程序存儲器
RAM
數(shù)據(jù)存儲器存儲器的讀和寫(訪問)P26圖1-16,1-18單片機程序燒寫器(編程器)堆棧(1)概念(2)作用(3)概念:斷點地址、現(xiàn)場、現(xiàn)場保護和恢復(4)入棧、出棧、堆棧指針輸入輸出接口(1)作用:1、2、3、4、5、6(2)分組后的I/O接口稱為端口(PORT)(3)端口的地址(4)數(shù)據(jù)傳送的方式:1)無條件傳送2)查詢傳送3)中斷傳送(5)中斷系統(tǒng)
1)用途:數(shù)據(jù)傳送、故障緊急處理、人機交互
2)特點:
3)中斷的過程
4)中斷的優(yōu)先級5)CPU對中斷的響應后的自動執(zhí)行工作第2章MCS-51硬件結(jié)構(gòu)MCS-51的主要功能(1)主要功能參考P39
(2)內(nèi)部結(jié)構(gòu)框圖參考P40外部引腳說明(1)工作電源:VCC、VSS(2)復位信號/后備電源輸入端:RST/VPD
輸入10ms以上高電平脈沖,單片機復位。
VPD使用后備電源,可實現(xiàn)掉電保護。復位方法: 1)上電復位 2)外部信號復位單片機RSTK+5V200Ω1K30μF(3)外接晶體振蕩器:XTAL1,XTAL2
晶體振蕩器頻率范圍要求在1.2MHz~12MHz之間。(4)I/O端口功能:4個8位并行I/O端口P0~P3
XTAL1
單片機
XTAL2(5)控制線:
ALE:訪問外部存儲器時,地址鎖存允許信號端
PSEN:外部程序存儲器讀選通信號端
EA/VPP:程序存儲器選擇信號端/編程電源輸入端微處理器(1)運算器
ALU(算術(shù)邏輯單元)
A(累加器)
PSW(程序狀態(tài)字或狀態(tài)寄存器F)B(B寄存器)(2)控制器(3)振蕩器(頻率中:K=103,M=106)(4)CPU時序(參見P45圖2-5)
時鐘周期(振蕩器2分頻)
機器周期(6個時鐘周期)指令周期(一條指令所需的機器周期數(shù))
X字節(jié)Y周期指令:表示這個指令占用ROM的長度是X字節(jié);所耗執(zhí)行時間是Y個機器周期。
1s=103ms=106us=109ns存儲器MCS-51的程序與數(shù)據(jù)分為兩個獨立存儲器邏輯空間,分開編址。(稱為哈佛結(jié)構(gòu))51子系列和52子系列的存儲器容量區(qū)別:51子系列:4K的ROM
128字節(jié)的用戶RAM+128字節(jié)的SFR(特殊功能寄存器)52子系列:8K的ROM
256字節(jié)的用戶RAM+128字節(jié)的SFR(特殊功能寄存器)
用戶RAM:其存放內(nèi)容的意義可由用戶自己定義。SFR(特殊功能寄存器):存放內(nèi)容有特殊意義,參見P50表2-7。程序存儲器1、片內(nèi)程序存儲器4K或8K。2、程序存儲器擴展后最大的尋址空間:64K。(因為PC是16位的計數(shù)器,最大可指向的地址是216=64K)3、外部電路讓EA引角為高電平時,復位后先執(zhí)行片內(nèi)ROM中的程序。地址超過0FFFH
或1FFFH后才去自動轉(zhuǎn)去執(zhí)行片外ROM的程序。(參考P46圖2-6)外部電路讓EA引角為低電平時,不管有無片內(nèi)ROM,復位后都只執(zhí)行片外的ROM內(nèi)的程序。(參考P46圖2-6)4、7個特殊地址單元地址:0000H:復位后PC=0000H,即:計算機系統(tǒng)復位后將從地址0000H處開始執(zhí)行程序。
6個中斷入口地址(或稱:中斷向量)參見P47
表2-45、ROM除了可以存放程序,還可以用來存儲程序中用到的常量或常量表格。數(shù)據(jù)存儲器1、51子系列的片內(nèi)數(shù)據(jù)存儲器具有
128字節(jié)的用戶RAM+128字節(jié)的SFR
它們的地址不重疊。(參見P46圖2-6)2、52子系列的片內(nèi)數(shù)據(jù)存儲器具有
256字節(jié)的用戶RAM+128字節(jié)的SFR
它們的部分地址重疊。(參見P47圖2-7)對重疊部分地址的訪問由于使用的指令不同,不會引起混亂。對SFR的訪問使用直接尋址:例如:MOVA,80H(P0)
將地址為80H的P0端口內(nèi)容送入A。對與SFR地址重疊的用戶RAM的訪問使用間接尋址的方式:例如:MOVR1,#80H
MOVA,@R1
將地址為80H的用戶RAM的內(nèi)容送入A。3、數(shù)據(jù)存儲器擴展后最大的尋址空間:64K。(因為數(shù)據(jù)指針積存器DPTR是16位,最大可指向的地址是216=64K)
訪問片內(nèi)的RAM使用MOV指令;訪問片外的RAM使用MOVX指令;
訪問ROM中的常量和常量表格使用MOVC指令。4、片內(nèi)數(shù)據(jù)存儲器(1)工作寄存器地址:00H~1FH,32個字節(jié)。分為4組,每組8個字節(jié),分別為:R0,……,R7。
任一時刻只有一組工作寄存器工作,可通過PSW
中的RS0、RS1選擇當前工作的寄存器組。(2)位尋址區(qū)地址:20H~2FH,16個字節(jié)。其中每一位都有各自的“位地址”,如圖2-8。在位尋址指令中使用。如:
SETB07H;
將RAM20H單元的D7位置1,而該單元其它位不變。常用于存放邏輯型變量。(3)數(shù)據(jù)緩沖區(qū)地址:30H~7FH,80個字節(jié)。其用途完全有編程人員決定。由于工作寄存器區(qū)、位尋址區(qū)和數(shù)據(jù)緩沖區(qū)統(tǒng)一編址,因此工作寄存器、位尋址單元也可以當成數(shù)據(jù)緩沖單元一樣使用。例如:MOVA,30H;;將數(shù)據(jù)緩沖區(qū)30H單元的內(nèi)容放入A。MOVA,20H;
;將位尋址區(qū)20H單元的內(nèi)容放入A。MOVA,00H;
;將工作寄存器區(qū)00H單元的內(nèi)容放入A。(4)堆棧存放用戶RAM中有一部分區(qū)域可用做堆棧。但堆棧的棧底地址和大小并不固定。SFR中的SP用于存放棧頂?shù)牡刂贰7Q為棧頂指針。單片機復位后,SP默認為07H,將從08H單元開始存放堆棧信息。復位后初始化程序中可以將SP設置為2FH之后,以避免和工作寄存器沖突。(5)特殊功能寄存器SFR專門用于控制并行、串行I/O,定時器/計數(shù)器,中斷等功能模塊,不能移做它用。與用戶RAM統(tǒng)一編址,既可以直接尋址,也可位尋址。
MOV8AH,A;將A的內(nèi)容放入TL0中。
SETB8CH;將TR0置1。單片機能夠控制外部設備(電機的開關、速度等;電磁閥、液壓閥),或者將外界的信息(速度,壓力)采集單片機內(nèi)。這些功能除了需要有I/O接口電路,還依賴于單片機內(nèi)部的一些功能模塊。例如:使用并行I/O口顯示兩位BCD編碼的數(shù)字;
串行口完成與其它設備之間的通訊;定時器/計數(shù)器對風扇、洗衣機的定時;中斷響應緊急事故。端口P0RXD(10)TXD(11)并行I/O口、串行口、定時器/計數(shù)器、中斷功能的使用實際上就是在程序中使用各種指令對各自對應的SFR進行操作。例如:
MOVP0,#01101000B;讓上圖中的數(shù)碼管顯示“68”;
MOVSBUF,A;將A中的內(nèi)容通過串口向外發(fā)送;
MOVTL0,#55HMOVTH0,#0AAH;設定定時器0的時長
SETBTR0;定時器0開始計時外部設備可以通過并行I/O口、串行口、定時器/計數(shù)器、中斷等功能由SFR來控制;用戶RAM可以由編程人員決定存放用戶自己的變量;控制程序?qū)嶋H上就是如何運用各種指令操作各種SFR和用戶RAM以實現(xiàn)各種控制功能。第3章指令系統(tǒng)尋址方式1、立即尋址以常數(shù)(立即數(shù))作為操作數(shù)直接跟在操作碼的后邊,不需要存儲器存取。如:MOVA,#30H;直接將數(shù)30H放入A中。注意:在指令中為區(qū)別地址和立即數(shù),應在立即數(shù)前用“#”標出。2、寄存器尋址尋址某個工作寄存器,從該寄存器中讀取或存放操作數(shù),以完成指令規(guī)定的操作。例如:ADDA,R2;從R2中讀取操作數(shù),和A相加后將結(jié)果存入A3、寄存器間接尋址定義:參見P80例如:MOV40H,#20H;將數(shù)20H放入RAM的40H單元
MOVR1,#40H
;將數(shù)40H放入R1
MOVA,@R1
;以R1存放的數(shù)40H為地址,將40H地址單元中的數(shù)20H放入A。注意:只有R0和R1可以間接尋址;且MOV用于訪問片內(nèi)RAM,MOVX訪問片外RAM。4、直接尋址指令中直接給出操作數(shù)所在的存儲單元地址,以供尋址取數(shù)或存放。對于51子系列,片內(nèi)的128字節(jié)的用戶RAM+128字節(jié)的SFR都是可以直接尋址的。對于52子系列,片內(nèi)的前128字節(jié)的用戶RAM(00H~7FH)+128字節(jié)的SFR都是可以直接尋址的。后128字節(jié)的用戶RAM(80H~0FFH)只有寄存器間接尋址才可訪問。5、基址寄存器+變址寄存器間接尋址以PC指針或DPTR作為基地址寄存器,累加器A作為變址寄存器,把它們的內(nèi)容之和作為程序存儲器的地址,對這個地址訪問。這種尋址方式用于訪問程序存儲器??煞奖愕挠糜诹斜淼牟樵?。
例如若訪問程序存儲器單元0403H地址中的內(nèi)容:
MOVDPL,#00H;MOVDPH,#04H;MOVA,#03H;MOVCA,@A+DPTR6、相對尋址專門用于程序轉(zhuǎn)移指令中。用法請參見“程序轉(zhuǎn)移指令”章節(jié)數(shù)據(jù)傳送類指令這類指令用于在存儲單元間傳送數(shù)據(jù),有29條。是數(shù)量最多,也是使用最頻繁的一類指令。
(1)以累加器為一方(2)不以累加器為一方(3)用立即數(shù)置數(shù)(4)訪問片外RAM(5)基址寄存器+變址寄存器間接尋址(6)交換指令(7)進出棧指令各指令所占用的ROM空間和指令周期參見P87表3-1算術(shù)操作指令進行算術(shù)運算操作,共24條。需要注意這累指令與PSW中各標志位之間的相互影響。C位:判斷兩操作數(shù)做無符加/減法運算時是存在進位/借位(即結(jié)果溢出>256或<0)。OV位:判斷兩操作數(shù)做有符加/減法運算時是存在結(jié)果溢出>127或<-128邏輯操作指令程序轉(zhuǎn)移類指令位操作類指令匯編程序的格式和偽指令格式:標號:操作碼操作數(shù)1,操作數(shù)2;注解偽指令:
ORGENDDBDWDSbit第2章并行輸入輸出口(I/O)MCS-51有32根輸入/輸出線,組成4個8位并行輸入輸出接口,分別稱為P0,P1,P2,P3。既可以并行8位輸入輸出,也可按位使用,即:每根線都可以獨立做輸入/輸出1、P1口(1)結(jié)構(gòu)如圖P59圖2-15(2)功能只能作為通用輸入/輸出口輸入、輸出、端口操作3種工作方式。例如:MOVP1,#data;輸出方式
MOVA,P1;輸入方式
ANLP1,A;端口操作
先讀后寫注意:用做輸入前,必須先用輸出指令置Q=1,使V1截止。所以P1口稱為準雙向接口。單片機復位后,P1口狀態(tài)為高電平,可直接用于輸入。端口操作時,讀的是端口鎖存器Q端的數(shù)據(jù),而非直接讀端口。(3)負載能力做輸出時,可以驅(qū)動4個TTL負載,做輸入時,由于有內(nèi)部上拉電阻,所以無須外部接上拉電阻P1.1,P1.0具有第二功能:計數(shù)/定時器T2的脈沖輸入端。2、P2口用途:通用I/O接口時,使用和P1口相同。高8位地址總線。高8位地址總線:在訪問片外ROM或RAM時,提供高8位地址。即:片外RAM時,DPTR的高字節(jié);片外ROM時,PC的高字節(jié)。
P0口提供低8位地址。3、P3口用途:通用I/O接口時,使用和P1口相同。
第二功能引腳:RXD,TXD,INT等時,信號直接進入芯片內(nèi)部。4、P0口(1)結(jié)構(gòu)如圖P61圖2-18沒有內(nèi)部上拉電阻(2)功能作為通用輸入/輸出口,需要外接上拉電阻。
在訪問片外ROM或RAM時,作為地址/數(shù)據(jù)分時復用總線。
注意:
(1)作為地址/數(shù)據(jù)分時復用總線時,信號經(jīng)V1,V2送到引腳。
V1導通、V2截止為低電平;
V1截止、V2導通為高電平。(2)通用輸入/輸出口時,V2一直截止,由于沒有內(nèi)部上拉電阻,所以必須外加上拉電阻。定時器/計數(shù)器51子系列有2個定時器(T)/計數(shù)器(C);52子系列有3個定時器(T)/計數(shù)器(C);分別編號稱為T0、T1、T2。做定時器時,對內(nèi)部機器周期脈沖計數(shù);做計數(shù)器時,分別對P3.4(T0)、P3.5(T1)、P1.0(T2)引腳上外部輸入的脈沖進行計數(shù)。+1計數(shù)器溢出中斷脈沖控制開關控制寄存器(控制字)TMOD(地址:89H)T1T01)功能選擇位C/T:=0,定時功能,計數(shù)內(nèi)部機器周期脈沖;=1,計數(shù)功能,計數(shù)引腳T0(T1)輸入的負脈沖。2)方式選擇位M1、M0:3)門控方式選擇位GATE
計數(shù)器T0(T1)是否工作受引腳INT0(INT1)控制。
確定定時器工作方式指令:
MOVTMOD,#方式字例:設T0用方式2非門控定時,T1用方式1門控計數(shù)。
MOVTMOD,#0D2H;11010010B方式0:13位定時/計數(shù)器。THx8位和TLx低5位組成13位的加1計數(shù)器。方式1:16位定時/計數(shù)器。THx的8位和TLx的8位組成16位加1計數(shù)器。最大計數(shù)脈沖個數(shù):1~65536(216)定時時長范圍:(晶振12MHz即T=1s):1s~65536s=65.54ms方式2:自動重載,8位加1定時器/計數(shù)器;用于需要重復定時和計數(shù)的場合。
THx存放自動重載的8位;TLx為8位加1計數(shù)器,最大計數(shù)脈沖個數(shù):256(28)定時時長范圍:(晶振12MHz時T=1s):256s
方式3:
T0分成2個獨立的8位定時器:
TL0定時器/計數(shù)器和TH0定時器
TL0占用T0控制位:C/T,TR0,GATE,TF0;TH0占用T1控制位:TR1,TF1。
此時,T1不能使用方式3工作;并且由于TR1和TF1被TH0定時器占用,所以不能申請溢出中斷,只能用于串口的波特率發(fā)生器??刂萍拇嫫鳎刂谱郑㏕CON(地址:89H)TRx:TRx=0時停止計數(shù)器/定時器工作;
TRx=1時計數(shù)器/定時器工作;由軟件(程序)置1或清0。TFx:計數(shù)器/定時器溢出時由硬件自動置1;若中斷允許,申請Tx的溢出中斷,中斷響應后硬件自動將TFx清0。若中斷不允許,TFx可以用軟件查詢,也可用軟件清0
計數(shù)功能時:
X=2n-計數(shù)值n:8/13/16
定時功能:
X=2n-t/T=2n–t*晶振頻率/12t:定時時長(秒)T:機器周期 =12/晶振頻率如:晶振為12MHz時,T=12/12MHz=12/(12×106)計數(shù)器THx,TLx初始值X的確定:例:由P1.0輸出方波信號,周期為2ms,
設晶振頻率為12MHz。2ms解:每隔1ms改變一次P1.0的輸出狀態(tài),即形成方波,用T0非門控方式1定時。
計數(shù)器初始值:X=216-t/T=216–(1/1000)/10-6=65536-1000=64536=FC18H
ORG 0000H AJMP MAIN ORG 000BH
;T0中斷硬件入口地址
AJMP PT0INT
;跳到中斷服務程序
ORG 0030H
MAIN: MOV TMOD,#01H;中斷方式
MOV TL0,#18H;計數(shù)初值
MOV TH0,#0FCH SETB EA;開放總中斷
SETB ET0
;開放T0中斷
SETB TR0;啟動定時器
HERE: SJMP HERE;等待中斷,相當于執(zhí)行;其它任務
PT0INT:MOV TL0,#18H
;中斷服務程序;置初值
MOV TH0,#0FCH CPL P1.0
;取反,產(chǎn)生方波
RETI;中斷返回例
P1.7驅(qū)動LED亮1秒滅1秒地閃爍,設時鐘頻率為12MHz。
長定時方法:增加一個軟件計數(shù)器(如R7),記錄中斷次數(shù),計滿n個中斷為1秒。ORG 0000H AJMP MAINORG 001BH
AJMP T1INTORG 0030HMAIN:MOVR7,#00H
MOVTMOD,#10H MOVTL1,#0F0H MOVTH1,#0D8HSETB EA SETB ET1 SETB TR1HERE:SJMPHERET1INT:MOVTL1,#0F0H MOVTH1,#0D8H INCR7CJNER7,#10,PENDMOVR7,#00HCPLP1.7PEND:RETI中斷系統(tǒng)1、中斷概念日常生活中的中斷與計算機中斷的比較:
某人看書 執(zhí)行主程序 日常事務電話鈴響 中斷信號如INT=0
中斷請求暫停看書
暫停執(zhí)行主程序中斷響應書中作記號當前PC入棧 保護斷點電話談話 執(zhí)行中斷程序 中斷服務繼續(xù)看書 返回主程序 中斷返回日常事務程序中斷服務程序2、中斷的定義所謂“中斷”,是指CPU執(zhí)行正常程序時,系統(tǒng)中出現(xiàn)特殊請求,CPU暫時中止當前的程序,轉(zhuǎn)去處理更緊急的事件,處理完畢后,CPU返回原程序的過程。3、與子程序的區(qū)別子程序是在預先安排好執(zhí)行順序中調(diào)用。;中斷是在隨機發(fā)生緊急的事件時調(diào)用。中斷申請標志位:
TF1、TF0、IE1、IE0、RI、TI
用于標示各中斷源當前是否請求中斷=1,有中斷請求;=0,無中斷請求。CPU響應中斷后,該中斷標志自動清零。TI,RI標志必須軟件清零。
外部中斷觸發(fā)方式選擇位:
TCON中:IT0、IT1位
=1:負邊沿觸發(fā)中斷請求;=0:低電平觸發(fā)中斷請求。中斷允許寄存器:IE(地址:0A8H)=1;允許中斷;=0;不允許中斷。例:允許CPU響應INT0的中斷請求
SETBEX0 SETBEA 中斷優(yōu)先寄存器:IP(地址:0B8H)MCS51只有2級優(yōu)先級:=1為高優(yōu)先級;=0為低優(yōu)先級。同一優(yōu)先級別按內(nèi)部查詢順序排列優(yōu)先級:高INT0、T0、INT1、T1、S、T2
低。MCS-51中斷系統(tǒng)內(nèi)部結(jié)構(gòu)各中斷源中斷服務程序的入口地址某個中斷請求被響應后,硬件將執(zhí)行下列操作:(1)保存斷點,即:PC入棧(2)清相應的中斷申請標志(3)相應的中斷入口地址送入PC現(xiàn)場保護工作應該在各中斷程序中完成。中斷程序的退出
必須使用RETI指令退出中斷程序。對于串口中斷,RI、TI必須在中斷程序中清零。退出中斷前要進行現(xiàn)場恢復。對于電平觸發(fā)的外部中斷,由于CPU沒有對
INT0,INT1引腳的控制功能,為了防止重復進入外部中斷程序,需要外部電路撤消外部中斷請求。(例如:P73圖2-29)要求每次按動按鍵,使外接發(fā)光二極管LED改變一次亮滅狀態(tài)。解:INT0輸入按鍵信號,P1.0輸出改變LED狀態(tài)。跳變觸發(fā):每次跳變引起一次中斷請求
ORG 0000H AJMPMAIN ORG 0003H ;中斷入口
AJMP PINT0 ORG 0100H ;主程序
MAIN:SETB EA ;開總允許開關
SETB EX0 ;開INT0中斷
SETB IT0;負跳變觸發(fā)
Here:SJMP Here;自身循環(huán)
ORG 0200H ;中斷服務程序
PINT0:CPLP1.0 ;改變LED RETI ;返回主程序單片機INT0P1.01+5V1.軟件等待按鍵釋放。2.硬件清除中斷信號。電平觸發(fā):避免一次按鍵引起多次中斷響應。單片機INT0P1.01+5V
ORG 0000H AJMPMAIN ORG 0003H ;中斷入口
AJMP PINT0 ORG 0100H ;主程序
MAIN:SETB EA ;開總允許開關
SETB EX0 ;開INT0中斷
CLR IT0;負跳變觸發(fā)
Here:SJMP Here;自身循環(huán)
ORG 0200H ;中斷服務程序
PINT0:CPLP1.0 ;改變LED
WAIT:JNBP3.2,WAIT;等按鍵釋放
RETI ;返回主程序串行輸入/輸出接口基本概念:并行通信/串行通信串行通信中的:單工,雙工,半雙工串行通信中的:異步通訊方式,參見P63圖2-20同步通訊方式,參見P63圖2-21
波特率(BaudRate)異步通訊雙方的兩項約定(1)字符格式規(guī)定(一幀):起始位、數(shù)據(jù)位,校驗位、停止位。(2)波特率(位/秒)對傳送速率的規(guī)定例:要求每秒傳送120個字符,每幀為10位解:Baud=120*10=1200bps
MCS-51串行I/O接口的功能:具有1個全雙工串行接口,可同時進行發(fā)送和接收。串行接口輸入/輸出引腳:TXD(P3.1)、RXD(P3.0)。
4種工作方式:參見P64表2-11方式0:移位寄存器工作方式用于并行I/O的擴展。方式1:8位通用異步接受/發(fā)送器用于雙機通訊。方式2、3:9位通用異步接受/發(fā)送器用于多機通訊。串行接口控制1、數(shù)據(jù)緩沖器SBUF
發(fā)送SBUF和接收SBUF共用一個地址99H。
(1)發(fā)送SBUF存放待發(fā)送的8位數(shù)據(jù),寫入SBUF即自動啟動發(fā)送。 發(fā)送指令: MOV SBUF,A(2)接收SBUF存放已接收成功的8位數(shù)據(jù),供CPU讀取。讀。接收指令:MOVA,SBUF2、串行口控制/狀態(tài)寄存器SCON(98H)SM0,SM1:選擇串行口4種工作方式。SM2:多機控制位,用于多機通訊。REN:允許接收控制位,REN=1,允許接收;REN=0,禁止接收。TB8:發(fā)送的第9位數(shù)據(jù)位,可用作校驗位和地址/數(shù)據(jù)標識位RB8:接收的第9位數(shù)據(jù)位或停止位TI:
發(fā)送中斷標志,發(fā)送一幀結(jié)束,TI=1,必須軟件清零RI:
接收中斷標志,接收一幀結(jié)束,RI=1,必須軟件清零3、節(jié)電控制寄存器PCONSMOD(PCON.7):波特率加倍控制位。
SMOD=1,波特率加倍,
SMOD=0,則不加倍。1、方式0:同步移位寄存器方式。用于擴展并行I/O接口。(1)一幀8位,無起始位和停止位。(2)RXD:數(shù)據(jù)輸入/輸出端。
TXD:同步脈沖輸出端,每個脈沖對應一個數(shù)據(jù)位。(3)固定波特率B=fosc/12
如:fosc=12MHz時,
Baud=1MHz,每位數(shù)據(jù)占1s。
(4)發(fā)送過程:寫入SBUF,啟動發(fā)送,一幀發(fā)送結(jié)束,TI=1。
接收過程:REN=1且RI=0,啟動接收,一幀接收完畢,RI=1。串行接口的工作方式
發(fā)送時序?qū)懭隨BUFRXD輸出TXDTID0D1D2D3D4D5D6D7寫REN=1RI=0RXD輸入RI接收時序(a)(b)數(shù)據(jù)從RXD(P3.0)引腳串行輸出,低位在先,高位在后;TXD(P3.1)引腳輸出移位脈沖,其頻率為foc/12;發(fā)送完畢后,中斷標志位TI為1。如要發(fā)送數(shù)據(jù),如下所示:
MOVSCON,#00H;串行口方式0
MOVSBUF,A;將數(shù)據(jù)送出
JNBTI,$;等待數(shù)據(jù)發(fā)送完畢移位寄存器方式舉例2、方式1:8位數(shù)據(jù)異步通訊方式。(1)一幀10位:1個起始位(0)、8位數(shù)據(jù)位、1個停止位(1)。(2)RXD:接收數(shù)據(jù)端。TXD:發(fā)送數(shù)據(jù)端。(3)波特率:用T1作為波特率發(fā)生器,
B=(2SMOD/32)×T1溢出率。(4)發(fā)送:寫入SBUF后立即自動啟動發(fā)送,一幀發(fā)送結(jié)束,硬件將TI=1。
接收:REN=1,允許接收。接收完一幀,若RI=0,將接收數(shù)據(jù)裝入SBUF,
并使RI=1;
否則丟棄接收數(shù)據(jù),不置位RI。一幀為11位:9位數(shù)據(jù)位,1個起始位(0),1個停止位(1)。第9位數(shù)據(jù)位在TB8/RB8中,常用作校驗位和多機通訊標識位。(2)RXD:接收數(shù)據(jù)端,TXD:發(fā)送數(shù)據(jù)端。(3)波特率:方式2:B=(2SMOD/64)×fosc。
方式3:B=(2SMOD/32)×T1溢出率。2、方式1:9位數(shù)據(jù)異步通訊方式。(4)發(fā)送:先裝入TB8,寫入SBUF并啟動發(fā)送,發(fā)送結(jié)束,硬件自動將TI=1。(5)接收:若REN=1,則允許接收。接收完一幀,若RI=0且第9位為1,將接收數(shù)據(jù)裝入接收SBUF,第9位裝入RB8,使
RI=1;若RI=1則丟棄接收數(shù)據(jù)??勺儾ㄌ芈蕰r,用T1作波特率發(fā)生器。 波特率B=(2SMOD/32)×T1溢出率溢出時間:t=(2n-X)T=(2n-X)×12/fosc
溢出率=1/t=fosc/[12×(2n-X)] T:機器周期;X:定時器/計數(shù)器存儲器初始值。
波特率B=(2SMOD/32)×fosc/[12×(28-X)]
T1做波特率發(fā)生器時,一般選擇工作方式2(自動重載的8位定時器)。T1選方式1用于低波特率,需考慮T1重裝時間對溢出時間的影響。串行口初始化編程格式:
MOVSCON,#控制狀態(tài)字;寫方式字且TI=RI=0(MOVPCON,#80H) ;波特率加倍(
MOVTMOD,#20H) ;T1作波特率發(fā)生器(
MOVTH1,#X);選定波特率(
MOVTL1,#X)(SETBTR1)
;T1開始計時(SETBEA)
;開串行口中斷(
SETBES)發(fā)送程序(查詢方式):;待發(fā)送的數(shù)據(jù)起始地址存放在R0中。SEND: MOVA,@R0 ;取數(shù)據(jù)
MOV SBUF,A ;發(fā)送一個字符WAIT: JBC TI,NEXT ;等待發(fā)送結(jié)束
SJMP WAITNEXT: INC R0 ;準備下一次發(fā)送
SJMP SEND
ORG 0023H
;串行口中斷入口
AJMPSINTMAIN:
;初始化編程……TRAM: MOV A,@R0
;取數(shù)據(jù)
MOV SBUF,A
;發(fā)送第一個字符……;執(zhí)行其它任務
SINT:CLRTI ;中斷服務程序
INC R0 MOV A,@R0 ;取數(shù)據(jù)
MOV SBUF,A ;發(fā)送下一個字符
RETI發(fā)送程序中斷方式:REN=1、RI=0等待接收,當RI=1,從SBUF讀取數(shù)據(jù)。查詢方式:
WAIT: JBC RI,NEXT ;查詢等待
SJMP WAITNEXT: MOV A,SBUF ;讀取接收數(shù)據(jù)
MOV @R0,A ;保存數(shù)據(jù)
INC R0 ;準備下一次接收
SJMP WAIT接收程序:異步通訊程序舉例
1.發(fā)送程序:將片內(nèi)RAM50H起始單元的16個數(shù)由串
行口發(fā)送。要求發(fā)送波特率為系統(tǒng)時鐘
的32分頻,并進行奇偶校驗。MAIN:MOV SCON,#80H;串行口初始化
MOV PCON,#80H;波特率
SETB EA SETB ES ;開串行口中斷
MOV R0,#50H ;設數(shù)據(jù)指針
MOV R7,#10H ;數(shù)據(jù)長度LOOP: MOV A,@R0 ;取一個字符
MOV C,P ;加奇偶校驗
MOV TB8,C MOV SBUF,A ;啟動一次發(fā)送HERE: SJMP HERE ;CPU執(zhí)行其它任務
ORG 0023H ;串行口中斷入口 AJMP TRANI
TRANI: PUSH A ;保護現(xiàn)場
PUSH PSW CLR TI ;清發(fā)送結(jié)束標志
DJNZ R7,NEXT ;是否發(fā)送完?
CLR ES ;發(fā)送完,關閉串行口中斷 SJMP TEND NEXT: INC R0 ;未發(fā)送完,修改指針
MOV A,@R0 ;取下一個字符
MOV C,P ;加奇偶校驗
MOV TB8,C MOV SBUF,A ;發(fā)送一個字符
POP PSW ;恢復現(xiàn)場
POP A TEND: RETI ;中斷返回2.接收程序:串行輸入16個字符,存入片內(nèi)RAM的50H起
始單元,串行口波特率為2400(設晶振為11.0592MHz)。RECS: MOV SCON,#50H;串行口方式1允許接收 MOV TMOD,#20H;T1方式2定時 MOV TL1,#0F4H ;寫入T1時間常數(shù) MOV TH1,#0F4H SETBTR1 ;啟動T1 MOV R0,#50H ;設數(shù)據(jù)指針 MOV R7,#10H ;接收數(shù)據(jù)長度 WAIT: JBC RI,NEXT ;等待串行口接收 SJMPWAIT NEXT: MOV A,SBUF ;讀取接收字符 MOV @R0,A ;保存一個字符
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東科貿(mào)職業(yè)學院《生理藥理學》2023-2024學年第一學期期末試卷
- 廣東警官學院《文學批評方法》2023-2024學年第一學期期末試卷
- 廣東江門中醫(yī)藥職業(yè)學院《智能運輸系統(tǒng)概論》2023-2024學年第一學期期末試卷
- 廣東技術(shù)師范大學《金融企業(yè)會計》2023-2024學年第一學期期末試卷
- 廣東海洋大學《機械工程技術(shù)交流》2023-2024學年第一學期期末試卷
- 廣東工商職業(yè)技術(shù)大學《機器學習原理》2023-2024學年第一學期期末試卷
- 廣東第二師范學院《生物藥物制劑技術(shù)》2023-2024學年第一學期期末試卷
- 廣東潮州衛(wèi)生健康職業(yè)學院《城市綠地規(guī)劃》2023-2024學年第一學期期末試卷
- 廣東財經(jīng)大學《建筑設計(Ⅱ)》2023-2024學年第一學期期末試卷
- 《國際腫瘤護理進展》課件
- GB/T 22638.2-2016鋁箔試驗方法第2部分:針孔的檢測
- GB/T 13275-1991一般用途離心通風機技術(shù)條件
- 千年菩提路解說詞
- 田中靖久頸椎病癥狀量表20分法
- 配氣機構(gòu)的設計
- 鹿茸血與養(yǎng)生課件
- 軟件開發(fā)-項目-監(jiān)理細則
- 《高一學期期末考試動員》主題班會課件
- 小升初專題工程問題與行程問題
- 低壓非居民用電登記表格模板
- 高速鐵路混凝土外觀質(zhì)量修補專項方案(詳細版)
評論
0/150
提交評論