C51單片機應(yīng)用設(shè)計與技能訓(xùn)練(第2版)課件 任務(wù)9 設(shè)計六軸機械臂控制系統(tǒng)_第1頁
C51單片機應(yīng)用設(shè)計與技能訓(xùn)練(第2版)課件 任務(wù)9 設(shè)計六軸機械臂控制系統(tǒng)_第2頁
C51單片機應(yīng)用設(shè)計與技能訓(xùn)練(第2版)課件 任務(wù)9 設(shè)計六軸機械臂控制系統(tǒng)_第3頁
C51單片機應(yīng)用設(shè)計與技能訓(xùn)練(第2版)課件 任務(wù)9 設(shè)計六軸機械臂控制系統(tǒng)_第4頁
C51單片機應(yīng)用設(shè)計與技能訓(xùn)練(第2版)課件 任務(wù)9 設(shè)計六軸機械臂控制系統(tǒng)_第5頁
已閱讀5頁,還剩66頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機與鍵盤的連接一、鍵盤及其抖動問題鍵盤是由若干按鍵組成的開關(guān)矩陣,它是微型計算機最常用的輸入設(shè)備,用戶可以通過鍵盤向計算機輸入指令、地址和數(shù)據(jù)。一般單片機系統(tǒng)中采用非編碼鍵盤,非編碼鍵盤是由軟件來識別鍵盤上的閉合鍵,它具有結(jié)構(gòu)簡單,使用靈活等特點,因此被廣泛應(yīng)用于單片機系統(tǒng)。一、鍵盤及其抖動問題組成鍵盤的按鍵有觸點式和非觸點式兩種,單片機中應(yīng)用的一般是由機械觸點構(gòu)成的。當(dāng)開關(guān)S斷開時,P1.0輸入為高電平,S閉合時,P1.0輸入為低電平。由于按鍵是機械觸點,當(dāng)機械觸點斷開、閉合時,會有抖動。消除抖動的方法硬件方法:一般不常用。軟件方法:單片機設(shè)計中常用軟件法,軟件去除抖動其實很簡單,就是在單片機獲得P1.0口為低的信息后,不是立即認(rèn)定S已被按下,而是延時10毫秒或更長一段時間后再次檢測P1.0口,如果仍為低,說明S的確按下了,這實際上是避開了按鍵按下時的抖動時間。而在檢測到按鍵釋放后(P1.0為高),再延時5~10個毫秒,消除后沿的抖動,然后再對鍵值處理。二、單片機與鍵盤的連接將每個按鍵的一端接到單片機的I/O口,另一端接地。1、通過I/O口連接:(一)獨立式按鍵接口技術(shù)實例如下圖所示,采用不斷查詢的方法,即檢測是否有鍵閉合,如有鍵閉合,則去除鍵抖動,判斷鍵號并轉(zhuǎn)入相應(yīng)的鍵處理。假設(shè)兩個鍵定義如下:P3.0:開始執(zhí)行某種操作(假設(shè)讓8只發(fā)光二極管閃爍)。P3.1:停止執(zhí)行。voiddelay(unsignedchar);bitkey();voidlsd(unsignedchar);unsignedcharvkey;bitstart_end=0;voidmain(){unsignedcharldata;while(1){}}if(key()){if(vkey==1)start_end=1;elsestart_end=0;}if(start_end){ldata=~ldata;delay(250);}elseldata=0xff;P0=ldata;源程序源程序(延時函數(shù)delay())voiddelay(unsignedchart){unsignedchari,j;for(i=t;i>0;i--)

for(j=200;j>0;j--);}bitkey(){unsignedchartemp;bitflag=0;temp=P3;temp=temp|0xfc;temp=temp^0xff;if(temp==0)returnflag;else{}}delay(25);temp=P3|0xfc;temp=temp^0xff;if(temp==0)

returnflag;else{vkey=temp;flag=1;

while(temp){temp=P3|0xfc;temp=temp^0xff;}}returnflag;源程序(判斷是否有鍵按下函數(shù))2、采用中斷方式各個按鍵都接到一個與非門上,當(dāng)有任何一個按鍵按下時,都會使與門輸出為低電平,從而引起單片機的中斷,它的好處是不用在主程序中不斷地循環(huán)查詢,如果有鍵按下,單片機再去做相應(yīng)的處理。實例試編程實現(xiàn)由3個按鍵控制發(fā)光二極管的全亮、閃爍或全滅。#include<reg51.h>voiddelay(unsignedchar);unsignedcharflag;voidmain(){IT0=1;EA=1;EX0=1;while(1){switch(flag){case1:P0=0x00;break;case2:P0=~P0;delay(250);break;case3:P0=0xff;break;}}}voiddelay(unsignedchart){unsignedchari,j;for(i=t;i>0;i--)for(j=200;j>0;j--);}中斷服務(wù)函數(shù)voidisr_int0()interrupt0{unsignedcharkdata;kdata=P1;kdata=kdata^0xff;kdata>>=1;if(kdata!=0){kdata>>=1;if(kdata!=0)flag=3;elseflag=2;}elseflag=1;}(二)矩陣式鍵盤接口技術(shù)在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,一個端口(如P1口)就可以構(gòu)成4*4=16個按鍵,在需要的鍵數(shù)比較多時,采用矩陣法來做鍵盤是合理的。1、矩陣式鍵盤的結(jié)構(gòu)當(dāng)按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可判斷是否有鍵按下了。1、矩陣式鍵盤的結(jié)構(gòu)2、矩陣式鍵盤的按鍵識別方法——行掃描法1)判斷鍵盤中有無鍵按下。將全部行線置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。2)判斷閉合鍵所在的位置。在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。2、矩陣式鍵盤的按鍵識別方法——行掃描法行掃描法行掃描法識別按鍵的方法就象在二維平面上找確定的點,要在二維平面上找到確定的點。確定這點的橫坐標(biāo):行線位置確定它的縱坐標(biāo):列線位置公式:鍵值=行號×列數(shù)+列號實例89S51單片機的P1口用作鍵盤I/O口,P0口用作輸出口,用于輸出所按鍵的鍵號(0~F)。89S51單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0~P1.3分別接有4個上拉電阻到正電源+5V,并把列線P1.0~P1.3設(shè)置為輸入線,行線P1.4~P1.7設(shè)置為輸出線。4根行線和4根列線形成16個相交點。行掃描識別步驟(1)檢測當(dāng)前是否有鍵被按下:檢測的方法是P1.4~P1.7輸出全“0”,讀取P1.0~P1.3的狀態(tài),若P1.0~P1.3為全“1”,則無鍵閉合,否則有鍵閉合。(2)去除鍵抖動:當(dāng)檢測到有鍵按下后,延時一段時間再做下一步的檢測判斷。(3)若有鍵被按下,應(yīng)識別出是哪一個鍵閉合。識別鍵閉合的方法對鍵盤的行線進(jìn)行掃描。P1.4~P1.7按下述4種組合依次輸出:P1.71110P1.61101P1.51011P1.40111在每組行輸出時讀取P1.0~P1.3,若全為“1”,則表示為這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉(zhuǎn)換成所定義的鍵值。流程圖效標(biāo)志鍵盤掃描有鍵閉合延時去抖動掃描鍵盤計算鍵值閉合鍵釋放建立有效標(biāo)志建立無返回找到閉合鍵NYNYNY鍵盤掃描程序#include<reg51.h>unsignedcharseg[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};voiddelay(unsignedchar);unsignedcharkey_scan();voidmain(){unsignedcharval_key;while(1){val_key=key_scan();if(val_key!=0xff)P0=seg[val_key];}}voiddelay(unsignedchart){unsignedchari,j;for(i=0;i<t;i++)

for(j=0;j<200;j++);}鍵盤掃描程序鍵盤掃描函數(shù)unsignedcharkey_scan(){unsignedcharkdata,vkey,keyNo;bitiskey=0;//標(biāo)志,在確定具體哪一個鍵按下時,如果檢測到有一個鍵按下則該標(biāo)志置1P1=0x0f;//行線送“0”kdata=P1;//讀取列線值

kdata&=0x0f;if(kdata==0x0f)return0xff;//無鍵按下,建立無效標(biāo)志(0xff為無鍵按下的無效標(biāo)志)

鍵盤掃描函數(shù)else//若列線均為“1”則無鍵按下,否則有鍵按下

{delay(25);//有鍵按下,去除抖動

kdata=0xef;while(!iskey)//掃描鍵盤

{vkey=P1=kdata;//送掃描碼至P1口行線,并將掃描碼保存到vkey中

kdata=P1;//讀取列線值

kdata&=0x0f;if(kdata==0x0f){kdata=vkey;//若沒有鍵盤按下,則取出行掃描碼

kdata<<=1;//換掃描下一行的掃描碼(循環(huán)向左移一位

kdata|=1;}鍵盤掃描函數(shù)else//若有鍵按下則鍵處理{kdata^=0x0f;//為計算列值的方便,將列線P1.3~P1.0分別與1異或即按位取反

switch(kdata)//計算列值

{case1:keyNo=0;break;case2:keyNo=1;break;case4:keyNo=2;break;case8:keyNo=3;break;}iskey=1;}}

鍵盤掃描函數(shù)vkey=vkey>>4;//取行掃描碼

vkey^=0x0f;//將行掃描碼取反

switch(vkey){case1:keyNo+=0;break;//把行值加到列值中

case2:keyNo+=4;break;case4:keyNo+=8;break;case8:keyNo+=12;break;}do{kdata=P1;kdata&=0x0f;}while(kdata!=0x0f);//判斷鍵釋放

}returnkeyNo;}案例空調(diào)制冷控制系統(tǒng)預(yù)置溫度控制如下圖所示,“UP”是“升溫”按鈕,接INT0,“DOWN”是“降溫”按鈕,接INT1。顯然,該案例中,提高或降低調(diào)節(jié)溫度均采用中斷方式實現(xiàn),按“UP”則產(chǎn)生外部中斷0,按“DOWN”產(chǎn)生外部中斷1。源程序(主函數(shù))調(diào)節(jié)溫度的設(shè)置可分別在外部中斷0和外部中斷1的中斷服務(wù)程序中實現(xiàn),在中斷服務(wù)程序中,調(diào)節(jié)溫度放在變量temp(采用BCD碼)中,每發(fā)生一次中斷,temp中的數(shù)據(jù)加1或減1,并再分別由8051的P1、P2控制的兩個數(shù)碼管顯示其溫度值。#include<reg51.h>unsignedchartemp=30;main(){unsignedchart10,t;IT0=IT1=1;t10=temp/10;t=temp%10;P1=(t10<<4)|(t&0x0f);EA=1;EX0=EX1=1;while(1);}//按升溫按鈕的中斷服務(wù)程序voidisr_int0()interrupt0{unsignedchart10,t;if(temp<30)temp++;t10=temp/10;t=temp%10;P1=(t10<<4)|(t&0x0f);}溫度設(shè)定中斷子程序://按降溫按鈕的中斷服務(wù)程序voidisr_int1()interrupt2{unsignedchart10,t;if(temp>20)temp--;t10=temp/10;t=temp%10;P1=(t10<<4)|(t&0x0f);}溫度設(shè)定中斷子程序:提示:本案例還解決了一個處理十進(jìn)制溫度(BCD碼)的問題,請留意。本案例只是提供一個思路,僅供參考,不要把思維局限在本案例上。本案例只用了兩個按鈕,可以直接采用中斷法,但本任務(wù)卻要四個按鈕,能直接用嗎?顯然不行?知識梳理與總結(jié)本任務(wù)通過溫度報警器預(yù)置溫度的實現(xiàn),讓讀者掌握鍵盤工作原理及其與單片機接口的相關(guān)知識,學(xué)會應(yīng)用。本任務(wù)重點內(nèi)容如下:(1)鍵盤工作原理、按鍵抖動問題及其消除方法;(2)獨立式按鍵與單片機連接的電路及其編程;(3)矩陣式鍵盤的結(jié)構(gòu)及其按鍵識別方法——行列掃描法的程序設(shè)計。任務(wù)作業(yè)P281~P282T8-4~T8-6串行接口結(jié)構(gòu)通信的概念所謂通信,是指微型計算機系統(tǒng)內(nèi)部部件之間、微型計算機與外部設(shè)備之間、微型計算機與微型計算機之間的數(shù)據(jù)傳送(信息交換)。分類并行通信串行通信串行通信和并行通信并行通信,即數(shù)據(jù)的各位同時傳送;串行通信,即數(shù)據(jù)一位一位順序傳送。

計算機1GND

計算機2GND并行通信

計算機1GND

計算機2GND發(fā)送接收串行通信一、串行通信的分類

數(shù)據(jù)通常是以字符(或字節(jié))為單位組成字符幀傳送的。字符幀由發(fā)送端一幀一幀地發(fā)送,通過傳輸線為接收設(shè)備一幀一幀地接收。發(fā)送端和接收端可以有各自的時鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘源彼此獨立,互不同步。1.異步通信1)字符幀——也叫數(shù)據(jù)幀起始位。位于字符幀開頭,只占一位,始終為邏輯0低電平。數(shù)據(jù)位。根據(jù)情況可取5位、6位、7位或8位,低位在前高位在后。若所傳送數(shù)據(jù)為ASCII字符,則取7位。奇偶校驗位。僅占一位,用于表征串行通信中采用奇校驗還是偶校驗。停止位。位于字符幀末尾,為邏輯“1”高電平,通??扇?位、1.5位或2位。幀格式:第n-1字符幀D70/110D0D1D2D3D4D5D6D70/110D0D18位數(shù)據(jù)奇偶校驗奇偶校驗停起止始位位停起止始位位第n+1字符幀第n字符幀幀格式:第n-1字符幀10D0D1D2D3D4D5D6D70/111110D08位數(shù)據(jù)奇偶校驗空閑位停起止始位位停止位起始位第n字符幀第n+1字符幀插入了3個空閑位的幀2)波特率波特率(BautRate)是指每秒鐘傳送信號的數(shù)量,單位為波特(Baud)。在異步通信中,波特率是最重要的指標(biāo),用于表征數(shù)據(jù)傳輸?shù)乃俣?。波特率越高,?shù)據(jù)傳輸速度越快??梢杂捎脩舾鶕?jù)實際情況而通過軟件設(shè)定。提示:(1)要注意波特率與比特率是有區(qū)別的,每秒鐘傳送二進(jìn)制數(shù)的位數(shù)定義為比特率,單位是bit/s。由于在單片機串行通信中傳送的信號就是二進(jìn)制信號,因此波特率與比特率數(shù)值上相等,單位采用bit/s。(2)波特率與字符的實際傳輸速率不同,字符的實際傳輸速率是指每秒鐘內(nèi)所傳字符的幀數(shù)。例如,假如數(shù)據(jù)傳送的速率是120字符/秒,而每個字符如上述規(guī)定包含10數(shù)位(1個起始位,8個數(shù)據(jù)位和1個停止位組成一幀),則其傳送波特率為:10bit×120字符/s=1200波特。2.同步通信在異步通信中,每個字符要用起始位和停止位作為字符開始和結(jié)束的標(biāo)志,占用了時間;所以在數(shù)據(jù)塊傳遞時,為了提高速度,常去掉這些標(biāo)志,采用同步傳送。由于數(shù)據(jù)塊傳遞開始要用同步字符來指示,同時要求由時鐘來實現(xiàn)發(fā)送端與接收端之間的同步,故硬件較復(fù)雜。二、串行通信的傳輸方向A站發(fā)送器B站接收器A站B站發(fā)送器發(fā)送器接收器接收器A站B站發(fā)送器接收器接收器發(fā)送器單工半雙工全雙工三、MCS-51單片機的串行接口結(jié)構(gòu)MCS-51系列單片機內(nèi)部有一個串行接口(SerialPort),是一個可編程的全雙工(能同時進(jìn)行發(fā)送和接收)通信接口,具有UART(Universalasynchronousreceivertransmitter通用異步接收和發(fā)送器)的全部功能。該串行接口電路主要由串行口控制寄存器SCON、發(fā)送和接收電路等三部分組成。MCS-51串行接口的結(jié)構(gòu)去申請中斷發(fā)送SBUF(99H)接收SBUF(99H)發(fā)送控制器TI接收控制器RI移位寄存器波特率發(fā)生器T1≥1A累加器輸出控制門RxDTxDP3.1P3.0CPU內(nèi)部串行控制寄存器98H1.數(shù)據(jù)緩沖器SBUF在物理上有兩個SBUB:一個發(fā)送寄存器SBUF、一個接收寄存器SBUF二者共用一個地址99H和相同的名稱SBUF。一個只能被CPU讀、一個只能被CPU寫發(fā)送時,CPU寫入的是發(fā)送SBUF接收時,讀取的是接收SBUF,接收寄存器是雙緩沖的,以避免在接收下一幀數(shù)據(jù)之前,CPU未能及時響應(yīng)接收器的中斷,沒有把上一幀數(shù)據(jù)讀走,而產(chǎn)生兩幀數(shù)據(jù)重疊的問題。2.控制寄存器SCON工作方式選擇多機通信控制位允許接收控制位接收數(shù)據(jù)的第9位發(fā)送數(shù)據(jù)的第9位接收中斷標(biāo)志發(fā)送中斷標(biāo)志SM0SM1SM2RENTB8RB8TIRI9FH9EH9DH9CH9BH9AH99H98H在方式2和方式3中,僅用于接收,當(dāng)接收機的SM2=1時可以利用收到的第9位來控制是否置RI(當(dāng)RB8=0時不激活RI,并且將接收到的前8位數(shù)據(jù)丟棄;當(dāng)RB8=1時,才將接收到的前8位數(shù)據(jù)送入SBUF,并置位RI產(chǎn)生中斷請求)。當(dāng)SM2=0時,則不論第9位數(shù)據(jù)為0或1,都將前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷請求。

串行口的工作方式SM0SM1工作方式功能說明波特率00方式08位同步移位寄存器常用于擴展I/O口fosc/1201方式110位UART8位數(shù)據(jù)、起始位、結(jié)束位可變(取決于定時器1溢出率)0方式211位UART8位數(shù)據(jù)、起始位、結(jié)束位和奇偶校驗位fosc/64或fosc/3211方式311位UART可變(取決于定時器1溢出率)只有該位有用,為1時,波特率×2;為0時不變。3.電源控制寄存器PCONSMOD×××GF1GF0PDIDL87H不能位尋址,在對其進(jìn)行初始化時需用字節(jié)傳送指令!?。?/p>

串行接口的工作方式一、串行接口的工作方式方式0——同步移位寄存器方式串行口的SBUF是作為8位同步移位寄存器用,主要用于和外部同步移位寄存器外接以擴展一個并行I/O接口(將串行口變?yōu)?個8位并行I/O口使用)。此方式是半雙工的,并非是一種同步通信方式。

波特率固定為fosc/12,即每個機器周期移位一次。串行數(shù)據(jù)從RXD(P3.0)端輸入或輸出,同步移位脈沖由TXD(P3.1)送出。這種方式常用于擴展I/O口,也可外接同步輸入/輸出設(shè)備。ABCLK345610111213數(shù)據(jù)輸出移位脈沖RXDTXD805174LS164D7D6D5D4D3D2D1D0(1)發(fā)送操作

SBUF中的串行數(shù)據(jù)由RXD逐位移出;TXD輸出移位時鐘,頻率=fosc/12;

每送出8位數(shù)據(jù),TI就自動置1;

必須用軟件清零TI。RXD不再是接收引腳、TXD也不再是發(fā)送引腳。ACLK654314131211數(shù)據(jù)輸入移位脈沖RXDTXD805174LS165D0D1D2D3D4D5D6D7(2)接收操作

串行數(shù)據(jù)由RXD逐位移入SBUF中;TXD輸出移位時鐘,頻率=fosc/12;

每接收8位數(shù)據(jù)RI就自動置1;

必須用軟件清零RI。例寫出串行口工作方式0接收時的串行口控制字。方式0時:SM0,SM1=00方式0時SM2必須為0:SM2=0

REN=1時允許接收:REN=1方式0為8位數(shù)據(jù),TB8、RB8=00接收前,發(fā)送中斷標(biāo)志TI=0

接收中斷標(biāo)志RI=0故控制字(SCON)=00010000B=10H案例用單片機的串行口擴展輸出口用8051串行口外接CD4094擴展8位并行輸出口,8位并行口的各位都接一個發(fā)光二極管,要求發(fā)光二極管自右向左以一定速度依次顯示,呈流水燈狀態(tài)。案例用單片機的串行口擴展輸出口本例是將串行口工作于方式0,串行口工作于方式0時有兩種不同的用途:把串行口設(shè)置成并入串出的輸出口,此時需要外接一片8位串行輸入和并行輸出的同步移位寄存器74LS164或CD4094;將串行口設(shè)置成串入并出的輸入口,此時需要外接一片8位并行輸入和串行輸出的同步移位寄存器74LS165或CD4014。CD4094CD4094是一種8位串行輸入(D端)并行輸出的同步移位寄存器,采用CMOS工藝制成。CLK為同步脈沖輸入端,STB為控制端:若STB=0,則8位并行數(shù)據(jù)輸出端關(guān)閉,但允許串行數(shù)據(jù)從D輸入;若STB=1,則D輸入端關(guān)閉,但允許8位數(shù)據(jù)并行輸出。案例用單片機的串行口擴展輸出口#include<reg51.h>sbitp10=P1^0;voidisr_serial();unsignedcharsdata=0xfe;voidmain(){SCON=0;p10=0;SBUF=sdata;EA=1;ES=1;while(1);}voidisr_serial()interrupt4{inti;p10=1;for(i=10000;i>0;i--);sdata<<=1;sdata|=1;if(sdata==0xff)sdata=0xfe;p10=0;SBUF=sdata;TI=0;}中斷方式!2.方式1

方式1、方式2、方式3均為全雙工方式,串行數(shù)據(jù)經(jīng)TXD(P3.1)端發(fā)送給外設(shè),而外設(shè)發(fā)出的串行數(shù)據(jù)由RXD(P3.0)端接收,發(fā)送和接收可同時進(jìn)行。當(dāng)SM0=0,SM1=1時,串行口工作在方式1。串行口為10位異步通信方式。方式1多用于兩個單片機(雙機)之間或單片機與外設(shè)電路間的通信。在此方式下字符幀除8位數(shù)據(jù)位外,還有一位起始位(0)和1位停止位(1)。(1)發(fā)送過程發(fā)送操作在TI=0時進(jìn)行,任何一條“寫SBUF”指令都可以啟動一次發(fā)送,CPU向發(fā)送器緩沖寄存器寫入一個字節(jié)的數(shù)據(jù)后,發(fā)送電路自動在8位發(fā)送字符前后分別添加1位起始位和1位停止位,并在移位脈沖的作用下在TXD線上依次發(fā)送一幀信息。發(fā)送完后自動維持TXD線為高電平(1狀態(tài)),TI由硬件在發(fā)送停止位時置1,并向CPU申請中斷。(2)接收過程接收操作在RI=0和REN=1條件下進(jìn)行。方式1是靠檢測RXD來判斷的,CPU不斷采樣RXD端,當(dāng)采樣到負(fù)跳變時,啟動一次接收。在移位脈沖控制下,把接收的數(shù)據(jù)移入接收SBUF中,直到接收到數(shù)據(jù)第9位(即停止位)時,同時滿足:RI=0SM2=0或接收到的停止位為1

則把接收到的8位數(shù)據(jù)存入“接收SBUF”,把停止位送入RB8中,并使RI置1和發(fā)出串行口中斷請求,通知CPU執(zhí)行“讀SBUF”指令,從SBUF中取出接收到的一個數(shù)據(jù)。如果條件不滿足,則這次收到的數(shù)據(jù)就被舍去,不送入“SBUF(接收)”中,這就意味著丟失了一組數(shù)據(jù)。3.方式2和方式3方式2和方式3都是11位為一幀的UART方式1個起始位,9個數(shù)據(jù)位和一個停止位。第9位數(shù)據(jù)位既可作奇偶校驗位也可作控制位,發(fā)送之前應(yīng)先在SCON的TB8位中準(zhǔn)備好。方式3和方式2除波特率不同之外,其它的性能完全一樣,兩種工作方式的通信過程完全相同。方式2的波特率只有fosc/32和fosc/64兩種而方式3的波特率是可變的,由用戶根據(jù)需要

溫馨提示

  • 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

提交評論