程序編寫(xiě)-延時(shí)與定時(shí)_第1頁(yè)
程序編寫(xiě)-延時(shí)與定時(shí)_第2頁(yè)
程序編寫(xiě)-延時(shí)與定時(shí)_第3頁(yè)
程序編寫(xiě)-延時(shí)與定時(shí)_第4頁(yè)
程序編寫(xiě)-延時(shí)與定時(shí)_第5頁(yè)
已閱讀5頁(yè),還剩73頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第二部分程序編寫(xiě)程序框架結(jié)構(gòu)(背住)整體框架結(jié)構(gòu)具體程序結(jié)構(gòu)

for(初始化表達(dá)式;條件表達(dá)式;增量表達(dá)式)

while

do…whileif()…elseswitch….case整體框架結(jié)構(gòu)(背?。?include<reg52.h>

宏定義或這全局變量延時(shí)子程序字符串顯示子程序

voidmain(viod)

{參量定義與調(diào)用子程序}中斷子程序While(表達(dá)式)

{語(yǔ)句(內(nèi)部可為空)}

特點(diǎn):先執(zhí)行和判斷表達(dá)式,后執(zhí)行語(yǔ)句。

原則:若表達(dá)式非0,即為真,那么執(zhí)行語(yǔ)句。否則跳出while語(yǔ)句。While和do…while簡(jiǎn)單小程序?qū)嵗?/p>

#include<reg52.h>voidmain(void){unsignedchari,sun;sum=0;i=1;

while(i<=100){sum=sum+i;i++;}P2=sum;}While和do…while#include<reg52.h>sbitP2_1=P2^0;unsignedinta;voidmain()//主函數(shù){ while(1!=0){ a=50000; P2_1=0;

while(a--!=0); P2_1=1; a=50000;

while(a--); }}用while語(yǔ)句控制P2口花樣閃爍

延時(shí)60msi從0到255,指示燈顯示數(shù)字#include<reg52.h>/******************************函數(shù)功能:延時(shí)約60ms(3*100*200=60000μs)***********************************/voiddelay60ms(void){unsignedcharm,n;

for(m=0;m<100;m++)

for(n=0;n<200;n++);}voidmain(void){unsignedchari;while(1)

{i=0;

while(i<0xff)

{P2=i;

delay60ms();

i++; }}}do…while先執(zhí)行循環(huán)體,后判斷的類(lèi)型do循環(huán)體

while(表達(dá)式);例子:用do..while

讓LED花樣閃爍程序下載步驟安裝MCU-VERSION2使用手冊(cè)中的USB轉(zhuǎn)串口K340定義COM4打開(kāi)應(yīng)用軟件中stc-isp下載點(diǎn)擊界面設(shè)置下載注意事項(xiàng)務(wù)必要斷電在變換代碼處打勾程序的反匯編復(fù)習(xí)其他高級(jí)操作單步執(zhí)行設(shè)置斷點(diǎn)端口查看查看窗口view_for(初始化表達(dá)式;條件表達(dá)式;增量表達(dá)式)

語(yǔ)句塊;

(背住)執(zhí)行過(guò)程eg:

初始化后首先看滿(mǎn)足條件表達(dá)式嗎?是,執(zhí)行語(yǔ)句塊并增量;否,退出循環(huán)。分號(hào)的問(wèn)題空語(yǔ)句;永久循環(huán)

具體編程應(yīng)用_P11單片機(jī)控制多盞LED實(shí)現(xiàn)彩燈顯示Voidmain(){unsignedcharI,sum;sum=0;

for(i=0;i<=10;i++)(無(wú)分號(hào))

{sum=sum+I;P0=sum;

}}程序講解與模仿一P2=0xef;

for(i=1;i<20000;i++);P2=0xdf;

for(i=1;i<20000;i++); P2=0xbf;

for(i=1;i<20000;i++); P2=0x7f;

for(i=1;i<20000;i++); P2=0xff;

for(i=1;i<20000;i++); P2=0x00;

for(i=1;i<20000;i++); }#include<reg52.h>voidmain(void){unsignedinti;P2=0xfe;

for(i=1;i<20000;i++);P2=0xfd;

for(i=1;i<20000;i++); P2=0xfb;

for(i=1;i<20000;i++); P2=0xf7;

for(i=1;i<20000;i++);思考:能否改成5萬(wàn)、6萬(wàn)、7萬(wàn)、8萬(wàn)等程序如何改進(jìn)程序改進(jìn)#include<reg52.h>voiddelay(void){unsignedinti;

for(i=1;i<20000;i++);}voidmain(void){P2=0xfe;delay();P2=0xfd;delay();P2=0xfb;delay();P2=0xf7;delay();P2=0xef;

delay();P2=0xdf;

delay(); P2=0xbf;

delay(); P2=0x7f;

delay(); P2=0xff;

delay(); P2=0x00;

delay(); }程序還能不能更簡(jiǎn)利用庫(kù)函數(shù)完成-更簡(jiǎn)#include<reg52.h>#include<intrins.h>unsignedinttemp;voiddelay(void){unsignedinti;

for(i=1;i<20000;i++);}voidmain(){temp=0xfe;while(1){P2=temp;

delay();temp=_irol_(temp,1);}}程序模仿二#include<reg52.h>unsignedcharLED;unsignedinti;delay(){

for(i=0;i<5000;i++);}main(){LED=0x01;while(1){P2=~LED;delay();LED<<=1;

if(LED==0)LED=0X01;}}時(shí)間延時(shí)計(jì)算

t=N*T(機(jī)器周期)=(3*5000+2)*1.085uS時(shí)間延時(shí)多用下面小子程序delay(){

for(i=0;i<n;i++)

for(i=0;i<m;i++);}t=N*T(機(jī)器周期)=(3*n*m+5*m+2)≈3*n*m練習(xí)讓p2-0閃爍,間隔30ms課后作業(yè):利用for循環(huán)設(shè)計(jì)一個(gè)鳴笛報(bào)警電路,該音頻信號(hào)發(fā)出1Khz信號(hào)If語(yǔ)句(1)結(jié)構(gòu)3種;

1、if(表達(dá)式)語(yǔ)句

2、if(表達(dá)式)語(yǔ)句1;

else

語(yǔ)句2;If(s1==0)P2=0X00;if(a>b)max=a;elsemax=b;If語(yǔ)句(2)If(表達(dá)式1)語(yǔ)句1;elseIf(表達(dá)式2)語(yǔ)句2;elseIf(表達(dá)式3)語(yǔ)句3;

else

語(yǔ)句4;用if語(yǔ)句控制p2口燈亮//實(shí)例:用if語(yǔ)句控制P0口8位LED的流水方向#include<reg52.h>//包含單片機(jī)寄存器的頭文件sbitS1=P1^4;//將S1位定義為P1.4sbitS2=P1^5;//將S2位定義為P1.5/*****************************函數(shù)功能:主函數(shù)*****************************/voidmain(void){while(1) { if(S1==0)//如果按鍵S1按下

P2=0x0f;//P2口高四位LED點(diǎn)亮

if(S2==0)//如果按鍵S2按下

P2=0xf0;//P2口低四位LED點(diǎn)亮

}}Switch…caseswitch(表達(dá)式)

{case常量表達(dá)式1;語(yǔ)句1;

break;case常量表達(dá)式2;語(yǔ)句2;

break;

……….default;

語(yǔ)句n+1;}實(shí)例當(dāng)i=1,第一個(gè)燈亮,依此類(lèi)推課后練習(xí)(獨(dú)立完成)第一個(gè)發(fā)光管以間隔200ms閃爍8個(gè)發(fā)光管由上至下間隔500ms流動(dòng),同時(shí)蜂鳴器發(fā)聲。8個(gè)發(fā)光管來(lái)回流動(dòng),間隔100ms,蜂鳴器發(fā)聲。8個(gè)發(fā)光管間隔200ms由上至下,再由下至上,再由上至下,再由下至上,然后全部熄滅再以300ms間隔全部閃爍5次。重復(fù)上面過(guò)程。蜂鳴器和繼電器硬件電路軟件編程練習(xí)繼電器有參和無(wú)參函數(shù)自己編寫(xiě)延時(shí)500ms的程序有參子程序調(diào)用#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint

sbitbuzzer=P3^4;

voiddelay(ucharz){

uchar

x,y;

for(x=1000;x>1;x--)

for(y=z;y>1;y--);}voidmain()//主函數(shù){while(1){ buzzer=0; delay(500); buzzer=1; delay(500);}}數(shù)碼管應(yīng)用課堂練習(xí):用按鍵計(jì)次顯示自己的學(xué)號(hào)用數(shù)碼管顯示你的學(xué)號(hào)硬件電路編寫(xiě)顯示一個(gè)數(shù)字的程序獨(dú)立按鍵位置:鍵盤(pán)和中斷一排下2個(gè)按鍵鍵盤(pán)方向問(wèn)題:以數(shù)碼管方向?yàn)闇?zhǔn),上上下下;與跳線(xiàn)相連,方向外外;硬件電路——具體電路獨(dú)立按鍵應(yīng)用防抖動(dòng)電路#include<reg52.h>sbitkey1=P1^0;sbitkey2=P1^1; sbitled1=P2^0; sbitled2=P2^1; voiddelay(unsigned

intt){unsignedint

i,j;

for(i=1000;i>0;i--)

for(j=t;j>0;j--);}voidmain(){while(1){

if(key1==0) { delay(7);

if(key1==0) { led1=~led1;

} } if(key2==0) { delay(7);

if(key2==0) { led2=~led2;

} }}}數(shù)碼管共陰極共陽(yáng)極使用LED顯示器時(shí),要注意區(qū)分這兩種不同的接法。為了顯示數(shù)字或字符,必須對(duì)數(shù)字或字符進(jìn)行編碼。七段數(shù)碼管加上一個(gè)小數(shù)點(diǎn),共計(jì)8段。因此為L(zhǎng)ED顯示器提供的編碼正好是一個(gè)字節(jié)。TX-1B實(shí)驗(yàn)板用共陰LED顯示器,根據(jù)電路連接圖顯示16進(jìn)制數(shù)的編碼已列在下表。

顯示原理共陰數(shù)碼管碼表

0x3f,0x06,0x5b,0x4f,0x66,0x6d,

0 1 2 345

0x7d,0x07,0x7f,0x6f,0x77,0x7c,

6 7 8 9AB

0x39,0x5e,0x79,0x71,0x00

CDEF 無(wú)顯示Led代碼查詢(xún)軟件應(yīng)用點(diǎn)擊界面共陰共陽(yáng)點(diǎn)擊生成代碼

LED數(shù)碼顯示方式及電路

靜態(tài)顯示方式LED顯示器工作方式有兩種:靜態(tài)顯示方式和動(dòng)態(tài)顯示方式。靜態(tài)顯示的特點(diǎn)是每個(gè)數(shù)碼管的段選必須接一個(gè)8位數(shù)據(jù)線(xiàn)來(lái)保持顯示的字形碼。當(dāng)送入一次字形碼后,顯示字形可一直保持,直到送入新字形碼為止。這種方法的優(yōu)點(diǎn)是占用CPU時(shí)間少,顯示便于監(jiān)測(cè)和控制。缺點(diǎn)是硬件電路比較復(fù)雜,成本較高。動(dòng)態(tài)顯示

動(dòng)態(tài)顯示的特點(diǎn)是將所有位數(shù)碼管的段選線(xiàn)并聯(lián)在一起,由位選線(xiàn)控制是哪一位數(shù)碼管有效。這樣一來(lái),就沒(méi)有必要每一位數(shù)碼管配一個(gè)鎖存器,從而大大地簡(jiǎn)化了硬件電路。選亮數(shù)碼管采用動(dòng)態(tài)掃描顯示。所謂動(dòng)態(tài)掃描顯示即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示。動(dòng)態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時(shí)應(yīng)略小于靜態(tài)顯示電路中的。我們實(shí)際板子數(shù)碼管接口位選控制:

P1_0,P1_1,P1_2段選控制:

P2口在驅(qū)動(dòng)芯片上:

74HC13874HC245在驅(qū)動(dòng)方式上:動(dòng)態(tài)顯示數(shù)碼管優(yōu)點(diǎn)缺點(diǎn)動(dòng)態(tài)顯示:代碼簡(jiǎn)潔邏輯清晰流動(dòng)顯示控制延時(shí)

靜態(tài)顯示:顯示穩(wěn)定調(diào)用繁瑣74HC138譯碼器74HC138譯碼器74HC24574HC245數(shù)組一維數(shù)組inta[7]={0,1,2,3,4,5,6}二維數(shù)組unsignedcharx[3][4]字符數(shù)組chara[2]={‘B’,‘E’,‘I’}charstr[]=“Now,Temeratureis:”P(pán)12按鍵計(jì)次顯示程序3.180C51的中斷系統(tǒng)

3.1.180C51的中斷系統(tǒng)結(jié)構(gòu)一、中斷的概念

CPU在處理某一事件A時(shí),發(fā)生了另一事件B請(qǐng)求CPU迅速去處理(中斷發(fā)生);

CPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));待CPU將事件B處理完畢后,再回到原來(lái)事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過(guò)程稱(chēng)為中斷。MCS-51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)執(zhí)行主程序主程序繼續(xù)執(zhí)行主程序斷點(diǎn)中斷請(qǐng)求中斷響應(yīng)執(zhí)行中斷處理程序中斷返回引起CPU中斷的根源,稱(chēng)為中斷源。中斷源向CPU提出的中斷請(qǐng)求。CPU暫時(shí)中斷原來(lái)的事務(wù)A,轉(zhuǎn)去處理事件B。對(duì)事件B處理完畢后,再回到原來(lái)被中斷的地方(即斷點(diǎn)),稱(chēng)為中斷返回。實(shí)現(xiàn)上述中斷功能的部件稱(chēng)為中斷系統(tǒng)(中斷機(jī)構(gòu))。

隨著計(jì)算機(jī)技術(shù)的應(yīng)用,人們發(fā)現(xiàn)中斷技術(shù)不僅解決了快速主機(jī)與慢速I(mǎi)/O設(shè)備的數(shù)據(jù)傳送問(wèn)題,而且還具有如下優(yōu)點(diǎn):

分時(shí)操作。CPU可以分時(shí)為多個(gè)I/O設(shè)備服務(wù),提高了計(jì)算機(jī)的利用率;實(shí)時(shí)響應(yīng)。CPU能夠及時(shí)處理應(yīng)用系統(tǒng)的隨機(jī)事件,系統(tǒng)的實(shí)時(shí)性大大增強(qiáng);可靠性高。CPU具有處理設(shè)備故障及掉電等突發(fā)性事件能力,從而使系統(tǒng)可靠性提高。80C51中斷系統(tǒng)的結(jié)構(gòu)

80C51的中斷系統(tǒng)有5個(gè)中斷源(8052有6個(gè))

,2個(gè)優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷嵌套

。

1、(P3.2)可由IT0(TCON.0)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測(cè)到P3.2引腳上出現(xiàn)有效的中斷信號(hào)時(shí),中斷標(biāo)志IE0(TCON.1)置1,向CPU申請(qǐng)中斷。

2、(P3.3)可由IT1(TCON.2)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測(cè)到P3.3引腳上出現(xiàn)有效的中斷信號(hào)時(shí),中斷標(biāo)志IE1(TCON.3)置1,向CPU申請(qǐng)中斷。

3、TF0(TCON.5),片內(nèi)定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志。當(dāng)定時(shí)/計(jì)數(shù)器T0發(fā)生溢出時(shí),置位TF0,并向CPU申請(qǐng)中斷。

4、TF1(TCON.7),片內(nèi)定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志。當(dāng)定時(shí)/計(jì)數(shù)器T1發(fā)生溢出時(shí),置位TF1,并向CPU申請(qǐng)中斷。

5、RI(SCON.0)或TI(SCON.1),串行口中斷請(qǐng)求標(biāo)志。當(dāng)串行口接收完一幀串行數(shù)據(jù)時(shí)置位RI或當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)時(shí)置位TI,向CPU申請(qǐng)中斷。

二、中斷請(qǐng)求標(biāo)志1、TCON的中斷標(biāo)志IT0(TCON.0),外部中斷0觸發(fā)方式控制位。當(dāng)IT0=0時(shí),為電平觸發(fā)方式。當(dāng)IT0=1時(shí),為邊沿觸發(fā)方式(下降沿有效)。IE0(TCON.1),外部中斷0中斷請(qǐng)求標(biāo)志位。IT1(TCON.2),外部中斷1觸發(fā)方式控制位。IE1(TCON.3),外部中斷1中斷請(qǐng)求標(biāo)志位。TF0(TCON.5),定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志位。TF1(TCON.7),定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位。

2、SCON的中斷標(biāo)志RI(SCON.0),串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時(shí),每接收完一個(gè)串行幀,由硬件置位RI。注意,RI必須由軟件清除。TI(SCON.1),串行口發(fā)送中斷標(biāo)志位。當(dāng)CPU將一個(gè)發(fā)送數(shù)據(jù)寫(xiě)入串行口發(fā)送緩沖器時(shí),就啟動(dòng)了發(fā)送過(guò)程。每發(fā)送完一個(gè)串行幀,由硬件置位TI。CPU響應(yīng)中斷時(shí),不能自動(dòng)清除TI,TI必須由軟件清除。

一、中斷允許控制

CPU對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開(kāi)放和屏蔽是由中斷允許寄存器IE控制的。3.1.380C51中斷的控制

EX0(IE.0),外部中斷0允許位;ET0(IE.1),定時(shí)/計(jì)數(shù)器T0中斷允許位;EX1(IE.2),外部中斷0允許位;ET1(IE.3),定時(shí)/計(jì)數(shù)器T1中斷允許位;ES(IE.4),串行口中斷允許位;EA(IE.7),CPU中斷允許(總允許)位。二、中斷優(yōu)先級(jí)控制

80C51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),即可實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套。每個(gè)中斷源的中斷優(yōu)先級(jí)都是由中斷優(yōu)先級(jí)寄存器IP中的相應(yīng)位的狀態(tài)來(lái)規(guī)定的

。PX0(IP.0),外部中斷0優(yōu)先級(jí)設(shè)定位;PT0(IP.1),定時(shí)/計(jì)數(shù)器T0優(yōu)先級(jí)設(shè)定位;PX1(IP.2),外部中斷0優(yōu)先級(jí)設(shè)定位;PT1(IP.3),定時(shí)/計(jì)數(shù)器T1優(yōu)先級(jí)設(shè)定位;PS

(IP.4),串行口優(yōu)先級(jí)設(shè)定位;PT2(IP.5),定時(shí)/計(jì)數(shù)器T2優(yōu)先級(jí)設(shè)定位。PX0(IPH.0),外部中斷0優(yōu)先級(jí)設(shè)定位;PT0(IPH.1),定時(shí)/計(jì)數(shù)器T0優(yōu)先級(jí)設(shè)定位;PX1(IPH.2),外部中斷0優(yōu)先級(jí)設(shè)定位;PT1(IPH.3),定時(shí)/計(jì)數(shù)器T1優(yōu)先級(jí)設(shè)定位;PS

(IPH.4),串行口優(yōu)先級(jí)設(shè)定位;PT2(IPH.5),定時(shí)/計(jì)數(shù)器T2優(yōu)先級(jí)設(shè)定位。而80C52單片機(jī)有四個(gè)中斷優(yōu)先級(jí),即可實(shí)現(xiàn)四級(jí)中斷服務(wù)嵌套。每個(gè)中斷源的中斷優(yōu)先級(jí)由中斷優(yōu)先級(jí)寄存器IP和IPH中的相應(yīng)位的狀態(tài)來(lái)規(guī)定的

。

同一優(yōu)先級(jí)中的中斷申請(qǐng)不止一個(gè)時(shí),則有中斷優(yōu)先權(quán)排隊(duì)問(wèn)題。同一優(yōu)先級(jí)的中斷優(yōu)先權(quán)排隊(duì),由中斷系統(tǒng)硬件確定的自然優(yōu)先級(jí)形成,其排列如所示:設(shè)置52單片機(jī)的4個(gè)中斷源,使他們的優(yōu)順序?yàn)門(mén)1,INT1,INT0,T0.

IPH=0X08; PT1=1;

IP=0X40; PX1=1;80C51單片機(jī)的中斷優(yōu)先級(jí)有三條原則:CPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級(jí)別最高的中斷請(qǐng)求。正在進(jìn)行的中斷過(guò)程不能被新的同級(jí)或低優(yōu)先級(jí)的中斷請(qǐng)求所中斷。正在進(jìn)行的低優(yōu)先級(jí)中斷服務(wù),能被高優(yōu)先級(jí)中斷請(qǐng)求所中斷。為了實(shí)現(xiàn)上述后兩條原則,中斷系統(tǒng)內(nèi)部設(shè)有兩個(gè)用戶(hù)不能尋址的優(yōu)先級(jí)狀態(tài)觸發(fā)器。其中一個(gè)置1,表示正在響應(yīng)高優(yōu)先級(jí)的中斷,它將阻斷后來(lái)所有的中斷請(qǐng)求;另一個(gè)置1,表示正在響應(yīng)低優(yōu)先級(jí)中斷,它將阻斷后來(lái)所有的低優(yōu)先級(jí)中斷請(qǐng)求。3.280C51單片機(jī)中斷處理過(guò)程

中斷響應(yīng)條件中斷源有中斷請(qǐng)求;此中斷源的中斷允許位為1;

CPU開(kāi)中斷(即EA=1)。以上三條同時(shí)滿(mǎn)足時(shí),CPU才有可能響應(yīng)中斷。3.2.1中斷響應(yīng)條件和時(shí)間

3.380C51的定時(shí)/計(jì)數(shù)器

實(shí)現(xiàn)定時(shí)功能,比較方便的辦法是利用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器。也可以采用下面三種方法:軟件定時(shí):軟件定時(shí)不占用硬件資源,但占用了CPU時(shí)間,降低了CPU的利用率。采用時(shí)基電路定時(shí):例如采用555電路,外接必要的元器件(電阻和電容),即可構(gòu)成硬件定時(shí)電路。但在硬件連接好以后,定時(shí)值與定時(shí)范圍不能由軟件進(jìn)行控制和修改,即不可編程。采用可編程芯片定時(shí):這種定時(shí)芯片的定時(shí)值及定時(shí)范圍很容易用軟件來(lái)確定和修改,此種芯片定時(shí)功能強(qiáng),使用靈活。在單片機(jī)的定時(shí)/計(jì)數(shù)器不夠用時(shí),可以考慮進(jìn)行擴(kuò)展。3.3.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)和工作原理

一、定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)定時(shí)/計(jì)數(shù)器的實(shí)質(zhì)是加1計(jì)數(shù)器(16位),由高8位和低8位兩個(gè)寄存器組成。TMOD是定時(shí)/計(jì)數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啟動(dòng)和停止及設(shè)置溢出標(biāo)志。

二、定時(shí)/計(jì)數(shù)器的工作原理

加1計(jì)數(shù)器輸入的計(jì)數(shù)脈沖有兩個(gè)來(lái)源,一個(gè)是由系統(tǒng)的時(shí)鐘振蕩器輸出脈沖經(jīng)12分頻后送來(lái);一個(gè)是T0或T1引腳輸入的外部脈沖源。每來(lái)一個(gè)脈沖計(jì)數(shù)器加1,當(dāng)加到計(jì)數(shù)器為全1時(shí),再輸入一個(gè)脈沖就使計(jì)數(shù)器回零,且計(jì)數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請(qǐng)求(定時(shí)/計(jì)數(shù)器中斷允許時(shí))。如果定時(shí)/計(jì)數(shù)器工作于定時(shí)模式,則表示定時(shí)時(shí)間已到;如果工作于計(jì)數(shù)模式,則表示計(jì)數(shù)值已滿(mǎn)。

可見(jiàn),由溢出時(shí)計(jì)數(shù)器的值減去計(jì)數(shù)初值才是加1計(jì)數(shù)器的計(jì)數(shù)值。

設(shè)置為定時(shí)器模式時(shí),加1計(jì)數(shù)器是對(duì)內(nèi)部機(jī)器周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時(shí)時(shí)間t

。設(shè)置為計(jì)數(shù)器模式時(shí),外部事件計(jì)數(shù)脈沖由T0或T1引腳輸入到計(jì)數(shù)器。在每個(gè)機(jī)器周期的S5P2期間采樣T0、T1引腳電平。當(dāng)某周期采樣到一高電平輸入,而下一周期又采樣到一低電平時(shí),則計(jì)數(shù)器加1,更新的計(jì)數(shù)值在下一個(gè)機(jī)器周期的S3P1期間裝入計(jì)數(shù)器。由于檢測(cè)一個(gè)從1到0的下降沿需要2個(gè)機(jī)器周期,因此要求被采樣的電平至少要維持一個(gè)機(jī)器周期。當(dāng)晶振頻率為12MHz時(shí),最高計(jì)數(shù)頻率不超過(guò)1/2MHz,即計(jì)數(shù)脈沖的周期要大于2s。

3.3.2定時(shí)/計(jì)數(shù)器的控制

80C51單片機(jī)定時(shí)/計(jì)數(shù)器的工作由兩個(gè)特殊功能寄存器控制。TMOD用于設(shè)置其工作方式;TCON用于控制其啟動(dòng)和中斷申請(qǐng)。一、工作方式寄存器TMOD

工作方式寄存器TMOD用于設(shè)置定時(shí)/計(jì)數(shù)器的工作方式,低四位用于T0,高四位用于T1。其格式如下:GATE:門(mén)控位。GATE=0時(shí),只要用軟件使TCON中的TR0或TR1為1,就可以啟動(dòng)定時(shí)/計(jì)數(shù)器工作;GATA=1時(shí),要用軟件使TR0或TR1為1,同時(shí)外部中斷引腳或也為高電平時(shí),才能啟動(dòng)定時(shí)/計(jì)數(shù)器工作。即此時(shí)定時(shí)器的啟動(dòng)條件,加上了或引腳為高電平這一條件。

:定時(shí)/計(jì)數(shù)模式選擇位。=0為定時(shí)模式;=1為計(jì)數(shù)模式。M1M0:工作方式設(shè)置位。定時(shí)/計(jì)數(shù)器有四種工作方式,由M1M0進(jìn)行設(shè)置。

二、控制寄存器TCON

TCON的低4位用于控制外部中斷,已在前面介紹。TCON的高4位用于控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和中斷申請(qǐng)。其格式如下:TF1(TCON.7):T1溢出中斷請(qǐng)求標(biāo)志位。T1計(jì)數(shù)溢出時(shí)由硬件自動(dòng)置TF1為1。CPU響應(yīng)中斷后TF1由硬件自動(dòng)清0。T1工作時(shí),CPU可隨時(shí)查詢(xún)TF1的狀態(tài)。所以,TF1可用作查詢(xún)測(cè)試的標(biāo)志。TF1也可以用軟件置1或清0,同硬件置1或清0的效果一樣。TR1(TCON.6):T1運(yùn)行控制位。TR1置1時(shí),T1開(kāi)始工作;TR1置0時(shí),T1停止工作。TR1由軟件置1或清0。所以,用軟件可控制定時(shí)/計(jì)數(shù)器的啟動(dòng)與停止。TF0(TCON.5):T0溢出中斷請(qǐng)求標(biāo)志位,其功能與TF1類(lèi)同。TR0(TCON.4):T0運(yùn)行控制位,其功能與TR1類(lèi)同。

3.3.3定時(shí)/計(jì)數(shù)器的工作方式

一、方式0

方式0為13位計(jì)數(shù),由TL0的低5位(高3位未用)和TH0的8位組成。TL0的低5位溢

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論