51单片机用T0计数器计算T1定时器的溢出次数,该如何实现?

不是C语言程序

方法一:

只开T1定时器中断,在T1定时器中断子程序中对(TH0 TL0)做加一运算。

方法二:

T1定时器模式,T0计数器模式,在T1定时器中断子程序中对某一固定引脚Px.x做“置1-清0-置1”操作,并将对应引脚连接在T0(P3.4)引脚。默认情况下T0中断比T1中断权限高,每次定时器T1溢出后,会在中断子程序内对引脚Px.x进行“置1-清0-置1”,过程中1到0的下降沿跳变会引起(TH0 TL0)加一;直到计数器T0溢出前的“置1-清0”时刻后“置1”时刻前,T0产生溢出中断,中断T1的中断子程序。

比较:

如果仅仅为了计算“T1定时器的溢出次数”的话,随便定义两个字节的“内部RAM数据存储器”就可以了,和方法一类似,在中断子程序中,对寄存器内数值加一,完全可以实现。

用T0算T1太浪费资源了!

定义“内部RAM数据存储器”计算“T1定时器的溢出次数”的程序:

可以用Keil仿真以下,能看出效果的!

 

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-03-12

可以实现,T1溢出时输出一个脉冲给T0的输入就可以了。

ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 001BH
LJMP T1ISR
ORG 0030H
MAIN:
    MOV TMOD,#16H
    MOV TH0,#0FFH
    MOV TL0,#0FFH
    MOV TH1,#HIGH(65536-10000)
    MOV TL1,#LOW(65536-10000)
    SETB TR0
    SETB TR1
    SETB ET0
    SETB ET1
    SETB EA
    CLR A
    SJMP $
T0ISR:
    INC A
    MOV P0,A
    RETI
T1ISR:
    CLR TR1
    MOV TH1,#HIGH(65536-10000)
    MOV TL1,#LOW(65536-10000) 
    SETB TR1
    RETI
    END

本回答被网友采纳
第2个回答  2013-11-12
用T0计数器计算...

用T0计数器,只能计算外部引脚送来的脉冲个数。

T1定时器每溢出一次,就通过导线,给 T0 引脚送去一个脉冲,即可。

51单片机用T0计数器计算T1定时器的溢出次数,...

这种计算的方法,电路、程序,都需要设计,并不实用。

更简单的方法,还是有的。本回答被网友采纳
第3个回答  2013-11-12
汇编语言我不会,但是实现原理我懂。
因为T0计数器的通过对某一IO口的电平跳变来计数的,而T1作为定时器又是内部的功能,要记录T1溢出率的话,可以在T1中断程序加一个操作IO产生一个电平跳变,然后接到T0计数口去。
希望我的回答能帮助到你。
第4个回答  2013-11-12
只会C程序

51单片机用T0计数器计算T1定时器的溢出次数,该如何实现?
方法一:只开T1定时器中断,在T1定时器中断子程序中对(TH0 TL0)做加一运算。方法二:T1定时器模式,T0计数器模式,在T1定时器中断子程序中对某一固定引脚Px.x做“置1-清0-置1”操作,并将对应引脚连接在T0(P3.4)引脚。默认情况下T0中断比T1中断权限高,每次定时器T1溢出后,会在中断子程序...

五一单片机如定时器需要每隔50MS溢出一次,如何操作?
3:TR0 = 1; \/\/启动T0 。而后主循环里面去检测:TF0==1 ?

单片机定时器溢出怎么解决?
TH0=0xEF;TL0=0xEF;这是对定时器0的计数器赋值。(高位)TH0=0xd8,(低位)TL0=0xf0,换成10进制是:55536,那么65536-55536=10000。表明T0计数器计数10000个机器周期后溢出。如果使用12M晶振,那么计数10000个机器周期使用10ms,可以作为定时用。

定时器中断溢出的原因及处理办法?
51单片机中有两个定时器T0和T1,分别是由两个8位的专用寄存器组成,即定时\/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。单片机中的定时器溢出时申请的中断,达到计时或计数的目的。并使用定时控制寄存器控制它。其中的:TF1:定时器1溢出标志。定时\/计数器溢出时由硬件置位。中断处理时由硬件清除。或...

51单片机实验(关于定时器计数器)
51单片机实验(关于定时器计数器) 用P1.7驱动发光二极管亮一秒灭一秒地闪烁。时钟频率为6MHz。提示:长时间定时采用定时器和计数器结合。计数器设定用硬件方式,提议T0定时,T1计数T0的定时跳变信号P1.0的跳变次数,计... 用P1.7驱动发光二极管亮一秒灭一秒地闪烁。时钟频率为6MHz。提示:长时间定时采用定时器和计数...

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

51单片机定时器\/计数器定时溢出时,在执行中断程序的同时内部硬件计数还 ...
我经验实验得到的结果是,如果在执行T0中断服务程序的时候,这个T0又溢出了,单片机等到执行完T0中断服务程序之后,马上就会再次执行这个中断服务程序,因为标志位在执行前次中断服务程序的时候已经置1,所以刚退出T0服务程序,又会再次进入。和你说的差不多,谢谢拉~~~ 本回答由提问者推荐 举报| 答案纠错 | 评论(11) ...

51单片机计时器溢出中断是什么意思?
3、工作在方式0下:最大计数值是2^13=8192;4、定时初值=8192-(1*1000)=7192;5、换算成十六进制数为:定时初值=1C18H。定时器中断是由单片机中的定时器溢出引起的中断,51单片机中有两个定时器t0和t1。定时/计数器t0和t1由两个8位专用寄存器组成,即定时/计数器t0由th0和tl0组成,t...

51单片机如何用计数器检测脉冲信号(高低电平),程序怎么做!没有思路...
可以利用51单片机的计数器T0、T1,例如用计数器0的外部计数脉冲输入端T0计数,当计满100个脉冲数量后,触发中断。进入计数服务中断程序。如果有脉冲信号,经过电容微分后,在下降沿会产生一个向下的尖端脉冲,电阻R2是作为一个偏置,当有向下的尖端脉冲来后,反相端的电压会低于同向端的电压。从而比较器...

51单片机 对外部脉冲计数是用中断口INT0还是定时计数器T0实现?它们有什...
程序都需要进中断处理程序,软件处理计数。T0计数则是每来一个计数脉冲,硬件自动计数,只有在计数器溢出时才触发中断处理。所以,要计数肯定是用T0更好一些,但前提是T0没有做别的功能用。有时用INT0计数,不是INT0好不好用的问题,是51的计数器都被占用了,没办法只好用INT0加软件计数凑合了。

相似回答