单片机定时器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 接口取反即可。