<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機的定時(shí)器中斷0

單片機的定時(shí)器中斷0

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò ) 收藏
定時(shí)器工作的流程可以按照這個(gè)順序(以51為例用定時(shí)器0方式一產(chǎn)生50毫秒的定時(shí))
1、確定使用哪個(gè)定時(shí)器,使用哪種方式,這一步通過(guò)TMOD設置,TMOD的低四位是設置定時(shí)器0的,高四位是用來(lái)設置定時(shí)器1的,其中的M0,M1是用來(lái)設置定時(shí)器工作在哪種方式,GATE一般用不要設置,C/T是選擇計數模式還是定時(shí)模式的,如:TMOD = 0X01,就說(shuō)明定時(shí)器0工作在方式1。
2、接下來(lái)就要設置定時(shí)的時(shí)間,用定時(shí)器定時(shí)50毫秒,可以用這種方式TH0 = (65535 - 50000) / 256,TL0 = (65535 - 50000) % 256;可以這樣理解:因為這是定時(shí)器的初值,也就是說(shuō)計數脈沖就是在這個(gè)數的基礎上向上遞增,到達65535后就溢出產(chǎn)生中斷
3、第三步就要打開(kāi)中斷了,使用IE寄存器,我一般是對各個(gè)位進(jìn)行單獨設置,這樣看起來(lái)感覺(jué)更好,首先打開(kāi)總中斷EA = 1,這一步是所有中斷所必須的,然后打開(kāi)定時(shí)器0中斷,ET0 =1;
4、這時(shí)準備工作都準備好了就要開(kāi)始啟動(dòng)定時(shí)器了,使用TCON寄存器,TR0 = 1,到現在為止就實(shí)現了一個(gè)50毫秒的定時(shí)了;
總結一下:TMOD = 0X01; TH0 = (65535 - 5000) / 256; TL0 = (65535 - 50000) % 256; EA = 1; ET0 = 1; TR0 = 1,至于那個(gè)中斷函數我就不寫(xiě)了,要注意的是方式0 ,1, 3是不能自動(dòng)重裝的,所以得在中斷函數中重新對TH0 ,TL0賦初值

TMOD


TMOD:定時(shí)器/計數器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER)
定時(shí)器/計數器模式控制寄存器TMOD是一個(gè)逐位定義的8位寄存器,但只能使用字節尋址,其字節地址為89H。
其格式為:

工作原理

其中低四位(即D0 ~ D3)定義定時(shí)器/計數器T0,高四位(即D4 ~ D7)定義定時(shí)器/計數器T1。

Ⅰ,GATE——門(mén)控制。

●GATE=1時(shí),“與門(mén)”的輸出信號K由INTx輸入電平和TRx位的狀態(tài)一起決定(即此時(shí)K=TRx·INTx),當且僅當TRx=1,INTx=1(高電平)時(shí),計數啟動(dòng);否則,計數停止。
當INT0引腳為高電平時(shí)且TR0置位,TR0=1;啟動(dòng)定時(shí)器T0;
當INT1引腳為高電平時(shí)且TR1置位,TR1=1;啟動(dòng)定時(shí)器T1。
●GATE=0時(shí),“或門(mén)”輸出恒為1,“與門(mén)”的輸出信號K由TRx決定(即此時(shí)K=TRx),定時(shí)器不受INTx輸入電平的影響,由TRx直接控制定時(shí)器的啟動(dòng)和停止。
當TR0=1,啟動(dòng)定時(shí)器T0。
當TR1=1,啟動(dòng)定時(shí)器T1。

Ⅱ,C/T——功能選擇位

C/T=0時(shí)為定時(shí)功能: 加1計數器對脈沖f進(jìn)行計數,每來(lái)一個(gè)脈沖,計數器加1,直到計時(shí)器TFx滿(mǎn)溢出;
C/T=1時(shí)為計數功能: 加1計數器對來(lái)自輸入引腳T0(P3.4)和T1(P3.5)的外信號脈沖進(jìn)行計數,每來(lái)一個(gè)脈沖,計數器加1,直到計時(shí)器TFx滿(mǎn)溢出;

Ⅲ,M0、M1——方式選擇功能

MCS-51的定時(shí)器T0有4種工作方式:方式0,方式1,方式2,方式3。
MCS-51的定時(shí)器T1有3種工作方式:方式0,方式1,方式2。
M1
M0
工作方式
功能說(shuō)明
0
0
方式0
13位定時(shí)器/計數器
0
1
方式1
16位定時(shí)器/計數器
1
0
方式2
自動(dòng)重載8位定時(shí)器/計數器
1
1
方式3
T0分為2個(gè)8位獨立計數器,T1停止計數

#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit D1=P2^0;
uchar num,time;
uchar wnum=0x00;
uchar code dbit[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段選,選擇要顯示的數字
//uchar code wnum[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};//八位數碼管
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=0;y<113;y++)
{
}
}
}
void main()
{
P1=wnum;
time=0;
num=0;
TMOD=0x01;//設置定時(shí)器0為工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//打開(kāi)中斷總開(kāi)關(guān)
ET0=1;//開(kāi)定時(shí)器0中斷
TR0=1;//啟動(dòng)定時(shí)器0
while(1)
{
if(time==20)
{
D1=~D1;
time=0;
num++;
num=num%10;
if(num==10)
{
num=0;
}
P0=dbit[num];
}
}
}
void duan() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
}


關(guān)鍵詞: 單片機定時(shí)器中斷

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>