C51单片机定时器1以方式1定时1秒如何设置?

求大神指点 晶振频率为11.0592MHz 使用定时器1以方式1定时1s 程序代码如下 但是结果不理想 求指点 谢谢!
void DS()
{
int i=20;
while(i--)
{
TMOD&=0x10; //设置T1为定时工作方式1。
TMOD|=0x00;
TH1=0x4c; //设置初始值。
TL1=0x00;
IE=0x00; //禁止中断
TR1=1; //启动定时器1
while(1)
{
if(TF1)
{
TF1=0;
TH1=0x4c;
TL1=0x00;
break;
}
}
}

1、先打开我们熟悉的单片机c51编程软件——keil,先把主方法写好。

2、然后,我们要定义两个变量。

3、接着,设定好定时器的工作方式。

4、设置中断发生的机制。

5、最后,我们要加进这几行代码进行初值的重装。

6、最后,把if语句补充完毕就可以了。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-26
在中断里面写上累加100次的变量,就等于是1s了):
#include <reg51.h>

void InitTimer1(void)
{
TMOD = 0x10;
TH1 = 0x0DC;
TL1 = 0x00;
EA = 1;
ET1 = 1;
TR1 = 1;
}

void main(void)
{
InitTimer1();
}

void Timer1Interrupt(void) interrupt 3
{
TH1 = 0x0DC;
TL1 = 0x00;
//add your code here!
}
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。
定时器人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多。人们甚至将定时器用在了军事方面,制成了定时炸弹,定时雷管。现在的不少家用电器都安装了定时器来控制开关或工作时间。
第2个回答  2013-12-28
有个东东叫单片机小精灵,应该能解决你的问题,呵呵,最近变懒了。。。

下面这个是10ms定时程序,定时器1,方式1,中断自动重装(PS:你可以在中断里面写上累加100次的变量,就等于是1s了):
#include <reg51.h>

void InitTimer1(void)
{
TMOD = 0x10;
TH1 = 0x0DC;
TL1 = 0x00;
EA = 1;
ET1 = 1;
TR1 = 1;
}

void main(void)
{
InitTimer1();
}

void Timer1Interrupt(void) interrupt 3
{
TH1 = 0x0DC;
TL1 = 0x00;
//add your code here!
}
第3个回答  2013-12-20
用定时计数器的方式2来计时(8位初值自动重装,可以很大程度上减少误差)
TH0=6;
TL0=6;
这样250微秒产生一次中断信号,4000次中断即为1秒
第4个回答  2013-12-21
这代码结构……
你还是老实定时一个小的时间,再累加到1S吧,这样容易理解和实现。追问

求指点 我的想法是定时50ms 循环20次 不知道问题出在哪里?

C51单片机定时器1以方式1定时1秒如何设置?
1、先打开我们熟悉的单片机c51编程软件——keil,先把主方法写好。2、然后,我们要定义两个变量。3、接着,设定好定时器的工作方式。4、设置中断发生的机制。5、最后,我们要加进这几行代码进行初值的重装。6、最后,把if语句补充完毕就可以了。

.已知51单片机系统晶振频率为12MHz,请利用定时器1工作方式1,中断方式...
MOVTMOD,#10H;设置T1定时方式1 MOVTH1,#(65536-50000)\/256;送入初始值。MOVTL1,#(65536-50000)MOD256;定时50000us@12MHz MOVIE,#10001000B;开放总中断和T1中断。SETBTR1;启动T1 MOVTH1,#(65536-50000)\/256;重新送入初始值。MOVTL1,#(65536-50000)MOD256;定时50000us@12MHz R...

c51单片机,用c语言写一个p1口并行输出,要求亮1秒,灭1秒。
用1S定时,假设定时器基准为1ms if(t_1s >= 1000){ P1 ^= 0XFF;t_1s = 0;}

c编程时,51单片机怎么用定时器写一个延时1ms的子函数
51单片机的定时器工作方式有4中,其中3种需要在中断函数中重装初值,而且C51明确规定中断函数不能传入参数也不能返回参数,那么这样一来就只能用不用重装初值的工作方式2了,我给出了工作方式2的初始化函数:void init(unsigned int x){ TMOD=0x02;TH0=x;TL0=x;EA=1;ET0=1;TR0=1;} 这样将x...

stc定时器设置1s
stc定时器设置1s方法:1、打开单片机c51编程软件keil,把主定时器方法写好。2、要定义两个变量时间间隔。3、设定好定时器的工作方式,设置中断发生的机制。4、把if语句补充完毕即可使用。

单片机c51系列定时器和计数器设定定时时间,和计数个数要怎么设置
可以用相关辅助软件,比如STC ISP下载软件里有定时器计算生成工具,并且有各种例程。单片机助手 这个软件里也有定时器程序生成功能

怎样使用51单片机的定时器?
方式1:16位加1计数器,由TH和TL组成,在方式1的工作情况和方式0的相同,只是计数器值是方式0的8倍。1 1\/3 方式2:计数器被拆成一个8位寄存器TH和一个8位计数器TL,CPU对它们初始化时必须送相同的定时初值。当计数器启动后,TL按8位加1计数,当它计满回零时,一方面向CPU发送溢出中断请求,...

...1秒的延时TH0和TL0分别要多少?用的51单片机
2012-05-19 利用定时器T0的工作方式1实现1秒钟延时程序(单片机) 16 2012-09-30 单片机小程序:用定时器T0方式1,延时一秒怎么写?晶振为12 2 2015-04-23 51单片机定时器0,TH0和TL0 计算时间? 3 2014-01-04 C51单片机定时器1以方式1定时1秒如何设置? 3 2012-12-01 51单片机调用定时器0做延时函数,...

c51单片机中定时器工作方式
一、方式0 方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。定时器模式时有:N=t\/ Tcy 计数初值计算的公式为:定时器的初值还可以采用计数个数直接取补法获得。计数模式时,计数脉冲是T0引脚上的...

C51单片机晶振频率为12MHz,设计程序要求应用定时器T1定时从P1.1引脚输出...
1000HZ,周期是1ms,半个周期500us TMOD=0x10;TH0=(65536-500)\/256;TL0=(65536-500)%256;ET1=1;∥开中断 EA=1;∥开总中断 TR1=1;中断程序里将p1.1取反即可。

相似回答