單片機定時器c語言
① 求單片機定時器簡單程序(c語言)詳解。不勝感激~
用定時器0中斷做流水燈,程序如下:#include<reg52.h>#include<intrins.h> //包含_crol_()循環左移函數
unsigned char temp,count;void init() //初始化函數{ TMOD=0x01;//設置定時器0為工作方式1 TH0=(65536-50000)/256;//裝初值,高8位 TL0=(65536-50000)%256;//裝初值,低8位 EA=1;//開總中斷 ET0=1;//開定時器0中斷 TR0=1;//啟動定時器0 temp=0xfe; count=0;//記數值清0}void main(){ init(); while(1){ P1=temp;}}void timer0() interrupt 1 using 1 //定時器0中斷函數{ TH0=(65536-50000)/256;//重裝初值,同上 TL0=(65536-50000)%256; count++;//計數值加1 if(count==10)//500ms{ count=0;//計數值清0 temp=_crol_(temp,1);循環左移一位}
② 51單片機定時中斷C語言的寫法步驟,可追加分數
程序說明:51單片機定時器0工作於方式一,定時50ms中斷一次
晶振為12M
#include
void
main
{
TOMD
=
0X01;
//配置定時器0工作於方式一
TH1
=
(65536-50000)/256;
//高八位裝入初值
TL1
=
(65536-50000)%256;
//低八位裝入初值
ET0
=
1;
//開定時器0中斷
EA
=
1;
//開總中斷
TR0
=
1;
//啟動定時器0
while(1)
{
;
}
}
void
Timer0_int()
interrupt
1
{
//重新裝初值
TH1
=
(65536-50000)/256;
//高八位裝入初值
TL1
=
(65536-50000)%256;
//低八位裝入初值
}
/***************************************************************************************************************/
上面是比較好理解的。如果實在要求簡潔的話,看下面的,跟上面功能一樣
#include
void
main
{
TOMD
=
0X01;
//配置定時器0工作於方式一
TH1
=
0x3c;
//高八位裝入初值
TL1
=
0xb0;
//低八位裝入初值
IE
=
0x82;//開總中斷並開定時器0中斷
TR0
=
1;
//啟動定時器0
while(1)
{
;
}
}
void
Timer0_int()
interrupt
1
{
//重新裝初值
TH1
=
0x3c;
//高八位裝入初值
TL1
=
0xb0;
//低八位裝入初值}
③ 單片機c語言里怎麼用2個定時器
是51單片機嗎?
如果是51單片機,你可以使用tmod設置兩個定時器,然後使用tr0、tr1分別啟動兩個定時器。pt0置為「1」,就可以中斷定時器1的服務函數,相反,如果pt1置為「1」就可以中斷定時器0的服務函數。
如果不設置pt的值,默認為「0」,這樣的話,t0和t1誰也不能中斷誰。
④ 單片機C語言定時器如何調用
單片機中通過中斷的方式來調用定時器。
具體的調用方式可以參考通過如下程序:
程序功能:利用定時器進行定時,實現每秒中led閃爍一次
#include<reg52.h>
sbitled=P0^0;
unsignedintnum;
voidmain(void)
{
TMOD=0x00;//工作方式0
TH0=(8192-5000)/32;//12M晶振下定時5ms
TL0=(8192-5000)%32;
EA=1; //開總中斷
ET0=1; //開定時器中斷
TR0=1; //啟動定時器
while(1)
{
if(num==200) //定時1秒鍾到
{
num=0; //計數器清零
led=~led; //led燈取反,實現1秒閃爍一次
}
}
}
voidtimer()interrupt1//定時器1工作與方式0
{
TH0=(8192-5000)/32;//重裝初值
TL0=(8192-5000)%32;
num++; //計數器加1
}
⑤ 單片機C語言用定時器1工作方式1怎麼寫
#include<reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uinti,num;
voidmain()
{
i=0;
num=0;
TMOD=0x10;//設置定時器1為工作方式1【查看TMOD每一位的含義,你就知道怎麼設置了】
EA=1;//開總中斷
ET1=1;//開定時器1中斷
TR1=1;//啟動定時器0
TH0=(65536-50000)/256;//定時器0計數初值高位
TL0=(65536-50000)%256;//定時器0計數初值低位
P2=0xFE;
P0=0xc0;
while(1)
{
if(i==10)
{
P2=0xff;
}
if(i==20)
{
i=0;
P2=0xfe;
num++;
if(num==10)num=0;
P0=table[num];
}
}
}
voidtime()interrupt1
{
TH0=(65536-50000)/256;//計數初值重載
TL0=(65536-50000)%256;
i++;
}
⑥ 利用51單片機定時器編寫一個C語言程序,實現一個發光二極體定時亮、滅,要求亮一秒、滅一秒交替閃爍不
利用51單片機定時器編寫一個C語言程序,實現一個發光二極體定時亮、滅,
要求亮一秒、滅一秒交替閃爍不止。最好有硬體電路雹猜簡圖
電路源敏型與程序如下:
晶振頻拿孝率,採用 12MHz。
定時器 0,定時 8ms。
中斷 125 次,即為一秒。令 IO 介面取反即可。