请问,51单片机我同时把计数器1和定时器0打开,定时器1计数到255的时候,把TR1=TR0=0都关闭,

我想测定时器走了多少,怎么写呢?求高手。

//简单
//计数器1和定时器0都用中断,
TMOD=0x61;//定时器0方式1,计数器1方式2
TH0=0xFC; //1ms初值
TL0=0x18; //1ms初值
TH1=0x0;
TL1=0x0;
ET0=1;
TR1=1;
ET1=1;
EA=1;
//while(TL1==0);可以等计数器计到1才启动定时器0
TR0=1;
//计数1到255关闭计数器1和定时器0追问

你这个程序和我的有区别么?计数1到255,
if(TH1*256+TL1==256)
TR0=TR1=0;
time=NUM;
而你定时器给我初值???!!我要测计数器走了255,定时器的时间,你给了1ms的初值是为了什么?我觉得定时器应该是给一个变量啊。

追答

你定义一个变量NUM,放在定时器0中断自加
计数器1计到255进中断把 TR0=TR1=0
变量NUM就是定时器的时间,,单位是ms
明白吗?

中断程序你自己写吧,遇到问题再问我

追问

是不是我写的那个没毛病?

参考资料:http://hi.baidu.com/dsu5566

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-07
没搞清楚你要测定时器怎么用,你提问就没提清楚!

想测定时器走了多少很简单,比如随便定义一个变量TimeValue,在定时器中断将TimeValue++,
这样你定时器中断多少你是可以算出来的;不知道你是要模拟PWM波还是说要计数,如果说是计数外部脉冲的话,你可以设置定时器计数模式,也可以使用外部中断,每次触发你就软件设置外部中断引脚低电平,然后在外部中断函数里TimeValue++,追问

就是计数器1走255,定时器走多长时间的一段程序怎么写?。。。。。
TMOD=0X50
TH0=NUM/256;TL0=NUM%256;
TL1=TH1=0;
TR0=TR1=1;
if(TH1*256+TL1==256)
TR0=TR1=0;
time=NUM;
这个NUM的值就是定时器0走的值????
哪没说清楚啊,。

第2个回答  2012-04-07
要看你的定时器的工作方式,初值是多少。好好看看书吧追问

你这和没说一样啊。。。。。初值你随便写啊。。。。TMOD=0X51,定时器工作方式1.

tr0=0什么意思
TR0=0 表示停止定时器。TR0=1 表示开启定时器(在EA打开的前提下)。EA 是51单片机的总中断开关,所有中断都必须先使EA=1。51单片机中的定时器控制字中有两个控制位TR0、TR1,分别用于启动、停止定时器的计数,任何时刻,当TR0\/TR1为1时,T0\/T1定时器计数;当TR0\/TR1为0时,T0\/T1定时器停止...

51单片机如何同时使用定时器和计数器采集数据?
TMOD=0x51;\/\/定时器1作为计数器,定时器0作为定时器用 TH1=0;\/\/计数器清0 TL1=0;EA=1;\/\/开总中断 ET0=1;\/\/允许定时器0中断 TH0=0x4c;TL0=0x5c;TR1=1;\/\/启动计数器 TR0=1;\/\/启动定时器 aa=0;} void write_com(uchar com)\/\/向液晶屏写命令 { db=com;rs=0;rw = 0;lcden=...

TR0=1是什么意思? 是“定时器开始计时”还是“定时器中断”?
在51单片机中,TR0是一个特定的位,它对应于定时器T0的启动控制。当TR0=1时,意味着在总中断开关EA开启的条件下,定时器T0将开始计数。EA是51单片机的全局中断启用开关,所有中断功能的启用都需要先设置EA为1。TR0和TR1这两个控制位共同管理T0和T1定时器的计数状态。当它们被设置为1时,相应的定时...

TR0=1是什么意思? 是“定时器开始计时”还是“定时器中断”?
TR0=1在51单片机中具有特定含义,它指示定时器T0的计时过程的启动。当这个位被设置为1(即TR0=1),在总中断开关EA开启的条件下,定时器T0开始计数。EA作为全局中断开关,所有中断功能的启用都需要先确保EA的值为1。在编程中,通常会在初始化阶段或者特定的程序段中设置TR0为1,以启动定时器的计数...

51单片机的定时器有几种工作模式?
51单片机定时器T1有3种工作模式:方式0,方式1,方式2。当INT0引脚为高电平时且TR0置位,TR0=1;启动定时器T0;当INT1引脚为高电平时且TR1置位,TR1=1;启动定时器T1。MCS-51的定时器T0有4种工作方式:方式0,方式1,方式2,方式3。MCS-51的定时器T1有3种工作方式:方式0,方式1,方式2。

51单片机使用T0和T1外部脉冲计数,C语言如何编程?
使用T0和T1外部脉冲计数,控制两个电机,到1700个脉冲电机停止,--统计脉冲个数,用外部中断更好。--T0和T1,留着定时用。用四个按键控制,按键1控制电机正转,按键2控制电机反转,按键3控制电机1正转,按键4控制电机2正转,怎么用C语言编程?--编程前,要先设计出来电路。

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

请问单片机中TRO=1表示的是什么
是TR0不是TRO 51内核单片机中 TR0=1表示控制定时器0启动 TR1=1表示控制定时器1启动

我在51上设置了定时器0工作方式1和定时器1工作方式2,为什么定时器0的时 ...
2、程序中其它地方有诸如TR0=0(汇编:CLR TR0)之类的语句,使得定时器0的定时计数被延长 采用查询方式:如果是采用查询TF0的模式,那出现此问题的可能型就很大了,比如程序中有长时间的延时,等执行到检测TF0状态的语句时,定时器其实早就到时了,只是你没来得及处理而已,表现好像是被拉长了。

关于51单片机使用两个定时器进行控制的问题
TF0=0;\/\/关闭定时器0 TF1=1;打开定时器1 D1=0;\/\/LED灭 while(1){ if(aa==20){ aa=0;D1=1;\/\/LED亮,持续亮两秒,TF1=0;TF0=1;} if(bb==40){ bb=0;D1=0;\/\/LED灭一秒 TF0=0;TF1=1;} } 并且在程序开始处开启定时器1(也就是先执行的定时器),但是要注意...

相似回答