已閱讀5頁,還剩106頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1,12:45,單片機(jī)原理與接口技術(shù),第7章 mcs-51單片機(jī) 定時/計數(shù)器和串行接口,2,12:45,(1) 了解定時/計數(shù)器的結(jié)構(gòu)和工作原理。 (2) 熟悉定時/計數(shù)器的控制寄存器。 (3) 掌握定時/計數(shù)器的應(yīng)用編程。 (4) 了解串行通信接口的結(jié)構(gòu)和工作原理。 (5) 熟悉串行通信接口的控制寄存器。 (6) 掌握串行通信的應(yīng)用編程。,本章教學(xué)要求,3,12:45,本 章 目 錄,7.1 定時/計數(shù)器 7.1.1 定時/計數(shù)器的結(jié)構(gòu)與原理 7.1.2 定時/計數(shù)器的工作方式 7.1.3 定時/計數(shù)器對輸入信號的要求 7.1.4 定時/計數(shù)器的應(yīng)用 7.2 串行通信接口 7.2.1 串行通信基礎(chǔ)知識 7.2.2 mcs-51串行通信接口 7.2.3 串行通信接口的應(yīng)用 習(xí)題與思考題,4,12:45,7.1 定時/計數(shù)器,mcs-51單片機(jī)內(nèi)有2個16位可編程的定時/計數(shù)器,即定時器0(t0)和定時器1(t1)。 兩個定時/計數(shù)器都有定時或事件計數(shù)的功能,可用于定時控制、延時、對外部事件計數(shù)和檢測等應(yīng)用。,5,12:45,7.1.1 定時/計數(shù)器的結(jié)構(gòu)與原理,t0和t1受特殊功能寄存器tmod和tcon控制??捎绍浖O(shè)置為定時或計數(shù)工作方式。,1定時/計數(shù)器t0、t1結(jié)構(gòu),-t0、t1結(jié)構(gòu),6,12:45,2加1計數(shù)器,t0、t1都是16位加1計數(shù)器,th0、tl0構(gòu)成定時/計數(shù)器t0加1計數(shù)器的高8位和低8位。 加1計數(shù)器的初值可以通過程序進(jìn)行設(shè)定,設(shè)定不同的初值,就可以獲得不同的計數(shù)值或定時時間。,7.1.1 定時/計數(shù)器的結(jié)構(gòu)與原理,-加1計數(shù)器,7,12:45,3定時控制寄存器(tcon),tf0、tf1:計數(shù)溢出標(biāo)志位。 tf0=1或tf1=1是計數(shù)溢出; tf0=0或tf1=0是計數(shù)未滿。 tr0、tr1:啟/??刂莆?。 tr0=1或tr1=1,使t0或t1啟動計數(shù); tr0=0或tr1=0,使t0或t1停止計數(shù)。,7.1.1 定時/計數(shù)器的結(jié)構(gòu)與原理,-tcon,8,12:45,4工作方式控制寄存器(tmod),gate:門控信號。當(dāng)gate=0時,trx=1即可啟動定時器工作; 當(dāng)gate=1時,要求同時有trx=1和intx=1才可啟動定時器工作(x是1、2)。 c/t:定時/計數(shù)器選擇位。 c/t =1,為計數(shù)器工作方式; c/t =0,為定時器工作方式。,7.1.1 定時/計數(shù)器的結(jié)構(gòu)與原理,m1、m0: 定時/計數(shù)器工作模式選擇位 m1m0=00 工作方式0(13位方式) m1m0=01 工作方式1(16位方式) m1m0=10 工作方式2(8位自動再裝入方式) m1m0=11 工作方式3(t0為2個8位方式),-tmod,9,12:45,5t0、t1定時功能和計數(shù)功能的選擇,通過選擇控制c/t實(shí)現(xiàn)定時器或計數(shù)器的功能選擇。 當(dāng)c/t=0時,選擇定時器功能; 當(dāng)c/t=1時,選擇計數(shù)器功能。,7.1.1 定時/計數(shù)器的結(jié)構(gòu)與原理,-定時/計數(shù)功能選擇,10,12:45,對單片機(jī)內(nèi)部機(jī)器周期產(chǎn)生的脈沖進(jìn)行計數(shù),計數(shù)器每個機(jī)器周期自動加1。如果單片機(jī)的晶振頻率為12mhz,則計數(shù)頻率為1mhz,或者說計數(shù)器每加1,可實(shí)現(xiàn)1s的計時。,7.1.1 定時/計數(shù)器的結(jié)構(gòu)與原理,定時器功能( c/t =0):,-定時器功能,11,12:45,對外部事件產(chǎn)生的脈沖進(jìn)行計數(shù)。對于mcs-51單片機(jī)來說,p3.4和p3.5兩個信號引腳分別是t0和t1計數(shù)器的計數(shù)脈沖信號輸入端,當(dāng)該引腳輸入脈沖發(fā)生負(fù)跳變時,加1計數(shù)器自動加1。,7.1.1 定時/計數(shù)器的結(jié)構(gòu)與原理,計數(shù)器功能( c/t =1):,-計數(shù)器功能,12,12:45,7.1.2 定時/計數(shù)器的工作方式,定時/計數(shù)器t0、t1可以有四種不同的工作方式: 方式0、方式1、方式2 和 方式3 4種工作方式由tmod中的m1、m0兩位決定,見表7-3所示。,-四種工作方式,13,12:45,當(dāng)tmod中m1m0=00時,選定方式0 (13位狀態(tài))進(jìn)行工作。 c/t=1時,圖中電子開關(guān)s1切至下端,13位定時/計數(shù)器處于計數(shù)器狀態(tài),加法計數(shù)器對t0引腳上的外部輸入脈沖計數(shù)。計數(shù)值:n=8192-x。x是由th0、tl0設(shè)定的初值。x=8191時為最小計數(shù)值l,x=0時為最大計數(shù)值8192,即計數(shù)范圍為18192(213)。,7.1.2 定時/計數(shù)器的工作方式,1方式0,-方式0,13位計數(shù),14,12:45,c/t=0時,圖中電子開關(guān)s1切至上端,加法計數(shù)器對機(jī)器周期計數(shù),13位定時/計數(shù)器處于定時器狀態(tài)。定時時間:td=(8192-x)tcy。如果晶振頻率fosc=12mhz,即機(jī)器周期為1s,則定時范圍為1s8192s。,7.1.2 定時/計數(shù)器的工作方式,-方式0,13位定時,1方式0,15,12:45,無論是計數(shù)器狀態(tài)還是計時器狀態(tài),隨著加法計數(shù)的增大,tl0的低5位溢出后自動向th0進(jìn)位,th0溢出后,將溢出標(biāo)志位tf0置位,并向cpu發(fā)出中斷請求。,7.1.2 定時/計數(shù)器的工作方式,-方式0計數(shù)溢出置位tf0,1方式0,16,12:45,7.1.2 定時/計數(shù)器的工作方式,-啟動方式,17,12:45,當(dāng)tmod中m1m0=01時,選定方式1 (16位狀態(tài))進(jìn)行工作。,7.1.2 定時/計數(shù)器的工作方式,-方式1,16位定時/計數(shù),2方式1,當(dāng)作為計數(shù)器使用時,計數(shù)范圍是165536(216); 當(dāng)作為定時器使用時,定時器的定時時間為:td=(216-count)tcy。如果晶振頻率fosc=12mhz,則定時范圍為:165536s。,18,12:45,方式0和方式1具有共同的特點(diǎn),即當(dāng)加法計數(shù)器發(fā)生溢出后,自動處于0狀態(tài),如果要實(shí)現(xiàn)循環(huán)計數(shù)或周期定時,就需要程序不斷反復(fù)給計數(shù)器賦初值,這就影響了計數(shù)或定時精度,并給程序設(shè)計增添了麻煩。而方式2具有初值自動重新加載功能,其邏輯結(jié)構(gòu)如圖7-5所示。,7.1.2 定時/計數(shù)器的工作方式,-方式2,自動重載初值,3方式2,19,12:45,當(dāng)m1m0=10時,定時/計數(shù)器選定方式2進(jìn)行工作。 該方式下,16位計數(shù)器被分為兩個8位寄存器tl0和th0,其中tl0作為計數(shù)器,th0作為計數(shù)器tl0的初值預(yù)置寄存器,并始終保持為初值常數(shù)。當(dāng)tl0計數(shù)溢出時,系統(tǒng)將tf0置位,并向cpu申請中斷,同時將th0的內(nèi)容重新裝入tl0,繼續(xù)計數(shù)。,7.1.2 定時/計數(shù)器的工作方式,-方式2,自動重載初值,20,12:45,4方式3,7.1.2 定時/計數(shù)器的工作方式,-方式3,在前述方式0、1、2 三種工作方式中,t0和t1兩個定時/計數(shù)器具有相同的功能。 在方式3下,t0和t1的功能完全不同。 當(dāng)m1m0=11時: t0定時/計數(shù)器處于方式3工作模式。 t1定時/計數(shù)器只能工作在方式0、1、2下。,21,12:45,4方式3,7.1.2 定時/計數(shù)器的工作方式,-方式3時t0的結(jié)構(gòu),1) t0的方式3工作模式 在方式3下,t0被拆成兩個獨(dú)立的8位計數(shù)器tl0和th0。 tl0既可以計數(shù)使用,又可以定時使用,構(gòu)成了1個8位的定時/計數(shù)器(tl0)。t0的控制位和引腳信號全歸tl0使用,其功能和操作與方式0或方式1完全相同,而且工作邏輯結(jié)構(gòu)也極其類似。 th0只能作為1個8位定時器使用(不能用做外部計數(shù)方式)。而且由于t0的控制位已被tl0獨(dú)占,因此只好借用定時/計數(shù)器t1的控制位tr1和tf1,以計數(shù)溢出去置位tf1,還占用t1的中斷源。而定時的啟動和停止則受tr1的狀態(tài)控制。 由于tl0既能做定時器使用,也能做計數(shù)器使用,而th0只能做定時器使用,因此在工作方式3下,定時/計數(shù)器t0可以構(gòu)成兩個獨(dú)立的定時器或1個定時器、1個計數(shù)器。,22,12:45,1) t0的方式3工作模式 t0為方式3工作模式時可以構(gòu)成兩個獨(dú)立的定時器或1個定時器、1個計數(shù)器。,7.1.2 定時/計數(shù)器的工作方式,-方式3時t0的結(jié)構(gòu),23,12:45,2) t0在方式3時t1的工作模式,7.1.2 定時/計數(shù)器的工作方式,-方式3時t1的工作模式,如果定時/計數(shù)器t0已工作在方式3下,則定時/計數(shù)器t1只能工作在方式0、方式1或方式2下。此時由于t1的運(yùn)行控制位tr1及計數(shù)溢出標(biāo)志位tf1已被定時/計數(shù)器t0借用而沒有計數(shù)溢出標(biāo)志位可供使用,因此只能把計數(shù)溢出直接送給串行口,作為串行口的波特率發(fā)生器使用,以確定串行通信的速率。 當(dāng)作為波特率發(fā)生器使用時,只需要設(shè)置好工作方式,便可自動運(yùn)行。如要停止工作,只需送入一個把t1設(shè)置為方式3的方式控制字就可以了。因?yàn)槎〞r/計數(shù)器t1不能在方式3下使用,如果硬把它設(shè)置為方式3,則停止工作。,24,12:45,2) t0在方式3時t1的工作模式,7.1.2 定時/計數(shù)器的工作方式,-方式3時t1的工作模式,如果定時/計數(shù)器t0已工作在方式3下,則定時/計數(shù)器t1只能工作在方式0、方式1或方式2下。,25,12:45,7.1.3 定時/計數(shù)器對輸入信號的要求,定時/計數(shù)器的作用是用來精確地確定某一段時間間隔(作為定時器用)或累計外部輸入的脈沖個數(shù)(作為計數(shù)器用)。當(dāng)用作定時器時,在其輸入端輸入周期固定的脈沖,根據(jù)定時/計數(shù)器中累計的脈沖個數(shù),即可計算出所定時間的長度。 當(dāng)mcs-5l內(nèi)部的定時/計數(shù)器被選定為定時器工作模式時,計數(shù)輸入信號是內(nèi)部時鐘脈沖,每個機(jī)器周期產(chǎn)生一個脈沖位,計數(shù)器增l,因此定時/計數(shù)器的輸入脈沖的周期與機(jī)器周期一樣,為時鐘振蕩頻率的l/12。當(dāng)采用12mhz頻率的晶振時,計數(shù)速率為1mhz,輸入脈沖的周期間隔為1s。由于定時的精度決定于輸入脈沖的周期,因此當(dāng)需要高分辨率的定時時,應(yīng)盡量選用頻率較高的晶振。,定時器作用,-定時器作用,26,12:45,當(dāng)定時/計數(shù)器用作計數(shù)器時,計數(shù)脈沖來自外部輸入引腳t0或t1。當(dāng)輸入信號產(chǎn)生由1至0的跳變(即負(fù)跳變)時,計數(shù)器的值增l。 由于確認(rèn)一次負(fù)跳變需要用2個機(jī)器周期,即24個振蕩周期,因此外部輸入的計數(shù)脈沖的最高頻率為振蕩器頻率的1/24,例如,選用6mhz頻率的晶振,允許輸入的脈沖頻率為250khz,如果選用12mhz頻率的晶振,則可輸入500khz的外部脈沖。 對于外部輸入信號的占空比并沒有什么限制,但為了確保某一給定的電平在變化之前能被采樣一次,則這一電平至少要保持一個機(jī)器周期。,7.1.3 定時/計數(shù)器對輸入信號的要求,-計數(shù)器作用,計數(shù)器作用,27,12:45,7.1.4 定時/計數(shù)器的應(yīng)用,(1)初始化步驟 1) 設(shè)置工作方式 2) 計算加1計數(shù)器的計數(shù)初值count,并將計數(shù)初值count送入th、tl中 3) 啟動計數(shù)器工作,即將trx置1 4) 若采用中斷方式,則應(yīng)設(shè)置t0、t1及cpu開中斷,1定時/計數(shù)器初始化,-初始化步驟,28,12:45,(2)計數(shù)方式初始化,假設(shè)t0工作于計數(shù)方式1,計數(shù)值n = 1,即每當(dāng)t0引腳輸入一個計數(shù)脈沖就使加1計數(shù)器產(chǎn)生溢出,通??梢允褂眠@種方法擴(kuò)展外中斷。 為了使加1計數(shù)器每加一次1就溢出,加1計數(shù)器的初值count=0ffffh=216-1,其中16為工作方式1時加1計數(shù)器的位數(shù),1為計數(shù)值x。 現(xiàn)用n表示加1計數(shù)器的位數(shù),用x表示計數(shù)值,則計數(shù)初值count=2n-x,式中,n = 13,16,8和8,分別對應(yīng)工作方式0,1,2和3。,7.1.4 定時/計數(shù)器的應(yīng)用,-計數(shù)器初始化,29,12:45,例7-1 定時/計數(shù)器t0工作于計數(shù)方式,計數(shù)值x=1,允許中斷,分別使用工作方式1、方式0和方式2。進(jìn)行初始化編程。,7.1.4 定時/計數(shù)器的應(yīng)用,-計數(shù)器初始化,例7-1,1) 假設(shè)t1定時/計數(shù)器閑置不用,可設(shè)控制寄存器tmod的高4位為0000,即:tmod74 = 0000b。 2) t0定時/計數(shù)器工作于計數(shù)方式,可確定t0的gate = 0, c/t = 1,即:tmod32 = 01b。,30,12:45,3) t0工作于方式1時,應(yīng)確定m1m0 = 01 即,tmod10 = 01b 則,tmod = 0000,0101b = 05h 計數(shù)器位數(shù)n = 16,計數(shù)器初值 count = 216-1 = 1111,1111,1111,1111b = ffffh 即,th0 = ffh,tl0 = ffh,7.1.4 定時/計數(shù)器的應(yīng)用,-計數(shù)器初始化,例7-1,31,12:45,4) t0工作于方式0時,應(yīng)確定m1m0 = 00 即,tmod10 = 00b 則,tmod = 0000,0100b = 04h 計數(shù)器位數(shù)n = 13,計數(shù)器初值 count = 213-1 = 1111,1111,1,1111b 即,th0 = ffh(高8位ffh送入th0中) tl0 = 1fh(低5位1fh送入tl0中),7.1.4 定時/計數(shù)器的應(yīng)用,-計數(shù)器初始化,例7-1,32,12:45,5) t0工作于方式2時,應(yīng)確定m1m0 =10 即,tmod10 =10b 則,tmod = 0000,0110b = 06h 計數(shù)器位數(shù)n = 8,計數(shù)器初值 count = 28-1 = 1111,1111b = ffh 即,th0 = ffh,tl0 = ffh,7.1.4 定時/計數(shù)器的應(yīng)用,-計數(shù)器初始化,例7-1,33,12:45,按照前面分析,初始化程序如下。 1) t0工作于方式1的初始化程序 匯編程序段: mov tmod, #05h ;設(shè)置t0工作于計數(shù)方式1 mov th0, #0ffh ;加1計數(shù)器高8位th0賦初值ffh mov tl0, #0ffh ;加1計數(shù)器低8位tl0賦初值ffh setb et0 ;t0開中斷 setb ea ;cpu開中斷 setb tr0 ;啟動t0計數(shù),7.1.4 定時/計數(shù)器的應(yīng)用,-計數(shù)器初始化,例7-1,34,12:45,c語言程序段: #include sbit et0=ie1; /*定義cpu中斷控制字ie第1位為et0*/ sbit ea=ie7; /*定義cpu中斷控制字ie第7位為ea*/ sbit tr0=tcon4; /*定義tcon第4位為tr0*/ tmod=0x05; /*設(shè)置t0工作于計數(shù)方式1*/ th0=0xff; /*加1計數(shù)器高8位th0賦初值ffh*/ tl0=0xff; /*加1計數(shù)器低8位tl0賦初值ffh*/ et0=1; /*t0開中斷*/ ea=1; /*cpu開中斷*/ tr0=1; /*啟動t0*/,7.1.4 定時/計數(shù)器的應(yīng)用,-計數(shù)器初始化,例7-1,35,12:45,2) t0工作于方式0的初始化程序 mov tmod, #04h ;設(shè)置t0工作于計數(shù)方式0 mov th0, #ffh ;加1計數(shù)器高8位th0賦初值ffh mov tl0, #1fh ;加1計數(shù)器低8位tl0賦初值1fh setb et0 ;t0開中斷 setb ea ;cpu開中斷 setb tr0 ;啟動t0 3) t0工作于方式2的初始化程序 mov tmod, #06h ;設(shè)置t0工作于計數(shù)方式2 mov tl0, #0ffh ;計數(shù)器tl1賦初值ffh mov th0, #0ffh ;重裝寄存器th1賦初值ffh setb et0 ;t0開中斷 setb ea ;cpu開中斷 setb tr0 ;啟動t0,7.1.4 定時/計數(shù)器的應(yīng)用,-計數(shù)器初始化,例7-1,36,12:45,(3)定時方式初始化,若系統(tǒng)主頻 fosc=6mhz,則機(jī)器周期tcy=2s,即計數(shù)器加一次1所用時間為2s,若計數(shù)器加100次產(chǎn)生溢出(計數(shù)值n=100),則定時時間為200s,即定時器定時時間td=ntcy。 計數(shù)值n與計數(shù)器初值count的關(guān)系是n=2n-count 所以,定時時間td =(2n-count)tcy 計數(shù)初值count=2n-td/tcy 式中,n=13、16、8、8,分別對應(yīng)方式0、1、2、3,7.1.4 定時/計數(shù)器的應(yīng)用,-定時器初始化,37,12:45,1) 假設(shè)t1定時/計數(shù)器閑置不用,可設(shè)控制寄存器tmod的高4位為0000,即,tmod74 = 0000b。 2) t0工作于定時方式,可確定t0的gate=0,c/t=0,即tmod32 = 00b。,例7-2 t0工作于定時方式1,定時時間td=2ms,系統(tǒng)主頻fosc=8mhz,允許中斷, 對t0進(jìn)行初始化編程。,7.1.4 定時/計數(shù)器的應(yīng)用,-定時器初始化,例7-2,38,12:45,3) t0工作于方式1時,應(yīng)確定m1m0=01 即,tmod10=01b 則:tmod=0000,0001b=01h 4) 系統(tǒng)主頻fosc=8mhz,時鐘周期tcp=1/8s 系統(tǒng)機(jī)器周期tcy=12tcp=12/8=1.5s 計數(shù)器位數(shù)n=16,定時時間td=2ms=2000s 計數(shù)初值count=2n-td/tcy=216-2000/1.5 =64203=facbh 即:th0=fah,tl0=cbh,7.1.4 定時/計數(shù)器的應(yīng)用,-定時器初始化,例7-2,39,12:45,匯編語言初始化程序段: mov tmod, #01h ;設(shè)置t0工作于定時方式1 mov th0, #0fah ;加1計數(shù)器高8位th0賦初值fah mov tl0, #0cbh ;加1計數(shù)器低8位tl0賦初值cbh setb et0 ;t0開中斷 setb ea ;cpu開中斷 setb tr0 ;啟動t0開始定時,7.1.4 定時/計數(shù)器的應(yīng)用,-定時器初始化,例7-2,40,12:45,1) 假設(shè)t0定時/計數(shù)器閑置不用,可設(shè)控制寄存器tmod的低4位為0000,即,tmod30 = 0000b。 2) t1工作于定時方式,可確定t1的gate = 0, c/t=0,即,tmod76=00b。,例7-3 t1工作于定時方式2,定時時間td=500s, 系統(tǒng)主頻fosc= 6 mhz, 不允許中斷。對t1進(jìn)行初始化編程。,7.1.4 定時/計數(shù)器的應(yīng)用,-定時器初始化,例7-3,41,12:45,3) t1工作于方式2時,應(yīng)確定m1m0 = 10 即, tmod54=10b。則, tmod=0010,0000b=20h。 4) 系統(tǒng)主頻fosc= 6 mhz,時鐘周期tcp = 1/6s, tcy = 12tcp = 12/6 = 2s, 計數(shù)器位數(shù)n = 8,定時時間td = 500s, 計數(shù)初值count = 2n-td/tcy = 28-500/2 = 6 = 06h, 即,th0 = 06h,tl0 = 06h。,7.1.4 定時/計數(shù)器的應(yīng)用,-定時器初始化,例7-3,42,12:45,匯編語言初始化程序段: mov tmod, #20h ;設(shè)置t1工作于計數(shù)方式2 mov tl1, #06h ;計數(shù)器tl1賦初值06h mov th1, #06h ;重裝寄存器th1賦初值06h clr et1 ;t1關(guān)中斷 setb tr1 ;啟動t1,7.1.4 定時/計數(shù)器的應(yīng)用,-定時器初始化,例7-3,43,12:45,c語言初始化程序段: #include sbit et1=ie3; /*定義cpu中斷控制字ie第3位為et1*/ sbit tr1=tcon6; /*定義tcon第6位為tr1*/ tmod=0x20; /*設(shè)置t1為定時方式2*/ tl1=0x06; /*計數(shù)器tl1賦初值06h*/ th1=0x06; /*重裝寄存器th1賦初值06h*/ et1=0; /*t1關(guān)中斷*/ tr1=1; /*啟動t1*/,7.1.4 定時/計數(shù)器的應(yīng)用,-定時器初始化,例7-3,44,12:45,2定時/計數(shù)器應(yīng)用實(shí)例,分析: 周期為2ms的方波要求定時間隔為1ms,每次時間到將p1.0取反。定時器計數(shù)頻率為fosc/12,tcy=12/fosc=1s。每個機(jī)器周期定時器計數(shù)加1,1ms=1000s,需計數(shù)次數(shù)為1000/(12/fosc)=1000。由于計數(shù)器向上計數(shù),為得到l000個計數(shù)之后的定時器溢出,必須給定時器賦初值65536-1000,c語言中相當(dāng)于-1000。 用定時器1的方式1編程,采用中斷方式。,例7-4 設(shè)單片機(jī)的fosc=12mhz,要求在p1.0腳上輸出周期為2ms的方波。,7.1.4 定時/計數(shù)器的應(yīng)用,-應(yīng)用實(shí)例,例7-4,45,12:45,(1)匯編語言程序: org 0000h ;復(fù)位入口 ajmp start org 001bh ;t1中斷服務(wù)程序入口地址 ajmp t1int org 0030h start:mov sp, #60h ;初始化程序 mov tmod, #10h ;設(shè)置t1工作于定時方式1 mov th1, #0fch ;設(shè)置加1計數(shù)器的計數(shù)初值高字節(jié) mov tl1, #18h ;設(shè)置加1計數(shù)器的計數(shù)初值低字節(jié) setb tr1 ;啟動t1 setb et1 ;開t1中斷 setb ea ;開總允許中斷 main: ajmp main ;主程序 t1int: cpl p1.0 ;t1中斷服務(wù)程序 mov th1, #0fch mov tl1, #18h reti,7.1.4 定時/計數(shù)器的應(yīng)用,-應(yīng)用實(shí)例,例7-4,46,12:45,(2)c51程序段: #include sbit rect_wave=p10; /*方波由p1.0口輸出*/ void time1_over(void); /*計數(shù)器計數(shù)時間到子程序*/ void main(void) tmod=0x10; /*設(shè)置定時/計數(shù)器1為工作方式1*/ th1=-1000/256; /*設(shè)置計數(shù)初值高字節(jié)*/ tl1=-1000%256; /*設(shè)置計數(shù)初值低字節(jié)*/ ie=0x00; /*禁止中斷*/ tr1=1; /*啟動定時*/ for (; ;) if (tf1) /*查詢計數(shù)溢出*/ time1_over( ); /*調(diào)用計數(shù)器計數(shù)時間到子程序*/ ,7.1.4 定時/計數(shù)器的應(yīng)用,-應(yīng)用實(shí)例,例7-4,47,12:45,void time1_over(void) /*計數(shù)器計數(shù)時間到子程序*/ th1=-1000/256; /*設(shè)置計數(shù)初值高字節(jié)*/ tl1=-1000%256; /*設(shè)置計數(shù)初值低字節(jié), 重啟定時器*/ tf1=0; /*計數(shù)溢出標(biāo)志位清0*/ rect_wave=!rect_wave; /*輸出取反*/ ,7.1.4 定時/計數(shù)器的應(yīng)用,-應(yīng)用實(shí)例,例7-4,48,12:45,例7-5 設(shè)一只發(fā)光二極管led和8051的p1.0腳相連。當(dāng)p1.0腳是高電平時,led發(fā)亮;當(dāng)p1.0腳是低電平時,led熄滅。編制程序用定時器來實(shí)現(xiàn)發(fā)光二極管led的閃爍功能,設(shè)置led每1s閃爍一次。已知單片機(jī)系統(tǒng)主頻為12mhz。,7.1.4 定時/計數(shù)器的應(yīng)用,-應(yīng)用實(shí)例,例7-5,49,12:45,設(shè)計思想: 定時/計數(shù)器的最長定時是65.536ms,無法實(shí)現(xiàn)1s的定時。可以采用軟件計數(shù)器來進(jìn)行設(shè)計。定義一個軟件計數(shù)器單元30h,先用定時/計數(shù)器t0做一個50ms的定時器,定時時間到后將軟件計數(shù)器中的值加1,如果軟件計數(shù)器計到了20(1s),取反p1.0,并清除軟件計數(shù)器中的值,否則直接返回。則完成了20次定時中斷才取反一次p1.0,實(shí)現(xiàn)定時時間2050=1000ms=1s的定時。 定時/計數(shù)器t0采用工作方式1(16位定時器), 其初值為:21650ms/1s=6553650000=15536=3cb0h,7.1.4 定時/計數(shù)器的應(yīng)用,-應(yīng)用實(shí)例,例7-5,50,12:45,程序如下: org 0000h ajmp start ;轉(zhuǎn)入主程序 org 000bh ;定時/計數(shù)器t0的中斷服務(wù)程序入口地址 ajmp time0 ;跳轉(zhuǎn)到真正的定時器中斷服務(wù)程序處 org 0030h start:mov sp, #60h ;設(shè)置堆棧指針 mov p1, #00h ;關(guān)發(fā)光二極管led(使其滅) mov 30h, #00h ;軟件計數(shù)器預(yù)清0 mov tmod, #01h ;定時/計數(shù)器t0工作于方式1 mov th0, #3ch ;設(shè)置定時/計數(shù)器的初值 mov tl0, #0b0h setb ea ;開總中斷允許 setb et0 ;開定時/計數(shù)器t0中斷允許 setb tr0 ;啟動定時/計數(shù)器t0 loop:jmp loop ;循環(huán)等待,7.1.4 定時/計數(shù)器的應(yīng)用,-應(yīng)用實(shí)例,例7-5,51,12:45,time0:inc 30h ;中斷程序 mov a, 30h cjne a, #14h, ret0 ;與20比較,不等轉(zhuǎn)ret0 mov 30h, #00h cpl p1.0 ret0: mov th0, #3ch ;重設(shè)定時初值,啟動 mov tl0, #0b0h reti,7.1.4 定時/計數(shù)器的應(yīng)用,-應(yīng)用實(shí)例,例7-5,52,12:45,盡管mcs-51為用戶只提供了兩個外部中斷源,但用戶可以根據(jù)實(shí)際需求,進(jìn)行多于兩個外部中斷請求的擴(kuò)展,其中有很多擴(kuò)展方法。在此重點(diǎn)介紹利用定時器中斷作為外部中斷的擴(kuò)展。 mcs-51有兩個定時/計數(shù)器t0、t1,若選擇它們以計數(shù)器方式工作,當(dāng)引腳t0或t1上發(fā)生負(fù)跳變時,t0或t1計數(shù)器則加1。利用這個特性,借用引腳t0或t1作為外部中斷請求輸入線,若設(shè)定計數(shù)初值為滿量程,計數(shù)器加1,就會產(chǎn)生溢出中斷請求,tf0或tf1變成了外部中斷請求標(biāo)志位,t0或t1的中斷入口地址被擴(kuò)展成了外部中斷源的入口地址。值得注意的是,當(dāng)使用定時器作為外部中斷時,定時器以前的功能將失效,除非用軟件對它進(jìn)行復(fù)用。,3采用定時/計數(shù)器擴(kuò)展外部中斷,7.1.4 定時/計數(shù)器的應(yīng)用,-擴(kuò)展外部中斷,53,12:45,將定時器t0引腳作為外部中斷源使用的具體做法為,設(shè)定相應(yīng)定時器工作方式為方式2,計數(shù)器th0、tl0初值為0ffh,允許計數(shù)器t0中斷,則t0的初始始化程序如下: mov tmod, 06h ;將計數(shù)器t0設(shè)定為 ;方式2外部計數(shù) mov tl0, #0ffh ;設(shè)置計數(shù)器初值 mov th0, #0ffh ;設(shè)置重裝計數(shù)器初值 setb et0 ;允許t0中斷 setb ea ;cpu開中斷 setb tr0 ;啟動t0,7.1.4 定時/計數(shù)器的應(yīng)用,-擴(kuò)展外部中斷,54,12:45,#include void main(void) tmod=0x66; /*兩個定時/計數(shù)器都設(shè)為方式2 外部計數(shù)模式*/ th1=0xff; /*設(shè)定重裝值,tl1不用設(shè)置*/ th0=0xff; /*設(shè)定重裝值,tl0不用設(shè)置*/ tcon=0x50; /*置位tr1、tr0,開始計數(shù)*/ ie=0x9f; /*中斷使能*/ ,7.1.4 定時/計數(shù)器的應(yīng)用,-擴(kuò)展外部中斷,55,12:45,/*定時器0中斷服務(wù)程序*/ void timer0_int(void) interrupt 1 tf0=0; /*計數(shù)溢出標(biāo)志位清0*/ /*定時器1中斷服務(wù)程序*/ void timer1_int(void) interrupt 3 tf1=0; /*計數(shù)溢出標(biāo)志位清0*/ ,7.1.4 定時/計數(shù)器的應(yīng)用,-擴(kuò)展外部中斷,56,12:45,7.2 串行通信接口,數(shù)據(jù)通信的傳輸方式有: 單工方式:數(shù)據(jù)僅按一個固定方向傳送。 半雙工方式:數(shù)據(jù)可實(shí)現(xiàn)雙向傳送,但不能同時進(jìn)行。 全雙工方式:允許雙方同時進(jìn)行數(shù)據(jù)雙向傳送。,7.2.1 串行通信基礎(chǔ)知識,1數(shù)據(jù)通信的傳輸方式,-數(shù)據(jù)通信傳輸方式,57,12:45,2并行通信和串行通信,數(shù)據(jù)通信:指計算機(jī)與計算機(jī)或外設(shè)之間的數(shù)據(jù)傳送。 “信”:指一種信息,是由數(shù)字1和0構(gòu)成的具有一定規(guī)則并反映確定信息的一個數(shù)據(jù)或一批數(shù)據(jù)。 這種數(shù)據(jù)傳輸有兩種基本方式: 并行通信:是數(shù)據(jù)的每位被同時傳輸出去或接收進(jìn)來。 串行通信:數(shù)據(jù)傳輸是逐位傳輸?shù)摹?在相同條件下,串行通信比并行通信傳輸速度慢。,7.2.1 串行通信基礎(chǔ)知識,-并行通信,串行通信,58,12:45,根據(jù)串行通信的不同工作方式,還可將發(fā)送接收線合二為一,成為發(fā)送/接收復(fù)用線(如半雙工)。即便在實(shí)際應(yīng)用中可能還要附加一些信號線,如應(yīng)答信號線、準(zhǔn)備好信號線等。 在多字節(jié)數(shù)據(jù)通信中,串行通信與并行通信相比,其工程實(shí)現(xiàn)上造價要低得多。 串行通信已被越來越廣泛地采用,尤其是,串行通信通過在信道中設(shè)立調(diào)制/解調(diào)器中繼站等,可使數(shù)據(jù)傳輸?shù)降厍虻拿總€角落。目前,飛速發(fā)展的計算機(jī)網(wǎng)絡(luò)技術(shù)(互聯(lián)網(wǎng)、廣域網(wǎng)、局域網(wǎng))均為串行通信。,7.2.1 串行通信基礎(chǔ)知識,-串行通信,串行通信,59,12:45,3異步串行通信和同步串行通信,異步串行通信: 簡稱異步通信。所傳輸?shù)臄?shù)據(jù)格式(也稱為串行幀)由1個起始位、7個或8個數(shù)據(jù)位、12個停止位(含1.5個停止位)和1個校驗(yàn)位組成。起始位約定為0,空閑位約定為1。在異步通信方式中,接收器和發(fā)送器有各自的時鐘,它們的工作是非同步的。 異步通信的實(shí)質(zhì)是指通信雙方采用獨(dú)立的時鐘,每個數(shù)據(jù)均以起始位開始,停止位結(jié)束,起始位觸發(fā)甲乙雙方同步時鐘。每個異步串行幀中的1位彼此嚴(yán)格同步,位周期相同。所謂異步是指發(fā)送、接收雙方的數(shù)據(jù)幀與幀之間不要求同步,也不必同步。,7.2.1 串行通信基礎(chǔ)知識,-異步串行通信,60,12:45,3異步串行通信和同步串行通信,同步串行通信: 簡稱同步通信。發(fā)送器和接收器由同一個時鐘源控制。在異步通信中,每傳輸一幀字符都必須加上起始位和停止位,占用了傳輸時間,在要求傳送數(shù)據(jù)量較大的場合,速度就會慢得多。同步傳輸方式去掉了這些起始位和停止位,只在傳輸數(shù)據(jù)塊時先送出一個同步頭(字符)標(biāo)志即可。 同步傳輸方式比異步傳輸方式速度快,這是它的優(yōu)勢。但同步傳輸方式也有其缺點(diǎn),即它必須要用一個時鐘來協(xié)調(diào)收發(fā)器的工作,所以它的設(shè)備也較復(fù)雜。,7.2.1 串行通信基礎(chǔ)知識,-同步串行通信,61,12:45,4波特率及時鐘頻率,波特率(br):單位時間傳輸?shù)臄?shù)據(jù)位數(shù)。 單位:bps (bit per second),1 bps=1 bit/s。 波特率的倒數(shù)即為每位傳輸所需的時間。 發(fā)送/接收時鐘頻率與波特率有關(guān),即 ft/r=nbrt/r 式中,ft/r為發(fā)/收時鐘頻率,單位:hz; brt/r為發(fā)/收波特率,單位:bps; n為波特率因子。 同步通信n=1。異步通信n可取1、16或64。也就是說,同步通信中數(shù)據(jù)傳輸?shù)牟ㄌ芈始礊橥綍r鐘頻率;而異步通信中,時鐘頻率可為波特率的整數(shù)倍。,7.2.1 串行通信基礎(chǔ)知識,-波特率,時鐘頻率,62,12:45,5串行通信的校驗(yàn),異步通信時可能會出現(xiàn)幀格式錯、超時錯等傳輸錯誤。在具有串行口應(yīng)用的單片機(jī)開發(fā)中,應(yīng)考慮在通信過程中對數(shù)據(jù)差錯進(jìn)行校驗(yàn),因?yàn)椴铄e校驗(yàn)是保證準(zhǔn)確無誤通信的關(guān)鍵。 常用差錯校驗(yàn)方法有奇偶校驗(yàn)(mcs-51系列單片機(jī)編程采用此法)、和校驗(yàn)及循環(huán)冗余碼校驗(yàn)。,7.2.1 串行通信基礎(chǔ)知識,-傳輸?shù)臏?zhǔn)確性,63,12:45,發(fā)送數(shù)據(jù)時, 數(shù)據(jù)位尾隨1位數(shù)據(jù), 為奇偶校驗(yàn)位(1或0)。 當(dāng)設(shè)置為奇校驗(yàn)時,數(shù)據(jù)中“1”的個數(shù)與校驗(yàn)位“1”的個數(shù)之和應(yīng)為奇數(shù)。 當(dāng)設(shè)置為偶校驗(yàn)時,數(shù)據(jù)中“1”的個數(shù)與校驗(yàn)位“1”的個數(shù)之和應(yīng)為偶數(shù)。 接收時,接收方應(yīng)具有與發(fā)送方一致的差錯檢驗(yàn)設(shè)置。當(dāng)接收一個字符時,對“1”的個數(shù)進(jìn)行校驗(yàn),若二者不一致,則說明數(shù)據(jù)傳送出現(xiàn)了差錯。 奇偶校驗(yàn)是按字符校驗(yàn),數(shù)據(jù)傳輸速度將受到影響。這種特點(diǎn)使得它一般只用于異步串行通信中。,7.2.1 串行通信基礎(chǔ)知識,(1) 奇偶校驗(yàn),-奇偶校驗(yàn),64,12:45,發(fā)送方將所發(fā)送的數(shù)據(jù)塊求和(字節(jié)數(shù)求和),并產(chǎn)生一個字節(jié)的校驗(yàn)字符(校驗(yàn)和)附加到數(shù)據(jù)塊末尾。 接收方接收數(shù)據(jù)時也是先對數(shù)據(jù)塊求和,將所得結(jié)果與發(fā)送方的校驗(yàn)和進(jìn)行比較,相符則無差錯,否則即出現(xiàn)了差錯。 特點(diǎn)是無法檢驗(yàn)出字節(jié)位序的錯誤。,7.2.1 串行通信基礎(chǔ)知識,(2) 和校驗(yàn),-和校驗(yàn),65,12:45,這種校驗(yàn)是對一個數(shù)據(jù)塊校驗(yàn)一次。例如對磁盤信息的訪問、rom或ram存儲區(qū)的完整性等的檢驗(yàn)。 這種方法廣泛應(yīng)用于串行通信方式。,7.2.1 串行通信基礎(chǔ)知識,(3)循環(huán)冗余碼校驗(yàn),-循環(huán)冗余碼校驗(yàn),66,12:45,7.2.2 mcs-51串行通信接口,mcs-51單片機(jī)內(nèi)部有一個全雙工的串行通信口,即串行接收和發(fā)送緩沖器(sbuf),這兩個在物理上獨(dú)立的接收發(fā)送器,既可以接收數(shù)據(jù),也可以發(fā)送數(shù)據(jù)。但接收緩沖器只能讀出不能寫入,而發(fā)送緩沖器則只能寫入不能讀出,它們的地址為99h。,-sbuf,67,12:45,mcs-51單片機(jī)串行口構(gòu)成: 發(fā)送緩沖寄存器(sbuf) 發(fā)送控制器 發(fā)送控制門 接收緩沖寄存器(sbuf) 接收控制寄存器 移位寄存器 中斷,1串行口結(jié)構(gòu)與特殊功能寄存器,7.2.2 mcs-51串行通信接口,-串行口結(jié)構(gòu),68,12:45,與串行通信有關(guān)的控制寄存器共有4個:sbuf、scon、pcon和ie。 在邏輯上,sbuf只有一個,既表示發(fā)送寄存器,又表示接收寄存器。具有同一個單元地址99h。在物理上,sbuf有兩個,一個是發(fā)送寄存器,另一個是接收寄存器。,7.2.2 mcs-51串行通信接口,(1)接收/發(fā)送緩沖器(sbuf),-接收/發(fā)送緩沖器(sbuf),69,12:45,scon是mcs-51的一個可位尋址的專用寄存器,用于串行數(shù)據(jù)通信的控制。單元地址98h,位地址9fh98h。scon各位的定義下表所示。,7.2.2 mcs-51串行通信接口,(2)串行控制寄存器(scon),-串行控制寄存器(scon),70,12:45,1) 串行口工作方式選擇位sm0、sm1 sm0、sm1由軟件置1或清0,用于選擇串行口的4種工作方式(方式0、1、2、3)。 詳見后面“2. mcs-51串行通信工作方式”。,7.2.2 mcs-51串行通信接口,-串行控制寄存器(scon),71,12:45,2) 多機(jī)通信控制位sm2 sm2=1時,接收到一幀信息,如果接收到的第9位數(shù)據(jù)為1,硬件將ri置1,申請中斷;如果第九位數(shù)據(jù)為0,則ri不置1,且所接收的數(shù)據(jù)無效。 sm2=0時,只要接收到一幀信息,不管第九位數(shù)據(jù)是0還是1,硬件都置ri=1,并申請中斷。ri由軟件清0,sm2由軟件置1或清0。 多機(jī)通信時,各從機(jī)先將sm2置l。接收并識別主機(jī)發(fā)來的地址,當(dāng)?shù)刂放c本機(jī)相同時,將sm2清0,與主機(jī)進(jìn)行數(shù)據(jù)傳遞。各機(jī)所發(fā)送的數(shù)據(jù)第9位必須為0。,7.2.2 mcs-51串行通信接口,-串行控制寄存器(scon),72,12:45,3) 允許接收控制位ren ren=1時允許并啟動接收。 ren=0時禁止接收。 ren由軟件置1或清0。 4) 發(fā)送數(shù)據(jù)d8位tb8 tb8是方式2、方式3中要發(fā)送的第九位數(shù)據(jù),事先用軟件寫入1或0。方式0、方式1不用。,7.2.2 mcs-51串行通信接口,-串行控制寄存器(scon),73,12:45,5) 接收數(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.2 mcs-51串行通信接口,-串行控制寄存器(scon),74,12:45,7.2.2 mcs-51串行通信接口,-pcon與ie,(3)電源控制寄存器(pcon) pcon主要是為chmos型單片機(jī)的電源控制而設(shè)置的專用寄存器。單元地址為87h,不能位尋址。pcon是一個8位寄存器,其最高位smod為波特率控制位:該位為1時,波特率增大一倍。 (4)中斷允許控制寄存器(ie) ie的地址是a8h,其內(nèi)容第6章已介紹。其中串行口允許中斷的控制位為es,當(dāng)es=1,允許串行口中斷;當(dāng)es=0,禁止串行中斷。,75,12:45,2mcs-51串行通信工作方式,7.2.2 mcs-51串行通信接口,-工作方式,76,12:45,在方式0下,串行口作為同步移位寄存器使用。這時用rxd(p3.0)引腳作為數(shù)據(jù)移位的入口和出口,而由txd(p3.1)引腳提供移位脈沖。移位數(shù)據(jù)的發(fā)送和接收以8位為一幀,不設(shè)起始位和停止位,低位在前高位在后,其幀格式如圖7-10所示。,1) 串行工作方式0,7.2.2 mcs-51串行通信接口,-工作方式0,77,12:45,使用方式0實(shí)現(xiàn)數(shù)據(jù)的移位輸入/輸出時,實(shí)際上是把串行口變成并行口使用。串行口作為并行輸出口使用時,要有“串入并出”的移位寄存器配合,例如cd4049或74hc164,其電路連接如圖所示。,7.2.2 mcs-51串行通信接口,-工作方式0,用串行口實(shí)現(xiàn)并行輸出,78,12:45,如果把實(shí)現(xiàn)并入串出功能的移位寄存器(例如cd4014或74hc165)與串行口配合使用,如圖7-12所示,就可以把串行口變?yōu)椴⑿休斎肟谑褂谩?7.2.2 mcs-51串行通信接口,-工作方式0,用串行口實(shí)現(xiàn)并行輸入,79,12:45,2) 串行工作方式1 方式1是10位為一幀的異步串行通信方式。 方式1幀格式如圖7-13所示,包括1個起始位、8個數(shù)據(jù)位和1個停止位。,7.2.2 mcs-51串行通信接口,-工作方式1,異步通信用起始位“0”表示字符的開始,然后從低位到高位逐位傳送數(shù)據(jù),最后用停止位“1”表示字符結(jié)束。一個字符又稱一幀信息。,80,12:45,(1) 數(shù)據(jù)發(fā)送 方式1的數(shù)據(jù)發(fā)送是由一條寫發(fā)送緩沖寄存器指令(mov sbuf, a)開始的。隨后在串行口由硬件自動加入起始位和停止位,構(gòu)成一個完整的幀格式,然后在移位脈沖的作用下,由txd端串行輸出。一個字符幀發(fā)送完后,使txd輸出線維持在1狀態(tài)下,并將scon寄存器的ti置1,通知cpu可以發(fā)送下一個字符。,7.2.2 mcs-51串行通信接口,-工作方式1,81,12:45,(2) 數(shù)據(jù)接收 接收數(shù)據(jù)時,scon的ren位應(yīng)處于允許接收狀態(tài)(ren=1)。在此前提下,串行口采樣rxd端,當(dāng)采樣到從1向0的狀態(tài)跳變時,就認(rèn)定是接收到起始位。隨后在移位脈沖的控制下,把接收到的數(shù)據(jù)位移入接收緩沖寄存器中,直到停止位到來之后把停止位送入rb8中,并置位接收中斷標(biāo)志位ri,通知cpu從sbuf取走接收到的一個字符,指令為mov a, subf。,7.2.2 mcs-51串行通信接口,-工作方式1,82,12:45,3) 串行工作方式2和方式3 方式2和方式3是11位一幀的串行通信方式。其幀格式如圖7-14所示,包括1個起始位,9個數(shù)據(jù)位和1個停止位。,7.2.2 mcs-51串行通信接口,-工作方式2、3,在方式2和方式3下,字符還是有8個數(shù)據(jù)位。第9個數(shù)據(jù)位d8,既可作為奇偶校驗(yàn)位使用,也可作為控制位使用,其功能由用戶確定。發(fā)送之前應(yīng)先將scon中的tb8準(zhǔn)備好,可使用如下指令完成。 setb tb8 ;tb8位置1 clr tb8 ;tb8位清零,83,12:45,3) 串行工作方式2和方式3,7.2.2 mcs-51串行通信接口,-工作方式2、3,準(zhǔn)備好第9位數(shù)據(jù)之后,再向sbuf寫入字符的8位數(shù)據(jù),并以此來啟動串行發(fā)送。 一個字符幀發(fā)送完畢后,將ti位置1,其過程與方式1相同。 方式2的接收過程也與方式1類似,所不同的是在第9位數(shù)據(jù)上,串行口把接收到的8位數(shù)據(jù)送入sbuf,而把第9位數(shù)據(jù)送入rb8。 方式2和方式3的不同之處在于波特率的計算方法不同。方式3同方式1,即通過設(shè)置定時器1的初值來設(shè)定波特率。方式2的波特率是固定的,見下文所述。,84,12:45,方式0時波特率是固定的,為單片機(jī)晶振頻率的1/12,即br = fosc/12(fosc為晶振頻率)。 方式0的波特率是一個機(jī)器周期進(jìn)行一次移位。 當(dāng)fosc=6 mhz時, 波特率為500 kbps, 即2 s移位一次; 當(dāng)fosc=12 mhz時, 波特率為1 mbps, 即1 s移位一次。 方式2的波特率也是固定的,且有兩種。 一種是晶振頻率的1/32,即fosc/32。 另一種是晶振頻率的1/64,fosc/64。 用公式表示為:br = 2smod fosc/64 式中,smod為pcon寄存器最高位的值,smod=1表示波特率加倍。,7.2.2 mcs-51串行通信接口,-串行口波特率,3mcs-51串行口波特率,85,12:45,方式1和方式3的波特率是可變的,其波特率由定時器1的溢出率決定,公式為: br = 2smod fd / 32 式中,smod為pcon寄存器最高位的值,smod=1表示波特率加倍。而定時器1溢出率計算公式為: fd=fosc/(12*(256-th1) mcs-51單片機(jī)串行通信方式0到方式3的常用波特率如表7-6所示,以便查找對應(yīng)的方式設(shè)置及定時器1的時間常數(shù)。,7.2.2 mcs-51串行通信接口,-串行口波特率,3mcs-51串行口波特率,86,12:45,例7-6 使用74hc164的并行輸出引腳接8支發(fā)光二極管,利用它的串入并出功能,把發(fā)光二極管從左向右輪流點(diǎn)亮,并反復(fù)循環(huán)。發(fā)光二極管為共陰極型,電路連接如圖7-15所示。,7.2.3 串行通信接口的應(yīng)用,-串行移位輸出,1串口方式0應(yīng)用,分析:當(dāng)串行口把8位狀態(tài)碼串行移位輸出后,ti置1。把ti作為狀態(tài)查詢標(biāo)志,使用查詢方法。,87,12:45,org 1000h start:mov scon, #00h ;置串行口工作方式0 mov a, #80h ;最高位燈先亮 clr p1.0 ;關(guān)閉并行輸出 out0:mov sbuf, a ;開始串行輸出 out1:jnb ti, out1 ;輸出完否?未完,等待 clr ti ;完了,清零ti標(biāo)志位, ;以備下次發(fā)送 setb p1.0 ;打開并行口輸出 acall delay ;延時一段時間,-串行移位輸出,匯編程序1,7.2.3 串行通信接
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新能源汽車租賃與政府補(bǔ)貼申請服務(wù)合同3篇
- 2025年度房地產(chǎn)經(jīng)紀(jì)個人勞務(wù)用工合同范本2篇
- 2025年水電工程信息化建設(shè)與維護(hù)承包合同范本3篇
- 2025年度個人果園果樹修剪與病蟲害防治一體化服務(wù)合同4篇
- 工廠轉(zhuǎn)讓協(xié)議書(2篇)
- 二零二五版城市更新改造項(xiàng)目融資合同范本4篇
- 2025年度個人抵押貸款擔(dān)保合同4篇
- 二零二五年房產(chǎn)交易市場參展商合作保障協(xié)議3篇
- 《建設(shè)工程施工合同糾紛事實(shí)查明的思路與方法》理解與適用
- 2025年行政管理制度范本:教育機(jī)構(gòu)管理規(guī)范3篇
- 2024版塑料購銷合同范本買賣
- 【高一上】【期末話收獲 家校話未來】期末家長會
- JJF 2184-2025電子計價秤型式評價大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 有毒有害氣體崗位操作規(guī)程(3篇)
- 兒童常見呼吸系統(tǒng)疾病免疫調(diào)節(jié)劑合理使用專家共識2024(全文)
- 2025屆山東省德州市物理高三第一學(xué)期期末調(diào)研模擬試題含解析
- 《華潤集團(tuán)全面預(yù)算管理案例研究》
- 2024-2025高考英語全國卷分類匯編之完型填空(含答案及解析)
- 二年級下冊加減混合豎式練習(xí)360題附答案
- 蘇教版五年級數(shù)學(xué)下冊解方程五種類型50題
評論
0/150
提交評論