c语言定时器作用,定时器简单运用

本文介绍了C语言定时器的工作模式,特别是工作模式1的详细使用,包括定时器的开关控制、溢出标志以及如何通过定时器实现50ms间隔的流水灯实验。同时,展示了定时器0和定时器1的相似操作,强调了两个定时器的工作原理一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.细节

上一讲里,我们知道TH0和TL0合成的“16位的变量”的初值最小要为0,不能是负数,

所以我们要满足:65536-( x/(12/11059200) )>=0。

解得x<= 0.071111秒=71.111毫秒。

也就是用定时器的工作模式1最长的定时时间为71毫秒左右而已。

2.定时器开关

首先定时器也是有开关的,这个相当于我们的导管是否打开让水流进“试管”里。

因为我们用的是定时器0,TCON^4这个位就是控制定时器0是否打开或关闭,所以“TR0=1;”就是打开了定时器开始计时,“TR0=0;”是关闭了定时器计时功能。

只要打开了定时器,TH0和TL0合成的“16位的变量”就会每过(12/11059200)秒就自加1,直到定时器溢出。

3.溢出标志

我们的定时器0一旦溢出,TCON^5就会被置1(TF0==1),如果我们不使用中断函数也是可以在主函数里等待判断“if(TF0==1)”。TF0跟外部中断0的IE0一样,被置1了需要软件清零。

4.工作模式1的代码

这里我们用定时器0来实现间隔50ms的流水灯实验#include 

#include //详见第六章第8讲

void main()

{

u8 i=0;

LED_Init();   //初始化LED硬件模块

TMOD = 0x01;  //设置定时器0为工作模式1

TH0  = 0x4C;  //设置定时时间为50ms

TL0  = 0x00;

TR0  = 1;     //启动定时器0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值