單片機并行接口PIO72定時計數(shù)器電路_第1頁
單片機并行接口PIO72定時計數(shù)器電路_第2頁
單片機并行接口PIO72定時計數(shù)器電路_第3頁
單片機并行接口PIO72定時計數(shù)器電路_第4頁
單片機并行接口PIO72定時計數(shù)器電路_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

7-1 單片機并行接口PIOPIO:并行I/O接口用于微型機與外部設(shè)備之間并行傳送數(shù)據(jù)。7-1-1 MCS-51的并行接口4個8位雙向并行IO接口:P0.0~P0.7、P1.0~P1.7、P2.0~P2.7、P3.0~P3.7。均為多功能I/O接口,CPU按當(dāng)前操作自動進(jìn)行功能切換。片內(nèi)接口寄存器在SFR中的映象地址:

1.I/O數(shù)據(jù)鎖存器:P0、P1、P2、P3、SBUF

2.I/O控制/狀態(tài)寄存器:

IE、IP、TCON、TMOD、SCON、PCON一.PIO接口內(nèi)部結(jié)構(gòu)輸出鎖存器、輸出驅(qū)動器、輸入緩沖器及多路功能切換電路。1)輸出操作:輸出數(shù)據(jù)經(jīng)過內(nèi)部總線暫存到輸出鎖存器中,經(jīng)過輸出驅(qū)動器送到I/O引腳上。輸出鎖存器的內(nèi)容可讀入修改。2)輸入操作:I/O引腳輸入數(shù)據(jù)經(jīng)過輸入緩沖器送到內(nèi)部總線上。二.PIO接口的三種操作1.輸出鎖存:輸出將使數(shù)據(jù)寫入輸出鎖存器。輸出指令: MOV P1,A MOV P1.0,C2.輸入三態(tài):輸入從I/O引腳上輸入信號,讀信號打開,引腳信號通過下三態(tài)門進(jìn)入內(nèi)部總線。為保證可靠輸入,先寫入“1”。

MOV P1,#0FFH ;使輸出驅(qū)動器截止

MOV A,P1 ;輸入P0~P3的復(fù)位狀態(tài)均為FFH,自動處于輸入狀態(tài)。3.讀-修改-寫:修改輸出鎖存器的內(nèi)容。鎖存器中的數(shù)據(jù)通過上三態(tài)門進(jìn)入內(nèi)部總線,修改后再寫入到鎖存器中。讀-修改-寫指令:PIO為目的操作數(shù)的指令 ANLP1,A

三.PIO的使用

1.P0口:并行雙向接口或系統(tǒng)總線DB0~7/AB0~72.P1口:稱為用戶I/O接口。對片內(nèi)EPROM編程時,用作EPROM低8位地址信號線。

四.接口負(fù)載能力

P0驅(qū)動8個TTL電路,P1,P2,P3可驅(qū)動4個TTL電路3.P2口:雙向I/O接口或高8位地址總線AB8~15對讀寫片外存儲器后,引腳仍恢復(fù)輸出鎖存器的內(nèi)容。可用于讀寫片外數(shù)據(jù)存儲器:

MOV P2,#20H MOV R0,#00 MOVXA,@R04.P3口:雙向并行接口和第二功能: 串行接口引腳:TXD、RXD

中斷輸入引腳:INT0、INT1

定時器輸入引腳:T0、T1

讀寫控制線:RD、WRP1、P2和P3為準(zhǔn)雙向口。五.

應(yīng)用舉例例:用4個發(fā)光二極管對應(yīng)顯示4個開關(guān)的開合狀態(tài)。 如P1.0合則P1.4亮。MCS-51P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.01.無條件傳送方式:指示燈立即反映開關(guān)狀態(tài)。 ORG0000H AJMPMAIN ORG0100HMAIN:ORL A,#0FH MOVP1,A MOVA,P1 SWAPA MOVP1,A SJMPMAIN2.中斷傳送方式:

先設(shè)好開關(guān)狀態(tài),然后發(fā)出中斷請求信號,改變指示燈亮滅狀態(tài)。 ORG 0000H AJMPMAIN ORG 0003H AJMPIOINT ORG 0100HMAIN:SETBIT0 SETBEX0 SETBEAHERE:SJMPHERE ORG 0500HIOINT:MOVA,#0FFH MOV P1,A MOV A,P1 SWAPA MOV P1,A RETIP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0INT0MCS-51K+5V7-2 定時/計數(shù)器電路CTC一.定時/計數(shù)器的應(yīng)用1.計數(shù)功能:生產(chǎn)線上產(chǎn)品計數(shù)。每個產(chǎn)品通過得到一個脈沖信號,計數(shù)器記錄脈沖個數(shù),當(dāng)計數(shù)值與設(shè)定值相等,啟動包裝機器。檢測轉(zhuǎn)速。電機轉(zhuǎn)動一圈發(fā)出一個脈沖,計數(shù)器記錄一秒時間內(nèi)脈沖個數(shù),顯示轉(zhuǎn)速。二.定時/計數(shù)器的工作原理定時/計數(shù)器中的核心部件為可預(yù)置初值計數(shù)器。預(yù)置初值后開始計數(shù),直至計數(shù)值歸0或產(chǎn)生溢出,可申請中斷。計數(shù)器有加1計數(shù)或減1計數(shù)兩種形式。K1K2可預(yù)置初值計數(shù)器中斷請求功能選擇啟動控制內(nèi)部時鐘脈沖(定時)外部輸入脈沖(計數(shù))溢出信號計數(shù)脈沖計數(shù)初值例:設(shè)CTC中為8位加1計數(shù)器。按要求選擇功能和初值。1.要求檢測到100個脈沖,發(fā)中斷請求,通知CPU。選計數(shù)功能,計數(shù)初值為156。2.要求定時每隔100

s時間,發(fā)一次中斷請求。設(shè)內(nèi)部時鐘周期1

s選定時功能,計數(shù)初值為156。2.定時功能:用于實時控制,定時采樣、定時啟動等。當(dāng)定時時間與設(shè)定值相等,執(zhí)行規(guī)定操作。7-2-1 MCS-51定時/計數(shù)器2個可獨立控制的16位定時器/計數(shù)器:T0、T1定時器初始化編程:1.功能選擇(定時/計數(shù)) 2.位數(shù)選擇(8/13/16位)3.啟動方式選擇(內(nèi)部啟動/外部啟動)4.啟動控制(啟動/停止)5.恢復(fù)初值方式(自動重裝/軟件重裝)一.定時器控制、狀態(tài)寄存器1.TMOD定時器方式寄存器(89H)1)功能選擇位C/T:=0,定時功能,計數(shù)內(nèi)部機器周期脈沖;=1,計數(shù)功能,計數(shù)引腳T0(T1)輸入的負(fù)脈沖。2)方式選擇位M1、M0:4種工作方式:13/16/8位3)門控方式選擇位GATE

:=0,非門控方式(內(nèi)部啟動):

TRx=1,啟動定時器工作;

TRx=0,停止定時器工作。=1,門控方式(外部啟動):TRx=1且引腳INTx=1才啟動。確定定時器工作方式指令:MOVTMOD,#方式字例:設(shè)T0用方式2非門控定時,T1用方式1門控計數(shù)。 MOV TMOD,#T1T02.TCON定時器控制/狀態(tài)寄存器1)啟動控制位TR0、TR1=0,停止定時器工作=1,啟動定時器工作例:啟動T0: SETB TR02)溢出中斷標(biāo)志位TF0、TF1定時器溢出使TFx=1,引起中斷請求,CPU響應(yīng)Tx中斷后,自動清0TFx。3.可預(yù)置初值的16位加1計數(shù)器TH0、TL0、TH1、TL1預(yù)置T0初值指令: MOV TH0,#XH

MOV TL0,#XL可用軟件檢測TFx,必須軟件清0。

WAIT:JBCTF0,NEXT;檢測T0是否溢出

SJMP WAIT ;未溢出,繼續(xù)檢測

NEXT:…

;溢出,TF0清0,處理溢出二.

定時器工作方式

由方式選擇位M1、M0設(shè)定1.方式013位定時/計數(shù)器。THx8位和TLx低5位組成13位加1計數(shù)器計數(shù)外部脈沖個數(shù):1~8192(213)定時時間(T=1

s):1

s~8.19ms2.方式116位定時/計數(shù)器。THx8位和TLx8位組成16位加1計數(shù)器計數(shù)外部脈沖個數(shù):1~65536(216)定時時間(T=1

s):1

s~65536×T=65.54ms3.

方式2自動恢復(fù)初值8位定時/計數(shù)器。TLx為8位加1計數(shù)器,THx為8位初值暫存器。用于需要重復(fù)定時和計數(shù)的場合。最大計數(shù)值:256(28)最大定時時間(T=1

s):256

s4.方式3T0分成2個8位定時器:TL0定時/計數(shù)器和TH0定時器TL0占用T0控制位:C/T,TR0,GATE;TH0占用T1控制位:TR1。T1不能使用方式3工作5.計算時間常數(shù)X(計算初值)計數(shù)功能:X=2n-計數(shù)值 n:8/13/16定時功能:X=2n-t/T t:定時時間、T:機器周期三.MCS-51定時器的應(yīng)用定時器初始化編程:使用定時器工作之前,先寫入控制寄存器,確定好定時器工作方式初始化編程格式:MOVTMOD,#方式字;選擇方式MOVTHx,#XH

;裝入Tx時間常數(shù)MOVTLx,#XL(SETBEA ) ;開Tx中斷(SETBETx )SETBTRx

;啟動Tx定時器1.按實際需要選擇定時/計數(shù)功能2.按時間或計數(shù)長度選擇方式3.計算時間常數(shù)4.溢出處理編程格式:1)查詢方式:先查詢定時器溢出標(biāo)志,再進(jìn)行溢出處理。

;定時器初始化

WAIT:JBC TFx,PT;檢測溢出標(biāo)志

SJMP WAIT PT: MOV THx,#XH;重裝時間常數(shù)

MOV TLx,#XL

;溢出處理

SJMP WAIT2)中斷方式:初始化后執(zhí)行其他任務(wù),中斷服務(wù)程序處理溢出。

ORG 0000H LJMP MAIN ORG 000BH(001BH);Tx中斷入口

LJMP PTS MAIN: …

;初始化后執(zhí)行其他程序

PTS: …

;溢出中斷服務(wù)程序

MOV THx,#XH

;重裝時間常數(shù)

MOV TLx,#XL RETI四.應(yīng)用舉例例:由P1.0輸出方波信號,周期為2ms,設(shè)fosc=12MHz。2ms解:每隔1ms改變一次P1.0的輸出狀態(tài)。用T0非門控方式1定時。計算時間常數(shù):X=216-t/T=216-1000/1=FC18H(1)查詢方式:

START: MOV TMOD,# MOV TL0,# MOV TH0,# SETB TR0 LOOP: JBC TF0,PTF0 SJMP LOOP PTF0: CPL P1.0 MOV TL0,# MOV TH0,# SJMP LOOP(2)中斷方式

ORG 0000H AJMP MAIN ORG 000BH AJMP PT0INT ORG 0100H

MAIN: MOV SP,#60H MOV TMOD,# MOV TL0,# MOV TH0,# SETB EA SETB ET0 SETB TR0 HERE: SJMP HERE PT0INT:CPL P1.0 MOV TL0,# MOV TH0,# RETI例P1.7驅(qū)動LED亮1秒滅1秒地閃爍,設(shè)時鐘頻率為6MHz。長定時方法:增加一個軟件計數(shù)器或一個硬件計數(shù)器。硬件方式:T0定時,T1計數(shù)T0的定時跳變信號P1.0的負(fù)跳變次數(shù),計滿5個跳變?yōu)?秒。START: MOVTMOD,#61H MOVTL1,#0FBH MOVTH1,#0FBH CLRP1.0 SETBTR1LOOP1: CPLP1.7LOOP2: MOVTL0,#3CH MOVTH0,#0B0H SETB TR0LOOP3: JBC TF0,LOOP4 SJMP LOOP3LOOP4: CPL P1.0 JBC TF1,LOOP1 SJMP LOOP2例定時器外部引腳T0(T1)用作外部中斷信號輸入端。外部負(fù)脈沖引起中斷請求,選計數(shù)方式,時間常數(shù)為FFH。例:門控方式測量正脈沖寬度解:INT1引腳輸入被檢測信號,記錄在正脈沖的時間內(nèi)包含機器脈沖個數(shù)。1)設(shè)脈寬小于65.5ms等待查詢INT0,正脈沖過后,讀出TH1TL1。START: MOVTMOD,#90H MOVTL1,#0H MOVTH1,#0HWAIT1: JB P3.3,WAIT1 SETBTR1WAIT2:JNB P3.3,WAIT2WAIT3:JB P3.3,WAIT3 CLR TR1 MOV R2,TL1 MOV R3,TH1 …TR1=1 T1啟動TR1=0 T1停止INT12)設(shè)脈寬大于65.5ms,中斷方式記錄TH1TL1溢出中斷次數(shù)。 SETB TR1 SETB ET1 ;開T1中斷

SETB EA WAIT2: JNB P3.3,WAIT2;等待正脈沖到來

WAIT3: JB P3.3,WAIT3;等待正脈沖結(jié)束

CLR TR1 ;關(guān)閉T1 MOV IE,#00 ;關(guān)閉中斷

MOV R2,TL1 ;讀出T1 MOV R3,TH1 LCALLPPS ;計算脈寬

HERE: SJMP HERE ;其他任務(wù)

PRIC: INC R4 ;記錄溢出次數(shù)

RETI PPS: … ;計算脈寬子程序計算脈寬的子程序的計算式如下: 脈寬t=(R4×216+R3R2)×T (T為機器周期) 7-3 可編程并行接口芯片8255

用于擴展單片機并行I/O接口。7-3-1 結(jié)構(gòu)與引腳一.結(jié)構(gòu)1.數(shù)據(jù)線D0~7:傳送計算機與8255之間的數(shù)據(jù)、控制字和狀態(tài)字。PA0~7PB0~7PC0~7:傳送8255與外設(shè)之間的數(shù)據(jù)和聯(lián)絡(luò)信息,PC0~7可用作數(shù)據(jù)線或聯(lián)絡(luò)線1.3個8位并行I/O接口PA、PB和PC包含I/O數(shù)據(jù)鎖存器,控制寄存器和狀態(tài)寄存器。2.2組控制A組:PA和PC0~3、B組:PB和PC4~73.3種工作方式:基本I/O:輸出鎖存,輸入三態(tài),不用聯(lián)絡(luò)信號。應(yīng)答式I/O:輸入/輸出均鎖存,C口用于傳送聯(lián)絡(luò)信號,讀C口可了解外設(shè)當(dāng)前狀態(tài)。應(yīng)答雙向式:A口為雙向I/O,C口用作A口雙向傳送的聯(lián)絡(luò)信號線二.引腳P0P2.78051A0A1CS82553732.地址線CS:片選線A1,A0:口選線,尋址PA,PB,PC數(shù)據(jù)口和控制口。例求8255口地址:解:

A口 (7F00H),

B口 (7F01H),

C口 (7F02H), 控制口(7F03H)(三)讀寫控制線RD,WR控制計算機與8255之間的信息傳送和流向(四)復(fù)位線RESET高電平復(fù)位,使內(nèi)部寄存器全部清零。7-3-28255編程規(guī)定

8255初始化編程:往控制口寫入控制字,確定8255工作方式。方式選擇控制字:D7=1C口置位/復(fù)位控制字:D7=0例:8255PA口方式0輸出單片機片內(nèi)RAM數(shù)據(jù),PB口方式1輸入…。 PIOS: MOV DPTR,#7F03H;控制口地址

MOV A,#86 ;寫控制字

MOVX @DPTR,A ;設(shè)工作方式

MOV DPTR,#7F00H;PA數(shù)據(jù)口地址

MOV A,@R0 ;取RAM的數(shù)據(jù)

MOVX @DPTR,A ;由PA口輸出

… 7-4 可編程多功能接口芯片8155

256字節(jié)RAM,3個并行口PA0~7、PB0~7、PC0~5,1個14位定時器。7-4-1結(jié)構(gòu)和引腳一.引腳功能1.數(shù)據(jù)線AD0~7:傳送8155與計算機之間的數(shù)據(jù),控制字,狀態(tài)字。PA0~7、PB0~7、PC0~5

:傳送8155與外設(shè)之間的信息。2.地址線CE:IO/M:選擇口/RAM單元AD0~7:6個I/O口和256字節(jié)RAM地址。3.控制線ALE:地址鎖存RD、WR:讀寫控制4.定時器輸入/輸出線:TIMERIN、TIMEROUT5.復(fù)位線RESETP0.0~0.7P2.6P2.7

ALE8051AD0~7IO/MCSALE81557-5

串行I/O接口SIO一.串行通訊的基本方式(一).異步通訊以字符為傳送單位用起始位和停止位標(biāo)識每個字符的開始和結(jié)束字符間隔不固定,只需字符傳送時同步。異步通訊常用格式:一個字符幀異步通訊的雙方需要兩項約定:1.字符格式一幀字符位數(shù)的規(guī)定:數(shù)據(jù)位,校驗位,起始位和停止位。2.波特率(位/秒)對傳送速率的規(guī)定例:要求每秒傳送120個字符,每幀為10位。解:B=120×10=1200波特 每位0.83ms數(shù)據(jù)位傳輸率=120×8=960位/秒(二).同步通訊以一串字符為一個傳送單位,字符間不加標(biāo)識位,在一串字符開始用同步字符標(biāo)識,硬件要求高,通訊雙方須嚴(yán)格同步。D0D1D2D3D4D5D6D7停止位起始位二.串行接口功能1.發(fā)送器:并

串?dāng)?shù)據(jù)格式轉(zhuǎn)換,添加標(biāo)識位和校驗位,一幀發(fā)送結(jié)束,設(shè)置結(jié)束標(biāo)志,申請中斷。2.接收器:串

并數(shù)據(jù)格式轉(zhuǎn)換,檢查錯誤,去掉標(biāo)識位,保存有效數(shù)據(jù),設(shè)置接收結(jié)束標(biāo)志,申請中斷。3.控制器:接收編程命令和控制參數(shù),設(shè)置工作方式:同步/異步、字符格式、波特率、校驗方式、數(shù)據(jù)位與同步時鐘比例等。三.串行數(shù)據(jù)傳送方向單工通訊:數(shù)據(jù)單向傳送。半雙工通訊:數(shù)據(jù)可分時雙向傳送。全雙工通訊:可同時進(jìn)行發(fā)送和接收。發(fā)送器接收器發(fā)送器接收器 7-5-1 MCS-51串行接口

1個全雙工串行接口,可同時進(jìn)行發(fā)送和接收。串行接口輸入/輸出引腳:TXD(P3.1)、RXD(P3.0)數(shù)據(jù)格式(P.237圖):按不同方式,一幀位數(shù)8/10/11發(fā)送/接收時,數(shù)據(jù)皆低位在前。一幀字符發(fā)送/接收結(jié)束,置位標(biāo)志位(TI/RI)并申請SIO中斷。中斷控制:中斷允許位ES中斷入口:0023HD0D1D2D3D4D5D6D7停止位起始位D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D8停止位起始位D7一.串行接口控制1.數(shù)據(jù)緩沖器SBUF發(fā)送SBUF和接收SBUF共用一個地址99H 。 1)發(fā)送SBUF存放待發(fā)送的8位數(shù)據(jù),寫入SBUF將同時啟動發(fā)送。 發(fā)送指令: MOV SBUF,A2)接收SBUF存放已接收成功的8位數(shù)據(jù),供CPU讀取。 讀取串行口接收數(shù)據(jù)指令:

MOVA,SBUF2.串行口控制/狀態(tài)寄存器SCON(98H)SM0,SM1:選擇串行口4種工作方式。SM2:多機控制位,用于多機通訊。REN:允許接收控制位,REN=1,允許接收;REN=0,禁止接收。TB8發(fā)送的第9位數(shù)據(jù)位,可用作校驗位和地址/數(shù)據(jù)標(biāo)識位RB8:接收的第9位數(shù)據(jù)位或停止位TI:發(fā)送中斷標(biāo)志,發(fā)送一幀結(jié)束,TI=1,必須軟件清零RI:接收中斷標(biāo)志,接收一幀結(jié)束,RI=1,必須軟件清零3.節(jié)電控制寄存器PCONSMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍,SMOD=0,則不加倍。二.串行接口的工作方式

SM0,SM1選擇四種工作方式。(1)方式0:同步移位寄存器方式。用于擴展并行I/O接口。1.一幀8位,無起始位和停止位。2.RXD:數(shù)據(jù)輸入/輸出端。

TXD:同步脈沖輸出端,每個脈沖對應(yīng)一個數(shù)據(jù)位。3.波特率B=fosc/12

如:fosc=12MHz, B=1MHz,每位數(shù)據(jù)占1

s。4.發(fā)送過程:寫入SBUF,啟動發(fā)送,一幀發(fā)送結(jié)束,TI=1。接收過程:REN=1且RI=0,啟動接收,一幀接收完畢,RI=1。

發(fā)送時序?qū)懭隨BUFRXD輸出TXDTID0D1D2D3D4D5D6D7寫REN=1RI=0RXD輸入RI

接收時序(a)(b)(2)方式1

8位數(shù)據(jù)異步通訊方式。1.一幀10位:8位數(shù)據(jù)位,1個起始位(0),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且停止位為1(或SM2=0),將接收數(shù)據(jù)裝入SBUF,停止位裝入RB8,并使RI=1;否則丟棄接收數(shù)據(jù),不置位RI。當(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個脈沖采樣3次數(shù)據(jù)位,并3中取2保留采樣值。寫入SBUF采樣(a)發(fā)送時序圖TXD數(shù)據(jù)輸出TID0D1D2D3D4D5D6D7停止位起始位RXD輸入數(shù)據(jù)(b)接收時序圖D0D1D2D3D4D5D6D7停止位起始位RI檢測負(fù)跳變(3)

方式2和方式39位數(shù)據(jù)異步通訊方式。1.一幀為11位:9位數(shù)據(jù)位,1個起始位(0),1個停止位(1)。 第9位數(shù)據(jù)位在TB8/RB8中,常用作校驗位和多機通訊標(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并啟動發(fā)送,發(fā)送結(jié)束,TI=1。接收:REN=1,允許接收。接收完一幀,若RI=0且第9位為1(或SM2=0),將接收數(shù)據(jù)裝入接收SBUF,第9位裝入RB8,使RI=1;否則丟棄接收數(shù)據(jù),不置位RI。發(fā)送時序?qū)懭隨BUFTXD輸出TIRXD輸入接收時序RID0D1D2D3D4D5D6TB8停止位起始位D7D0D1D2D3D4D5D6RB8停止位起始位D7檢測負(fù)跳變(4)計算波特率方式0為固定波特率:B=fosc/12 方式2可選兩種波特率:B=(2SMOD

/64)×fosc 方式1、3為可變波特率,用T1作波特率發(fā)生器。

B=(2SMOD/32)×T1溢出率T1為方式2的時間常數(shù):X=28-t/T溢出時間: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工作方式,計算時間常數(shù)。T1選方式2:TH1=X=28-fosc/12×2SMOD/(32×B)T1選方式1用于低波特率,需考慮T1重裝時間常數(shù)時間。7-5-2

串行口的應(yīng)用串行口初始化編程格式:

SIO:MOVSCON,#控制狀態(tài)字;寫方式字且TI=RI=0 (MOVPCON,#80H) ;波特率加倍

(MOVTMOD,#20H) ;T1作波特率發(fā)生器

(MOVTH1,#X) ;選定波特率

(MOVTL1,#X) (SETBTR1) (SETBEA) ;開串行口中斷

(SETBES)發(fā)送程序:先發(fā)送一個字符,等待TI=1后再發(fā)送下一個字符。1.查詢方式:TRAM: MOV A,@R0 ;取數(shù)據(jù)

MOV SBUF,A ;發(fā)送一個字符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ā)送第一個字符

H: SJMP H ;其它工作

SINT: CLRTI ;中斷服務(wù)程序

INC R0 MOV A,@R0 ;取數(shù)據(jù)

MOV SBUF,A ;發(fā)送下一個字符

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(一)串行口方式0

用于擴展單片機的并行I/O接口。串行口實現(xiàn):并行→串行的數(shù)據(jù)轉(zhuǎn)換74LS165/74LS164實現(xiàn):串行→并行的數(shù)據(jù)轉(zhuǎn)換。(二)異步通訊程序舉例

1.發(fā)送程序:將片內(nèi)RAM50H起始單元的16個數(shù)由串行口發(fā)送。要求發(fā)送波特率為系統(tǒng)時鐘的32分頻,并進(jìn)行奇偶校驗。MAINT:MOV SCON,#80H;串行口初始化

MOV PCON,#80H;波特率

SETB EA SETB ES

;開串行口中斷

MOV R0,#50H ;設(shè)數(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í)行其它任務(wù) ORG 0023H ;串行口中斷入口 AJMP TRANI TRANI: PUSH A ;保護(hù)現(xiàn)場

PUSH PSW CLR TI ;清發(fā)送結(jié)束標(biāo)志

DJNZ R7,NEXT ;是否發(fā)送完?

CLR ES ;發(fā)送完,關(guān)閉串行口中斷

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論