MCS51單片機(jī)定時(shí)計(jì)數(shù)器和串行接口課件_第1頁
MCS51單片機(jī)定時(shí)計(jì)數(shù)器和串行接口課件_第2頁
MCS51單片機(jī)定時(shí)計(jì)數(shù)器和串行接口課件_第3頁
MCS51單片機(jī)定時(shí)計(jì)數(shù)器和串行接口課件_第4頁
MCS51單片機(jī)定時(shí)計(jì)數(shù)器和串行接口課件_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)原理與接口技術(shù)電子工業(yè)出版社第7章MCS-51單片機(jī)

定時(shí)/計(jì)數(shù)器和串行接口2/6/202311.了解定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)和工作原理;2.熟悉定時(shí)/計(jì)數(shù)器的控制寄存器;3.掌握定時(shí)/計(jì)數(shù)器的應(yīng)用編程;4.了解串行通信接口的結(jié)構(gòu)和工作原理;5.熟悉串行通信接口的控制寄存器;6.掌握串行通信的應(yīng)用編程。本章教學(xué)要求第7章MCS-51單片機(jī)定時(shí)/計(jì)數(shù)器和串行接口2/6/20232本章目錄7.1定時(shí)/計(jì)數(shù)器7.1.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)與原理7.1.2定時(shí)/計(jì)數(shù)器的工作方式7.1.3定時(shí)/計(jì)數(shù)器對輸入信號的要求7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用第7章MCS-51單片機(jī)定時(shí)/計(jì)數(shù)器和串行接口7.2串行通信接口7.2.1串行通信基礎(chǔ)知識7.2.2MCS-51串行通信接口7.2.3串行通信接口的應(yīng)用習(xí)題與思考題2/6/202337.1.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)與原理

T0和T1受特殊功能寄存器TMOD和TCON控制??捎绍浖O(shè)置為定時(shí)或計(jì)數(shù)工作方式。1.定時(shí)/計(jì)數(shù)器T0、T1結(jié)構(gòu)----T0、T1結(jié)構(gòu)2/6/202352.加1計(jì)數(shù)器T0、T1都是16位加1計(jì)數(shù)器,TH0、TL0構(gòu)成定時(shí)/計(jì)數(shù)器T0加1計(jì)數(shù)器的高8位和低8位。加1計(jì)數(shù)器的初值可以通過程序進(jìn)行設(shè)定,設(shè)定不同的初值,就可以獲得不同的計(jì)數(shù)值或定時(shí)時(shí)間。7.1.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)與原理----加1計(jì)數(shù)器2/6/202363.定時(shí)控制寄存器(TCON)TF0、TF1:計(jì)數(shù)溢出標(biāo)志位。TF0=1或TF1=1是計(jì)數(shù)溢出;TF0=0或TF1=0是計(jì)數(shù)未滿。TR0、TR1:啟/??刂莆?。TR0=1或TR1=1,使T0或T1啟動計(jì)數(shù);TR0=0或TR1=0,使T0或T1停止計(jì)數(shù)。7.1.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)與原理----TCON2/6/202375.T0、T1定時(shí)功能和計(jì)數(shù)功能的選擇通過選擇控制C/T實(shí)現(xiàn)定時(shí)器或計(jì)數(shù)器的功能選擇。當(dāng)C/T=0時(shí),選擇定時(shí)器功能;當(dāng)C/T=1時(shí),選擇計(jì)數(shù)器功能。7.1.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)與原理----定時(shí)和計(jì)數(shù)功能選擇2/6/20239

對單片機(jī)內(nèi)部機(jī)器周期產(chǎn)生的脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)器每個(gè)機(jī)器周期自動加1。如果單片機(jī)的晶振頻率為12MHz,則計(jì)數(shù)頻率為1MHz,或者說計(jì)數(shù)器每加1,可實(shí)現(xiàn)1μs的計(jì)時(shí)。7.1.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)與原理定時(shí)功能(C/T=0):-----定時(shí)功能選擇2/6/202310

對外部事件產(chǎn)生的脈沖進(jìn)行計(jì)數(shù)。對于MCS-51單片機(jī)來說,P3.4和P3.5兩個(gè)信號引腳分別是T0和T1計(jì)數(shù)器的計(jì)數(shù)脈沖信號輸入端,當(dāng)該引腳輸入脈沖發(fā)生負(fù)跳變時(shí),加1計(jì)數(shù)器自動加1。7.1.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)與原理計(jì)數(shù)功能(C/T=1):----計(jì)數(shù)功能選擇2/6/202311

當(dāng)TMOD中M1M0=00時(shí),選定方式0進(jìn)行工作,13位狀態(tài)。C/T=1時(shí),圖中電子開關(guān)S1切至下端,13位定時(shí)/計(jì)數(shù)器處于計(jì)數(shù)器狀態(tài),加法計(jì)數(shù)器對T0引腳上的外部輸入脈沖計(jì)數(shù)。計(jì)數(shù)值:N=8192-x。x是由TH0、TL0設(shè)定的初值。x=8191時(shí)為最小計(jì)數(shù)值l,x=0時(shí)為最大計(jì)數(shù)值8192,即計(jì)數(shù)范圍為1~8192(213)。

7.1.2定時(shí)/計(jì)數(shù)器的工作方式1.方式0----13位狀態(tài)2/6/202313C/T=0時(shí),圖中電子開關(guān)S1切至上端,加法計(jì)數(shù)器對機(jī)器周期計(jì)數(shù),13位定時(shí)/計(jì)數(shù)器處于定時(shí)器狀態(tài)。定時(shí)時(shí)間:Td=(8192-x)×Tcy。如果晶振頻率fosc=12MHz,即機(jī)器周期為1μs,則定時(shí)范圍為1μs~8192μs。7.1.2定時(shí)/計(jì)數(shù)器的工作方式1.方式0----13位狀態(tài)2/6/202314無論是計(jì)數(shù)器狀態(tài)還是計(jì)時(shí)器狀態(tài),隨著加法計(jì)數(shù)的增大,TL0的低5位溢出后自動向TH0進(jìn)位,TH0溢出后,將溢出標(biāo)志位TF0置位,并向CPU發(fā)出中斷請求。

7.1.2定時(shí)/計(jì)數(shù)器的工作方式1.方式0----13位狀態(tài)2/6/2023152.方式1

當(dāng)M1M0=01時(shí),定時(shí)/計(jì)數(shù)器選定方式1進(jìn)行工作(16位狀態(tài))。

7.1.2定時(shí)/計(jì)數(shù)器的工作方式----16位狀態(tài)2/6/202317當(dāng)作為計(jì)數(shù)器使用時(shí),計(jì)數(shù)范圍是1~65536(216);當(dāng)作為定時(shí)器使用時(shí),定時(shí)器的定時(shí)時(shí)間為:Td=(216-Count)×Tcy。如果晶振頻率fosc=12MHz,則定時(shí)范圍為:1~65536μs。7.1.2定時(shí)/計(jì)數(shù)器的工作方式---定時(shí)與計(jì)數(shù)范圍2/6/2023183.方式2

方式0和方式1具有共同的特點(diǎn),即當(dāng)加法計(jì)數(shù)器發(fā)生溢出后,自動處于0狀態(tài),如果要實(shí)現(xiàn)循環(huán)計(jì)數(shù)或周期定時(shí),就需要程序不斷反復(fù)給計(jì)數(shù)器賦初值,這就影響了計(jì)數(shù)或定時(shí)精度,并給程序設(shè)計(jì)增添了麻煩。而方式2具有初值自動重新加載功能,其邏輯結(jié)構(gòu)如圖7-5所示。7.1.2定時(shí)/計(jì)數(shù)器的工作方式-=-初值自動重新加載2/6/202319當(dāng)M1M0=10時(shí),定時(shí)/計(jì)數(shù)器選定方式2進(jìn)行工作。該方式下,16位計(jì)數(shù)器被分為兩個(gè)8位寄存器TL0和TH0,其中TL0作為計(jì)數(shù)器,TH0作為計(jì)數(shù)器TL0的初值預(yù)置寄存器,并始終保持為初值常數(shù)。當(dāng)TL0計(jì)數(shù)溢出時(shí),系統(tǒng)將TF0置位,并向CPU申請中斷,同時(shí)將TH0的內(nèi)容重新裝入TL0,繼續(xù)計(jì)數(shù)。7.1.2定時(shí)/計(jì)數(shù)器的工作方式---方式2特性2/6/2023214.方式3當(dāng)M1M0=11時(shí),T0定時(shí)/計(jì)數(shù)器處于方式37.1.2定時(shí)/計(jì)數(shù)器的工作方式---方式3結(jié)構(gòu)

在方式3下,T0被拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0。其中TL0既可以計(jì)數(shù)使用,又可以定時(shí)使用,構(gòu)成了1個(gè)8位的定時(shí)/計(jì)數(shù)器(TL0),T0的控制位和引腳信號全歸TL0使用,其功能和操作與方式0或方式1完全相同,而且工作邏輯結(jié)構(gòu)也極其類似。2/6/202322(1)T0的方式3工作模式7.1.2定時(shí)/計(jì)數(shù)器的工作方式----方式3工作模式2/6/202323當(dāng)作為波特率發(fā)生器使用時(shí),只需設(shè)置好工作方式,便可自動運(yùn)行。如要停止工作,只需送入一個(gè)把T1設(shè)置為方式3的方式控制字就可以了。7.1.2定時(shí)/計(jì)數(shù)器的工作方式----方式3時(shí)T1的工作模式2/6/2023257.1.3定時(shí)/計(jì)數(shù)器對輸入信號的要求

定時(shí)/計(jì)數(shù)器的作用是用來精確地確定某一段時(shí)間間隔(作為定時(shí)器用)或累計(jì)外部輸入的脈沖個(gè)數(shù)(作為計(jì)數(shù)器用)。當(dāng)用作定時(shí)器時(shí),在其輸入端輸入周期固定的脈沖,根據(jù)定時(shí)/計(jì)數(shù)器中累計(jì)的脈沖個(gè)數(shù),即可計(jì)算出所定時(shí)間的長度。定時(shí)器使用---定時(shí)器使用2/6/2023267.1.3定時(shí)/計(jì)數(shù)器對輸入信號的要求

當(dāng)MCS-5l內(nèi)部的定時(shí)/計(jì)數(shù)器被選定為定時(shí)器工作模式時(shí),計(jì)數(shù)輸入信號是內(nèi)部時(shí)鐘脈沖,每個(gè)機(jī)器周期產(chǎn)生一個(gè)脈沖位,計(jì)數(shù)器增l,因此定時(shí)/計(jì)數(shù)器的輸入脈沖的周期與機(jī)器周期一樣,為時(shí)鐘振蕩頻率的l/12。當(dāng)采用12MHz頻率的晶振時(shí),計(jì)數(shù)速率為1MHz,輸入脈沖的周期間隔為1μs。由于定時(shí)的精度決定于輸入脈沖的周期,因此當(dāng)需要高分辨率的定時(shí)時(shí),應(yīng)盡量選用頻率較高的晶振。定時(shí)器使用---定時(shí)器使用2/6/202327

由于確認(rèn)一次負(fù)跳變需要用2個(gè)機(jī)器周期,即24個(gè)振蕩周期,因此外部輸入的計(jì)數(shù)脈沖的最高頻率為振蕩器頻率的1/24,例如,選用6MHz頻率的晶振,允許輸入的脈沖頻率為250kHz,如果選用12MHz頻率的晶振,則可輸入500kHz的外部脈沖。對于外部輸入信號的占空比并沒有什么限制,但為了確保某一給定的電平在變化之前能被采樣一次,則這一電平至少要保持一個(gè)機(jī)器周期。計(jì)數(shù)器使用7.1.3定時(shí)/計(jì)數(shù)器對輸入信號的要求---計(jì)數(shù)器使用2/6/2023297.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用(1)初始化步驟1)設(shè)置工作方式;2)計(jì)算加1計(jì)數(shù)器的計(jì)數(shù)初值Count,并將計(jì)數(shù)初值Count送入TH、TL中;3)啟動計(jì)數(shù)器工作,即將TRx置1。4)若采用中斷方式,則應(yīng)設(shè)置T0、T1及CPU開中斷。1.定時(shí)/計(jì)數(shù)器初始化----初始化2/6/202330(2)計(jì)數(shù)方式初始化

假設(shè)T0工作于計(jì)數(shù)方式1,現(xiàn)用n表示加1計(jì)數(shù)器的位數(shù),用x表示計(jì)數(shù)值,則計(jì)數(shù)初值Count=2n-x,式中,n=13、16、8、8,分別對應(yīng)工作方式0、1、2、3。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----計(jì)數(shù)器初始化2/6/202331例7-1定時(shí)/計(jì)數(shù)器T0工作于計(jì)數(shù)方式,計(jì)數(shù)值x=1,允許中斷,分別使用工作方式1、方式0和方式2。進(jìn)行初始化編程。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----計(jì)數(shù)器初始化應(yīng)用2/6/2023321)假設(shè)T1定時(shí)/計(jì)數(shù)器閑置不用,可設(shè)控制寄存器TMOD的高4位為0000,即TMOD7~4=0000B。2)T0定時(shí)/計(jì)數(shù)器工作于計(jì)數(shù)方式,可確定T0的GATE=0,C/T=1,即TMOD3~2=01B。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----計(jì)數(shù)器初始化應(yīng)用2/6/2023333)T0工作于方式1時(shí),應(yīng)確定M1M0=01,即TMOD1~0=01B。 則TMOD=0000,0101B=05H。 計(jì)數(shù)器位數(shù)n=16,計(jì)數(shù)器初值Count=216-1=FFFFH,即TH0=FFH,TL0=FFH。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----計(jì)數(shù)器初始化應(yīng)用2/6/2023344)T0工作于方式0時(shí),應(yīng)確定M1M0=00,即TMOD1~0=00B。 則TMOD=0000,0100B=04H。 計(jì)數(shù)器位數(shù)n=13,計(jì)數(shù)器初值Count=213-1=1111,1111,1,1111B,即TH0=FFH(高8位FFH送入TH0中),TL0=1FH(低5位1FH送入TL0中)。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----計(jì)數(shù)器初始化應(yīng)用2/6/2023355)T0工作于方式2時(shí),應(yīng)確定M1M0=10,即TMOD1~0=10B。 則TMOD=0000,0110B=06H。 計(jì)數(shù)器位數(shù)n=8,計(jì)數(shù)器初值Count=28-1=FFH,即TH0=FFH,TL0=FFH。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----計(jì)數(shù)器初始化應(yīng)用2/6/202336按照前面分析,初始化程序如下。1)T0工作于方式1的初始化程序。 MOVTMOD,#05H ;設(shè)置T0工作于計(jì)數(shù)方式1 MOVTH0,#0FFH ;加1計(jì)數(shù)器高8位TH0賦初值FFH MOVTL0,#0FFH ;加1計(jì)數(shù)器低8位TL0賦初值FFH SETBET0 ;T0開中斷 SETBEA ;CPU開中斷 SETBTR0 ;啟動T0計(jì)數(shù)7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----計(jì)數(shù)器初始化應(yīng)用2/6/202337#include<reg51.h>sbitET0=IE^1;/*定義CPU中斷控制字IE第1位為ET0*/sbitEA=IE^7; /*定義CPU中斷控制字IE第7位為EA*/sbitTR0=TCON^4;/*定義TCON第4位為TR0*/ …TMOD=0x05; /*設(shè)置T0工作于計(jì)數(shù)方式1*/TH0=0xff; /*加1計(jì)數(shù)器高8位TH0賦初值FFH*/TL0=0xff; /*加1計(jì)數(shù)器低8位TL0賦初值FFH*/ET0=1; /*T0開中斷*/EA=1; /*CPU開中斷*/TR0=1; /*啟動T0*/7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----計(jì)數(shù)器初始化應(yīng)用C語言初始化程序段2/6/2023382)T0工作于方式0的初始化程序。匯編語言初始化程序段:MOV TMOD,#04H;設(shè)置T0工作于計(jì)數(shù)方式0MOV TH0,#FFH;加1計(jì)數(shù)器高8位TH0賦初值FFHMOV TL0,#1FH ;加1計(jì)數(shù)器低8位TL0賦初值1FHSETB ET0 ;T0開中斷SETB EA ;CPU開中斷SETB TR0 ;啟動T07.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----計(jì)數(shù)器初始化應(yīng)用2/6/2023393)T0工作于方式2的初始化程序。 匯編語言初始化程序段:MOV TMOD,#06H;設(shè)置T0工作于計(jì)數(shù)方式2MOV TL0,#0FFH;計(jì)數(shù)器TL1賦初值FFHMOV TH0,#0FFH;重裝寄存器TH1賦初值FFHSETB ET0 ;T0開中斷SETB EA ;CPU開中斷SETB TR0 ;啟動T07.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----計(jì)數(shù)器初始化應(yīng)用2/6/202340(3)定時(shí)方式初始化若系統(tǒng)主頻fosc=6MHz,則機(jī)器周期Tcy=2μs,即計(jì)數(shù)器加一次1所用時(shí)間為2μs,若計(jì)數(shù)器加100次產(chǎn)生溢出(計(jì)數(shù)值N=100),則定時(shí)時(shí)間為200μs,即定時(shí)器定時(shí)時(shí)間Td=N×Tcy。計(jì)數(shù)值N與計(jì)數(shù)器初值Count的關(guān)系是N=2n-Count,所以定時(shí)時(shí)間Td=(2n-Count)Tcy。計(jì)數(shù)初值Count=2n-Td/Tcy。式中,n=13、16、8、8,分別對應(yīng)方式0、1、2、3。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----定時(shí)器初始化2/6/2023411)假設(shè)T1定時(shí)/計(jì)數(shù)器閑置不用,可設(shè)控制寄存器TMOD的高4位為0000,即TMOD7~4=0000B。2)T0工作于定時(shí)方式,可確定T0的GATE=0,C/T=0,即TMOD3~2=00B。例7-2T0工作于定時(shí)方式1,定時(shí)時(shí)間Td=2ms,系統(tǒng)主頻fosc=8MHz,允許中斷,對T0進(jìn)行初始化編程。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----定時(shí)器初始化應(yīng)用2/6/2023423)T0工作于方式1時(shí),應(yīng)確定M1M0=01,即TMOD1~0=01B。 則TMOD=0000,0001B=01H。4)系統(tǒng)主頻fosc=8MHz,時(shí)鐘周期Tcp=1/8μs,系統(tǒng)機(jī)器周期Tcy=12Tcp=12/8=1.5μs, 計(jì)數(shù)器位數(shù)n=16,定時(shí)時(shí)間Td=2ms=2000μs, 計(jì)數(shù)初值Count=2n-Td/Tcy=216-2000/1.5=64203=FACBH即TH0=FAH,TL0=CBH。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----定時(shí)器初始化應(yīng)用2/6/202343匯編語言初始化程序段:MOV TMOD,#01H;設(shè)置T0工作于定時(shí)方式1MOV TH0,#FAH;加1計(jì)數(shù)器高8位TH0賦初值FAHMOV TL0,#CBH;加1計(jì)數(shù)器低8位TL0賦初值CBHSETB ET0 ;T0開中斷SETB EA ;CPU開中斷SETB TR0 ;啟動T0開始定時(shí)7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----定時(shí)器初始化應(yīng)用2/6/2023441)假設(shè)T0定時(shí)/計(jì)數(shù)器閑置不用,可設(shè)控制寄存器TMOD的低4位為0000,即TMOD3~0=0000B。2)T1工作于定時(shí)方式,可確定T1的GATE=0,C/T=0,即TMOD7~6=00B。例7-3T1工作于定時(shí)方式2,定時(shí)時(shí)間Td=500μs,系統(tǒng)主頻fosc=6MHz,不允許中斷。對T1進(jìn)行初始化編程。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----定時(shí)器初始化應(yīng)用2/6/2023453)T1工作于方式2時(shí),應(yīng)確定M1M0=10,即TMOD5~4=10B。 則TMOD=0010,0000B=20H。4)系統(tǒng)主頻fosc=6MHz,時(shí)鐘周期Tcp=1/6μs,Tcy=12Tcp=12/6=2μs, 計(jì)數(shù)器位數(shù)n=8,定時(shí)時(shí)間Td=500μs, 計(jì)數(shù)初值Count=2n-Td/Tcy=28-500/2=6=06H,即TH0=06H,TL0=06H。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----定時(shí)器初始化應(yīng)用2/6/202346匯編語言初始化程序段:MOV TMOD,#20H;設(shè)置T1工作于計(jì)數(shù)方式2MOV TL1,#06H ;計(jì)數(shù)器TL1賦初值06HMOVTH1,#06H;重裝寄存器TH1賦初值06HCLR ET1 ;T1關(guān)中斷SETBTR1 ;啟動T17.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----定時(shí)器初始化應(yīng)用2/6/202347C語言初始化程序段:#include<reg51.h>sbitET1=IE^3;/*定義CPU中斷控制字IE第3位為ET1*/sbitTR1=TCON^6;/*定義TCON第6位為TR1*/ …TMOD=0x20; /*設(shè)置T1為定時(shí)方式2*/TL1=0x06; /*計(jì)數(shù)器TL1賦初值06H*/TH1=0x06; /*重裝寄存器TH1賦初值06H*/ET1=0; /*T1關(guān)中斷*/TR1=1; /*啟動T1*/7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----定時(shí)器初始化應(yīng)用2/6/2023482.定時(shí)/計(jì)數(shù)器應(yīng)用實(shí)例分析:周期為2ms的方波要求定時(shí)間隔為1ms,每次時(shí)間到將P1.0取反。定時(shí)器計(jì)數(shù)頻率為fosc/12,Tcy=12/fosc=1μs。每個(gè)機(jī)器周期定時(shí)器計(jì)數(shù)加1,1ms=1000μs,需計(jì)數(shù)次數(shù)為1000/(12/fosc)=1000。由于計(jì)數(shù)器向上計(jì)數(shù),為得到l000個(gè)計(jì)數(shù)之后的定時(shí)器溢出,必須給定時(shí)器賦初值65536-1000,C語言中相當(dāng)于-1000。例7-4設(shè)單片機(jī)的fosc=12MHz,要求在P1.0腳上輸出周期為2ms的方波。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----應(yīng)用實(shí)例2/6/202349(1)匯編語言程序設(shè)計(jì)用定時(shí)器1的方式1編程,采用中斷方式。ORG0000H ;復(fù)位入口 AJMPSTART ORG001BH ;T1中斷服務(wù)程序入口地址 AJMPT1INTORG0030H7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----應(yīng)用實(shí)例2/6/202350START:MOVSP,#60H ;初始化程序MOVTMOD,#10H;設(shè)置T1工作于定時(shí)方式1 MOVTH1,#0FCH;設(shè)置加1計(jì)數(shù)器的計(jì)數(shù)初值高字節(jié)MOVTL1,#18H ;設(shè)置加1計(jì)數(shù)器的計(jì)數(shù)初值低字節(jié) SETBTR1 ;啟動T1SETBET0 ;開T1中斷SETBEA ;開總允許中斷MAIN:AJMPMAIN ;主程序T1INT:CPLP1.0 ;T1中斷服務(wù)程序 MOVTH1,#0FCH MOVTL1,#18H RETI7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----應(yīng)用實(shí)例2/6/202351

#include<reg51.h> sbitrect_wave=P1^0;/*方波由P1.0口輸出*/ voidtime1_over(void);/*計(jì)數(shù)器計(jì)數(shù)時(shí)間到子程序*/ voidmain(void) { TMOD=0x10; /*設(shè)置定時(shí)/計(jì)數(shù)器1為工作方式1*/ TH1=-1000/256;/*設(shè)置計(jì)數(shù)初值高字節(jié)*/ TL1=-1000%256;/*設(shè)置計(jì)數(shù)初值低字節(jié)*/ IE=0x00; /*禁止中斷*/ TR1=1; /*啟動定時(shí)*/

----采用中斷方式7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用(2)C51程序段設(shè)計(jì)用定時(shí)器1的方式1編程,采用中斷方式。2/6/202352

for(;;) {if(TF1) /*查詢計(jì)數(shù)溢出*/ time1_over();/*調(diào)用計(jì)數(shù)器計(jì)數(shù)時(shí)間到子程序*/ } } voidtime1_over(void)/*計(jì)數(shù)器計(jì)數(shù)時(shí)間到子程序*/ { TH1=-1000/256;/*設(shè)置計(jì)數(shù)初值高字節(jié)*/ TL1=-1000%256;/*設(shè)置計(jì)數(shù)初值低字節(jié),重啟定時(shí)器*/ TF1=0; /*計(jì)數(shù)溢出標(biāo)志位清0*/ rect_wave=!rect_wave; /*輸出取反*/ }----采用中斷方式7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用2/6/202353例7-5設(shè)一只發(fā)光二極管LED和8051的P1.0腳相連。當(dāng)P1.0腳是高電平時(shí),LED發(fā)亮;當(dāng)P1.0腳是低電平時(shí),LED熄滅。編制程序用定時(shí)器來實(shí)現(xiàn)發(fā)光二極管LED的閃爍功能,設(shè)置LED每1s閃爍一次。已知單片機(jī)系統(tǒng)主頻為12MHz。7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----應(yīng)用實(shí)例2/6/202354設(shè)計(jì)思想:定時(shí)/計(jì)數(shù)器的最長定時(shí)是65.536ms,無法實(shí)現(xiàn)1s的定時(shí)??梢圆捎密浖?jì)數(shù)器來進(jìn)行設(shè)計(jì)。定義一個(gè)軟件計(jì)數(shù)器單元30H,先用定時(shí)/計(jì)數(shù)器T0做一個(gè)50ms的定時(shí)器,定時(shí)時(shí)間到后將軟件計(jì)數(shù)器中的值加1,如果軟件計(jì)數(shù)器計(jì)到了20(1s),取反P1.0,并清除軟件計(jì)數(shù)器中的值,否則直接返回。則完成了20次定時(shí)中斷才取反一次P1.0,實(shí)現(xiàn)定時(shí)時(shí)間20×50=1000ms=1s的定時(shí)。定時(shí)/計(jì)數(shù)器T0采用工作方式1(16位定時(shí)器),其初值為:21650ms/1s=6553650000=15536=3CB0H7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----應(yīng)用實(shí)例2/6/202355程序如下: ORG 0000H AJMP START ;轉(zhuǎn)入主程序 ORG 000BH ;定時(shí)/計(jì)數(shù)器T0的中斷服務(wù)程序入口地址 AJMP TIME0 ;跳轉(zhuǎn)到真正的定時(shí)器中斷服務(wù)程序處 ORG 0030HSTART: MOV SP,#60H ;設(shè)置堆棧指針 MOV P1,#00H ;關(guān)發(fā)光二極管LED(使其滅) MOV 30H,#00H ;軟件計(jì)數(shù)器預(yù)清0 MOV TMOD,#01H ;定時(shí)/計(jì)數(shù)器T0工作于方式1 MOV TH0,#3CH ;設(shè)置定時(shí)/計(jì)數(shù)器的初值 MOV TL0,#0B0H SETB EA ;開總中斷允許 SETB ET0 ;開定時(shí)/計(jì)數(shù)器T0中斷允許 SETB TR0 ;啟動定時(shí)/計(jì)數(shù)器T0LOOP: JMP LOOP ;循環(huán)等待7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----應(yīng)用實(shí)例2/6/202356TIME0:INC 30H ;中斷程序 MOV A,30H CJNE A,#14H,RET0 ;與20比較,不等轉(zhuǎn)RET0 MOV 30H,#00H CPL P1.0RET0:MOV TH0,#3CH ;重設(shè)定時(shí)初值,啟動 MOV TL0,#0B0H RETI7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----應(yīng)用實(shí)例2/6/202357

盡管MCS-51為用戶只提供了兩個(gè)外部中斷源,但用戶可以根據(jù)實(shí)際需求,進(jìn)行多于兩個(gè)外部中斷請求的擴(kuò)展,其中有很多擴(kuò)展方法。在此重點(diǎn)介紹利用定時(shí)器中斷作為外部中斷的擴(kuò)。

3.采用定時(shí)/計(jì)數(shù)器擴(kuò)展外部中斷7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----擴(kuò)展外部中斷2/6/202358MCS-51有兩個(gè)定時(shí)/計(jì)數(shù)器T0、T1,若選擇它們以計(jì)數(shù)器方式工作,當(dāng)引腳T0或T1上發(fā)生負(fù)跳變時(shí),T0或T1計(jì)數(shù)器則加1。利用這個(gè)特性,借用引腳T0或T1作為外部中斷請求輸入線,若設(shè)定計(jì)數(shù)初值為滿量程,計(jì)數(shù)器加1,就會產(chǎn)生溢出中斷請求,TF0或TF1變成了外部中斷請求標(biāo)志位,T0或T1的中斷入口地址被擴(kuò)展成了外部中斷源的入口地址。值得注意的是當(dāng)使用定時(shí)器作為外部中斷時(shí),定時(shí)器以前的功能將失效,除非用軟件對它進(jìn)行復(fù)用。3.采用定時(shí)/計(jì)數(shù)器擴(kuò)展外部中斷7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----擴(kuò)展外部中斷2/6/202359

將定時(shí)器T0引腳作為外部中斷源使用的具體做法為,設(shè)定相應(yīng)定時(shí)器工作方式為方式2,計(jì)數(shù)器TH0、TL0初值為0FFH,允許計(jì)數(shù)器T0中斷,則T0的初始始化程序如下: MOVTMOD,#06H;將計(jì)數(shù)器T0設(shè)定為方式2外部計(jì)數(shù)MOVTL0,#0FFH;設(shè)置計(jì)數(shù)器初值 MOVTH0,#0FFH;設(shè)置重裝計(jì)數(shù)器初值 SETBET0 ;允許T0中斷 SETBEA ;CPU開中斷 SETBTR0 ;啟動T07.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----擴(kuò)展外部中斷2/6/202360#include<reg51.h>voidmain(void) {TMOD=0x66;/*兩個(gè)定時(shí)/計(jì)數(shù)器都設(shè)為方式2外部計(jì)數(shù)模式*/ TH1=0xFF; /*設(shè)定重裝值,TL1不用設(shè)置*/ TH0=0xFF; /*設(shè)定重裝值,TL0不用設(shè)置*/ TCON=0x50;/*置位TR1、TR0,開始計(jì)數(shù)*/ IE=0x9F; /*中斷使能*/ }7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----擴(kuò)展外部中斷2/6/202361

/***********定時(shí)器0中斷服務(wù)程序*************/ voidtimer0_int(void)interrupt1 { TF0=0; /*計(jì)數(shù)溢出標(biāo)志位清0*/ …… } /***********定時(shí)器1中斷服務(wù)程序*************/ voidtimer1_int(void)interrupt3 { TF1=0; /*計(jì)數(shù)溢出標(biāo)志位清0*/ …… }7.1.4定時(shí)/計(jì)數(shù)器的應(yīng)用----擴(kuò)展外部中斷2/6/2023627.2串行通信接口數(shù)據(jù)通信的傳輸方式有單工、半雙工和全雙工方式。單工方式:數(shù)據(jù)僅按一個(gè)固定方向傳送。半雙工方式:數(shù)據(jù)可實(shí)現(xiàn)雙向傳送,但不能同時(shí)進(jìn)行。全雙工方式:允許雙方同時(shí)進(jìn)行數(shù)據(jù)雙向傳送。7.2.1串行通信基礎(chǔ)知識1.?dāng)?shù)據(jù)通信的傳輸方式----傳輸方式2/6/2023632.并行通信和串行通信

是指計(jì)算機(jī)與計(jì)算機(jī)或外設(shè)之間的數(shù)據(jù)傳送,因此,這里的“信”是一種信息,是由數(shù)字1和0構(gòu)成的具有一定規(guī)則并反映確定信息的一個(gè)數(shù)據(jù)或一批數(shù)據(jù)。這種數(shù)據(jù)傳輸有兩種基本方式,即并行通信和串行通信。

并行通信是數(shù)據(jù)的每位被同時(shí)傳輸出去或接收進(jìn)來。

串行通信其數(shù)據(jù)傳輸是逐位傳輸?shù)?,因而在相同條件下,比并行通信傳輸速度慢。7.2.1串行通信基礎(chǔ)知識----基本概念2/6/202364

根據(jù)串行通信的不同工作方式,還可將發(fā)送接收線合二為一,成為發(fā)送/接收復(fù)用線(如半雙工)。即便在實(shí)際應(yīng)用中可能還要附加一些信號線,如應(yīng)答信號線、準(zhǔn)備好信號線等,但在多字節(jié)數(shù)據(jù)通信中,串行通信與并行通信相比,其工程實(shí)現(xiàn)上造價(jià)要低得多。因此,串行通信已被越來越廣泛地采用,尤其是,串行通信通過在信道中設(shè)立調(diào)制/解調(diào)器中繼站等,可使數(shù)據(jù)傳輸?shù)降厍虻拿總€(gè)角落。目前,飛速發(fā)展的計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)(互聯(lián)網(wǎng)、廣域網(wǎng)、局域網(wǎng))均為串行通信。7.2.1串行通信基礎(chǔ)知識----基本概念2/6/2023653.異步串行通信和同步串行通信異步串行通信:簡稱為異步通信,所傳輸?shù)臄?shù)據(jù)格式(也稱為串行幀)由1個(gè)起始位、7個(gè)或8個(gè)數(shù)據(jù)位、1~2個(gè)停止位(含1.5個(gè)停止位)和1個(gè)校驗(yàn)位組成。起始位約定為0,空閑位約定為1。在異步通信方式中,接收器和發(fā)送器有各自的時(shí)鐘,它們的工作是非同步的。7.2.1串行通信基礎(chǔ)知識----基本概念2/6/202366

異步通信的實(shí)質(zhì)是指通信雙方采用獨(dú)立的時(shí)鐘,每個(gè)數(shù)據(jù)均以起始位開始,停止位結(jié)束,起始位觸發(fā)甲乙雙方同步時(shí)鐘。每個(gè)異步串行幀中的1位彼此嚴(yán)格同步,位周期相同。所謂異步是指發(fā)送、接收雙方的數(shù)據(jù)幀與幀之間不要求同步,也不必同步。7.2.1串行通信基礎(chǔ)知識----基本概念2/6/202367簡稱為同步通信,發(fā)送器和接收器由同一個(gè)時(shí)鐘源控制。在異步通信中,每傳輸一幀字符都必須加上起始位和停止位,占用了傳輸時(shí)間,在要求傳送數(shù)據(jù)量較大的場合,速度就會慢得多。同步傳輸方式去掉了這些起始位和停止位,只在傳輸數(shù)據(jù)塊時(shí)先送出一個(gè)同步頭(字符)標(biāo)志即可。同步傳輸方式比異步傳輸方式速度快,這是它的優(yōu)勢。但同步傳輸方式也有其缺點(diǎn),即它必須要用一個(gè)時(shí)鐘來協(xié)調(diào)收發(fā)器的工作,所以它的設(shè)備也較復(fù)雜。7.2.1串行通信基礎(chǔ)知識同步串行通信----基本概念2/6/2023684.波特率及時(shí)鐘頻率發(fā)送/接收時(shí)鐘頻率與波特率有關(guān),即fT/R=n×BRT/R式中,fT/R為發(fā)/收時(shí)鐘頻率,單位:Hz;BRT/R為發(fā)/收波特率,單位:bps;n為波特率因子。同步通信n=1。異步通信n可取1、16或64。也就是說,同步通信中數(shù)據(jù)傳輸?shù)牟ㄌ芈始礊橥綍r(shí)鐘頻率;而異步通信中,時(shí)鐘頻率可為波特率的整數(shù)倍。

波特率BR是單位時(shí)間傳輸?shù)臄?shù)據(jù)位數(shù),單位:bps(bitpersecond),1bps=1bit/s。波特率的倒數(shù)即為每位傳輸所需的時(shí)間。7.2.1串行通信基礎(chǔ)知識----基本概念2/6/2023695.串行通信的校驗(yàn)

異步通信時(shí)可能會出現(xiàn)幀格式錯(cuò)、超時(shí)錯(cuò)等傳輸錯(cuò)誤。在具有串行口應(yīng)用的單片機(jī)開發(fā)中,應(yīng)考慮在通信過程中對數(shù)據(jù)差錯(cuò)進(jìn)行校驗(yàn),因?yàn)椴铄e(cuò)校驗(yàn)是保證準(zhǔn)確無誤通信的關(guān)鍵。常用差錯(cuò)校驗(yàn)方法有奇偶校驗(yàn)(MCS-51系列單片機(jī)編程采用此法)、和校驗(yàn)及循環(huán)冗余碼校驗(yàn)。7.2.1串行通信基礎(chǔ)知識---傳輸?shù)臏?zhǔn)確性2/6/202370

在發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)位尾隨的一位數(shù)據(jù)為奇偶校驗(yàn)位(1或0)。當(dāng)設(shè)置為奇校驗(yàn)時(shí),數(shù)據(jù)中1的個(gè)數(shù)與校驗(yàn)位1的個(gè)數(shù)之和應(yīng)為奇數(shù);當(dāng)設(shè)置為偶校驗(yàn)時(shí),數(shù)據(jù)中1的個(gè)數(shù)與校驗(yàn)位中1的個(gè)數(shù)之和應(yīng)為偶數(shù)。接收時(shí),接收方應(yīng)具有與發(fā)送方一致的差錯(cuò)檢驗(yàn)設(shè)置,當(dāng)接收一個(gè)字符時(shí),對1的個(gè)數(shù)進(jìn)行校驗(yàn),若二者不一致,則說明數(shù)據(jù)傳送出現(xiàn)了差錯(cuò)。奇偶校驗(yàn)是按字符校驗(yàn),數(shù)據(jù)傳輸速度將受到影響。這種特點(diǎn)使得它一般只用于異步串行通信中。7.2.1串行通信基礎(chǔ)知識(1)奇偶校驗(yàn)---奇偶校驗(yàn)2/6/202371

所謂和校驗(yàn)是指發(fā)送方將所發(fā)送的數(shù)據(jù)塊求和(字節(jié)數(shù)求和),并產(chǎn)生一個(gè)字節(jié)的校驗(yàn)字符(校驗(yàn)和)附加到數(shù)據(jù)塊末尾。接收方接收數(shù)據(jù)時(shí)也是先對數(shù)據(jù)塊求和,將所得結(jié)果與發(fā)送方的校驗(yàn)和進(jìn)行比較,相符則無差錯(cuò),否則即出現(xiàn)了差錯(cuò)。這種和校驗(yàn)的特點(diǎn)是無法檢驗(yàn)出字節(jié)位序的錯(cuò)誤。7.2.1串行通信基礎(chǔ)知識(2)和校驗(yàn)----和校驗(yàn)2/6/202372

這種校驗(yàn)是對一個(gè)數(shù)據(jù)塊校驗(yàn)一次。例如對磁盤信息的訪問、ROM或RAM存儲區(qū)的完整性等的檢驗(yàn)。這種方法廣泛應(yīng)用于串行通信方式。7.2.1串行通信基礎(chǔ)知識(3)循環(huán)冗余碼校驗(yàn)---循環(huán)冗余碼校驗(yàn)2/6/2023737.2.2MCS-51串行通信接口MCS-51單片機(jī)內(nèi)部有一個(gè)全雙工的串行通信口,即串行接收和發(fā)送緩沖器(SBUF),這兩個(gè)在物理上獨(dú)立的接收發(fā)送器,既可以接收數(shù)據(jù),也可以發(fā)送數(shù)據(jù)。但接收緩沖器只能讀出不能寫入,而發(fā)送緩沖器則只能寫入不能讀出,它們的地址為99H。。---SBUF2/6/202374

MCS-51單片機(jī)串行口是由以下部分構(gòu)成:發(fā)送緩沖寄存器(SBUF),發(fā)送控制器,發(fā)送控制門,接收緩沖寄存器(SBUF),接收控制寄存器,移位寄存器,中斷等部分組成。1.串行口結(jié)構(gòu)與特殊功能寄存器7.2.2MCS-51串行通信接口---串行口結(jié)構(gòu)2/6/202375

與串行通信有關(guān)的控制寄存器共有4個(gè):SBUF、SCON、PCON和IE。在邏輯上,SBUF只有一個(gè),既表示發(fā)送寄存器,又表示接收寄存器。具有同一個(gè)單元地址99H。在物理上,SBUF有兩個(gè),一個(gè)是發(fā)送寄存器,另一個(gè)是接收寄存器。7.2.2MCS-51串行通信接口(1)接收/發(fā)送緩沖器(SBUF)----接收/發(fā)送緩沖器(SBUF)2/6/202376

SCON是MCS-51的一個(gè)可位尋址的專用寄存器,用于串行數(shù)據(jù)通信的控制。單元地址98H,位地址9FH~98H。SCON各位的定義如表7-4所示。

7.2.2MCS-51串行通信接口(2)串行控制寄存器(SCON)----串行控制寄存器(SCON)2/6/2023771)串行口工作方式選擇位SM0、SM1SM0、SM1由軟件置1或清0,用于選擇串行口的4種工作方式。7.2.2MCS-51串行通信接口----串行控制寄存器(SCON)2/6/2023782)多機(jī)通信控制位SM2

SM2=1時(shí),接收到一幀信息,如果接收到的第9位數(shù)據(jù)為1,硬件將RI置1,申請中斷;如果第九位數(shù)據(jù)為0,則RI不置1,且所接收的數(shù)據(jù)無效。SM2=0時(shí),只要接收到一幀信息,不管第九位數(shù)據(jù)是0還是1,硬件都置RI=1,并申請中斷。RI由軟件清0,SM2由軟件置1或清0。多機(jī)通信時(shí),各從機(jī)先將SM2置l。接收并識別主機(jī)發(fā)來的地址,當(dāng)?shù)刂放c本機(jī)相同時(shí),將SM2清0,與主機(jī)進(jìn)行數(shù)據(jù)傳遞。各機(jī)所發(fā)送的數(shù)據(jù)第9位必須為0。7.2.2MCS-51串行通信接口----串行控制寄存器(SCON)2/6/2023793)允許接收控制位RENREN=1時(shí)允許并啟動接收,REN=0時(shí)禁止接收。REN由軟件置1或清0。4)發(fā)送數(shù)據(jù)D8位TB8TB8是方式2、方式3中要發(fā)送的第九位數(shù)據(jù),事先用軟件寫入1或0。方式0、方式1不用。7.2.2MCS-51串行通信接口----串行控制寄存器(SCON)2/6/2023805)接收數(shù)據(jù)D8位RB8方式2、方式3中,由硬件將接收到的第九位數(shù)據(jù)存入RB8。方式1中,停止位存入RB8。6)發(fā)送中斷標(biāo)志位TI發(fā)送完一幀信息,由硬件使TI置1,TI必須由軟件清0。7)接收中斷標(biāo)志位RI接收完一幀有效信息,由硬件使RI置1,RI必須由軟件清0。7.2.2MCS-51串行通信接口----串行控制寄存器(SCON)2/6/202381

IE的地址是A8H,其內(nèi)容第6章已介紹。其中串行口允許中斷的控制位為ES,當(dāng)ES=1,允許串行口中斷;當(dāng)ES=0,禁止串行中斷。7.2.2MCS-51串行通信接口(3)電源控制寄存器(PCON)

PCON主要是為CHMOS型單片機(jī)的電源控制而設(shè)置的專用寄存器。單元地址為87H,不能位尋址。PCON是一個(gè)8位寄存器,其最高位SMOD為波特率控制位:該位為1時(shí),波特率增大一倍。(4)中斷允許控制寄存器IE---PCON與IE2/6/2023822.MCS-51串行通信工作方式7.2.2MCS-51串行通信接口----工作方式2/6/202383

在方式0下,串行口作為同步移位寄存器使用。這時(shí)用RXD(P3.0)引腳作為數(shù)據(jù)移位的入口和出口,而由TXD(P3.1)引腳提供移位脈沖。移位數(shù)據(jù)的發(fā)送和接收以8位為一幀,不設(shè)起始位和停止位,低位在前高位在后,其幀格式如圖7-10所示。(1)串行工作方式07.2.2MCS-51串行通信接口----工作方式2/6/202384

使用方式0實(shí)現(xiàn)數(shù)據(jù)的移位輸入/輸出時(shí),實(shí)際上是把串行口變成并行口使用。串行口作為并行輸出口使用時(shí),要有“串入并出”的移位寄存器配合(例如CD4049或74HC164),其電路連接如圖7-11所示。7.2.2MCS-51串行通信接口---方式02/6/202385

如果把實(shí)現(xiàn)并入串出功能的移位寄存器(例如CD4014或74HC165)與串行口配合使用,如圖7-12所示,就可以把串行口變?yōu)椴⑿休斎肟谑褂谩?.2.2MCS-51串行通信接口---方式02/6/202386例7-6

使用74HC164的并行輸出引腳接8支發(fā)光二極管,利用它的串入并出功能,把發(fā)光二極管從左向右輪流點(diǎn)亮,并反復(fù)循環(huán)。發(fā)光二極管為共陰極型,電路連接如圖7-13所示。7.2.3串行通信接口的應(yīng)用---串行移位輸出1.串口方式0應(yīng)用2/6/202387(1)匯編語言編程 ORG 1000HSTART:MOVSCON,#00H ;置串行口工作方式0 MOVA,#80H ;最高位燈先亮 CLRP1.0 ;關(guān)閉并行輸出OUT0:MOVSBUF,A ;開始串行輸出OUT1:JNBTI,OUT1;輸出完否?未完,等待;完了,繼續(xù)執(zhí)行 CLRTI ;完了,清零TI標(biāo)志位,以備下次發(fā)送 SETBP1.0;打開并行口輸出 ACALLDELAY;延時(shí)一段時(shí)間 7.2.3串行通信接口的應(yīng)用---串行移位輸出2/6/202388 RR A ;循環(huán)右移 CLR P1.0;關(guān)閉并行輸出 SJMPOUT0;循環(huán);延時(shí)子程序DELAY:MOV R7,#250D1: MOV R6,#250D2: DJNZ R6,D2 DJNZ R7,D1 RET END7.2.3串行通信接口的應(yīng)用---串行移位輸出2/6/202389(2)C51編程

#include<reg51.h> #include<intrins.h> #defineout_offP1^0=0 #defineout_onP1^0=1 externvoiddelay(void); /*外部延時(shí)函數(shù)*/ voidmain() { unsignedchari; SCON=0x00; /*串行口方式0工作*/ ES=0; /*禁止串行中斷*/ 7.2.3MCS-51串行通信接口分析:當(dāng)串行口把8位狀態(tài)碼串行移位輸出后,TI置1。把TI作為狀態(tài)查詢標(biāo)志,使用查詢方法。---串行移位輸出2/6/202390for(;;) {for(i=0;i<8;i++) {out_off; /*關(guān)閉并行輸出*/ SBUF=_cror_(0x80,i);/*串行輸出*/ while(!TI){} /*狀態(tài)查詢*/ out_on; /*開啟并行輸出*/ TI=0; /*清發(fā)送中斷標(biāo)志*/ delay(); /*狀態(tài)維持*/ } } }7.2.3MCS-51串行通信接口---串行移位輸出2/

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論