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

作者&投稿:学程 (若有异议请与网页底部的电邮联系)
如何利用定时器T0的工作方式1实现1秒钟延时程序(单片机)?~

1、#include
2、#define uchar unsigned char
3、#define uint unsigned int
4、sbit LED = P0^0;uchar T_Count = 0;void main(){TMOD = 0x01;TH0 = (65535-50000)/256;TL0 = (65535-50000)%256;IE = 0x82;TR0 = 1;while(1);}
5、void LED_Flash() interrupt 1{TH0 = (65535-50000)/256;TL0 = (65535-50000)%256;if(++T_Count == 20){LED = !LED;T_Count = 0;}}
6、这个程序是1秒钟LED灯会亮与灭显示。
1单片机,拥有两个定时器,用来中断计数,分别是T0和T1。而52单片机和51单片机的定时器是一样的,只是52比51多了一个定时器/计数器T2,它们的设置都大同小异。

你的TMOD设置错了,实际延时程序用的是定时器1,但你初始化是TMOD=0x01,定时器1工作于模式0,定时器0才工作于模式1,模式0是13位定时器模式,最大值8192就溢出了。所以出现你的错误。可以修改如下:
main()
{
TMOD=0x10;
.....
}

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

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

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

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

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

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



在中断里面写上累加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系列的单片机一般不具备自编程能力。
定时器人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。定时器确实是一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多。人们甚至将定时器用在了军事方面,制成了定时炸弹,定时雷管。现在的不少家用电器都安装了定时器来控制开关或工作时间。

有个东东叫单片机小精灵,应该能解决你的问题,呵呵,最近变懒了。。。

下面这个是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!
}

用定时计数器的方式2来计时(8位初值自动重装,可以很大程度上减少误差)
TH0=6;
TL0=6;
这样250微秒产生一次中断信号,4000次中断即为1秒

这代码结构……
你还是老实定时一个小的时间,再累加到1S吧,这样容易理解和实现。


单片机定时器ET0=1是什么意思?
单片机定时 ET0=1的意思是51单片机的定时器0允许中断。ET0是51系列单片机定时器0的中断允许开关,定时器中断是为了满足定时或计数溢出处理的需要而设置的,当发生计数溢出时,表示定时时间已到或者计数值已满,接着就以计数溢出信号作为中断请求去置位一个溢出标志位。这种中断请求是在单片机芯片内部发生的...

51系列单片机的定时器和计数器有哪几种工作方式?
标准8051单片机内部有2个定时器\/计数器 分别是T0和T1。每个定时器有4种工作方式,方式0:13位定时计数方式,最大计数值为2^13=8192,定时8192个机器周期。1:16位定时 \/计数器模式方式2:8位可重装载定时 \/计数器模式方式3:两个单独8位定时 \/计数器模式定时器1只有三种方式,同上面三种。要讲定时...

请问怎么同时使用51单片机的定时器0和定时器一进行定时啊? (请各位...
定时,也不需要用两个定时器呀。用T0定时,T1控制波特率,一般就够用了。你看电子时钟:时时:分分:秒秒。秒,是1秒加一次一;分,是60秒加一次一;时,是3600秒加一次一。可能还有定时打铃的时刻等等。这么多事,用一个T0定时就都解决了。

什么是51单片机内部定时器\/计数器0的启动控制位
TR1。51单片机内部定时器是根据机器内部的时钟或者是外部的脉冲信号对寄存器中的数据加1,TR1是51单片机内部定时器\/计数器0的启动控制位,51单片机定时器,既可以定时,也可以计数,所以称之为定时器\/计数器。

51单片机定时器1方式2怎么设置为什么TMOD=0x20(是怎么换算得) 定时...
1、首先第一步是定时器2是新增资源,也是51单片机定时器里面功能最强大的一个定时器。注意的是掌握好定时器2还是非常有必要的。2、然后就是定时器2是一个16位定时器\/计数器,注意的是通过设置特殊功能寄存器T2CON中的C\/T2位可将其设置为定时器或是计数器。3、接着就是通过设置T2CON中的工作模式...

51单片机采用12Mhz晶振,采用定时工作方式1,定时时间为:40毫秒,计算出...
T0方式1为16位定时计数器。计满TL0和TH0需要 2^16 =65536个数,设时钟频率为 12MHz , 此时 1 个机器周期 = 12个时钟周期 = 1µs, 即计数一次为1µs,现要计时40毫秒=40000us, 即计数40000次, 显然在TH0T和TL0中要预先装入一个数值N, 使 N + 40000 = 65536 , 计算得 ...

MCS-51 单片机定时器\/计数器1的中断入口地址是
答案是D.1BH 因为:外中断0——03h 定时器0——0bh 外中断1——13h 定时器1——1bh 串口———23h 请背熟

51单片机 利用定时器1控制LED灯每隔100ms亮一个,并且数码管上的数每隔2...
include<reg51.h>#include<intrins.h>#define uchar unsigned char;uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; \/\/0到fuchar number,dat,time;void t0isr() interrupt 1{ TH0=(65536-5000)\/256; TL0...

51单片机中断定时
51单片机定时器T1,直接定时30秒是不行的,但是,可以定时50ms,以晶振为12M为例,时间常数是:TH1=(65536-50000)\/256;TL1=(65536-50000)%256;开中断,在中断程序中计数,每中断计一个数,计数600次,就是30秒了,对一个引脚取反,就可以高低变化了,每隔30秒一变。

51单片机定时器0和定时器1使用冲突
SM0=0;SM1=1;当 REN=1; 执行完后,单片机完全符合串口方式0,同步移位方式,如果你这时板子接在电脑串口上,不管你电脑有没有发串口数据,单片机RXD脚已经在接收了,而且你没写串口中断,RI不清0,那就在串口中断里出不来了,下面的程序都做不到,所以你定时器0不动,关了T1就等于关了串口,...

南平市15086038538: 怎样使用51单片机的定时器? -
欧阳月拉克: 1. 设定工作方式TMOD=..... 2. 装入初值 TH0=...TL0=....TH1=....TL1=..... 3.开启定时器中断和总中断ET0=1或ET1=1 EA=1 4.启动时器 TR0=1 TR1=1 5.写中断服务程序 其中 3和5可以没有

南平市15086038538: 设单片机晶振频率为12MHz,使用定时器1以方式1产生周期为200us的等宽正方波……,用c51语言实现 -
欧阳月拉克: 同定时器的自动重载方式,产生100us的中断周期,对p1.0口取反,单片机小精灵能帮到你

南平市15086038538: 51单片机定时器设置: -
欧阳月拉克: TMOD = (TMOD & 0XF0) | 0X01; //定时器0工作在模式1,16Bit定时器模式 上述表达式中0XF0的作用是什么? 1 (TMOD & 0XF0) 其中&为逻辑与指令,按位与操作,定时器的模式寄存器TMOD与上0XF0的作用是高4位不变,低4位被清零.(1与上...

南平市15086038538: 单片机晶振频率6MHz,使用定时器1以方式0和1,产生周期为1ms的等宽正方波脉冲,并由P1.0输出 -
欧阳月拉克: 给你一个模板吧,,,这里选择定时器1的方式1 采用汇编 中断方式编写T(周)=12/6 =2us, N=65536-(1/2 ms)/(2us)=65286 ORG 0000HLJMP START;ORG 001bHLJMP TT1 START: mov TMOD ,#10Hmov DPTR ,#65286mov TH1,DPHmov TL1,DPLSETB TR1SJMP $TT1:mov TH1,DPHmov TL1,DPLCPL P1.0RETI给你参考一下,,有啥不懂得,,可以随时连线

南平市15086038538: 51单片机定时器1秒1加到99程序 -
欧阳月拉克: 可设定时器于一定的时间响应(例如50ms) , 再用一个变量来计算几次(20) , 当计数到一定的值代表到一秒,之后再另一个寄存器上加一,如此反复到99就好了

南平市15086038538: 晶振频率为12MHz的MCS - 51单片机,使用定时器1以定时方法在P2.0输出周期为800us、占空比为20%的矩形脉冲编程 -
欧阳月拉克: 定时160us. 输出一次高电平,四次低电平. 即可. 程序如下:ORG 0000HMOV TMOD, #20HMOV TH1, #(256 - 160)MOV TL1, TH1SETB TR1 LP1:SETB P2.0MOV R2, #5 LP2:JNB TF1, $CLR P2.0CLR TF1DJNZ R2, LP2SJMP LP1 END

南平市15086038538: 51单片机中断定时 -
欧阳月拉克: 51单片机定时器T1,直接定时30秒是不行的,但是,可以定时50ms,以晶振为12M为例,时间常数是:TH1=(65536-50000)/256; TL1=(65536-50000)%256; 开中断,在中断程序中计数,每中断计一个数,计数600次,就是30秒了,对一个引脚取反,就可以高低变化了,每隔30秒一变.

南平市15086038538: 请问51单片机设定定时器0和计数器1都工作于方式1 TMOD=? -
欧阳月拉克: M1M0=01时定时器工作模式设为1所以TMOD=0x11.

南平市15086038538: 51单片机晶振频率为12MHz,定时器1工作方式1中断方式在P2.3输出频率为10Hz的方波 -
欧阳月拉克: MOD应该是/除号,因为是12M晶振,所以定时器一个计数值为1US,所以按这个赋值,定时器1将会50ms中断一次,要想产生10Hz的方波,周期得100ms,也就是说可以在中断服务程序中加条语句:cpl p2.3,就可以了,这样两次中断就是一个周期得方波信号,正好50X2=100ms.

南平市15086038538: 51单片机定时寄存器定时也不到一秒钟,如果想定时1分钟该如何定时, -
欧阳月拉克: 51单片机定时工作在方式1,是16位计数方式,如果晶振频率是12M,机器周期 是1us,那么最大的定时时间也只有65.536ms,要直接定时1秒是不可能的.但是,可以定时50ms,采用中断方式,每50ms定时到,要中断一次的,在中断程序就对中断计数,中断20次的时间就是50msX20=1000ms=1秒.有了1秒计时,那1分钟就容易了,对1秒再计数啊,60秒就是1分啦.可能你没有写过时钟程序吧,电子钟程序就是这种方法,再计60分为1小时,24小时为一日,依此,可以计年月日呢.这有什么难的.关键是对中断计数,就可以解决长时间定时了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网