单片机c语言TMOD 设置

单片机c语言TMOD 设置,第1张

1.system_ini()为定时器t0初始化子程序,功能是设置定时器工作方式为方式1,th0=0xdc--寄存器th0初值为220,tl0=0x00--寄存器tl0初值为0,ie

=

0x8a--允许外部中断1和定时器t0中断,tr0=1--定时器t0启动,晶振频率为11.0592mhz;

2.tzd()为定时器t0中断服务子程序,当定时器t0溢出时,进入tzd(),th0

=

0xfe--寄存器th0重置为254,tl0

=

0x33--寄存器tl0重置为51,

每进入一次定时器t0中断,ct就加1,ct++==speed--当ct的值加到speed时,执行tim=1和ct=0。

不是单片机题目里的TMOD,而是单片机的内部专用寄存器TMOD的设置,它是定时器的工作模式设置寄存器,用它来设置定时器T0,T1的工作模式。

以最常用的定时器模式(还有一种计数器模式)为例

高四位 用来设置定时器T1的,低四位用来设置定时器T0的。

定时器有四种工作方式,分别为0,1,2,3

T0方式几,低四位就是几,T1方式几,高四位就是几。

例:T0设置为方式1,则TMOD=0x01,即01H

T1设置为方式2,则TMOD=0x20,即02H

如果T1,T0同时使用,就同时设置,T1方式2,T0方式1,则TMOD=0x21,即21H。

你说的00H,是不用设置的,因为默认的就是00H。

下面以运用中断对LED进行控制,举一个例子吧,定时时间50ms,设置为一秒的话,加个for循环,相应改动即可!

#include<reg52.h>

sbit LED=P1^2 //定义LED端口

/*------------------------------------------------

定时器初始化子程序

------------------------------------------------*/

void Init_Timer0(void)

{

TMOD |= 0x01 //使用模式1

TH0=(65535-50000)/256 //给定初值

TL0=(65535-50000)%256

EA=1 //总中断打开

ET0=1 //定时器中断打开

TR0=1 //定时器开关打开

}

/*------------------------------------------------

主程序

------------------------------------------------*/

main()

{

Init_Timer0()

while(1)

}

/*------------------------------------------------

定时器中断子程序

------------------------------------------------*/

void Timer0_isr(void) interrupt 1 using 1

{

TH0=0x00 //重新赋值

TL0=0x00

LED=~LED //指示灯反相,可以看到闪烁

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12200472.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存