单片机系列(定时器)-2

    在单片机里定时器也是常用了一个东西,相比的于常用的延时delay(),更精确而且用delay()有个不太好的地方就是它把主程序执行的时间占用了很多对功能上来说没有问题,但从执行效率来说,花费大量的时间才跑delay()这种循环,好像有点划不才一样。所以在main loop 这样的程序中尽量不要去写太多的delay().除非在串口中断发送数据时必要的延时。

头文件 time.h

#ifndef _timer_h_
#define _timer_h_

extern void delay(unsigned char i);
void Delay100ms();
void timer0_init(void);
void timer0_start(void);
void timer0_stop(void);

extern unsigned int timer_cnt;

extern void timer0_init(void);
extern void timer0_start(void);
extern void timer0_stop(void);
#endif


c文件 time.c

#include "../include/timer.h"
#include "../include/stc12c5a60s2.h"

unsigned int timer_cnt;

void timer0_init(void)
{    
    //20毫秒@18.432MHz
    AUXR &= 0x7F;        //定时器时钟12T模式
    TMOD &= 0xF0;        //设置定时器模式
    TL0 = 0x00;  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的内容,可以得出以下结论:在使用51单片机定时器2测波时,需要进行一系列的配置。首先,需要选择定时器T1的模式二,即八位自动重装模式。其次,需要选择串口模式1,即10位异步收发模式,并且波特率加倍。最后,需要配置波特率为4800。具体的配置方法可以参考引用\[1\]和引用\[2\]中提供的代码和图示。 根据引用\[3\]的内容,可以得出以下结论:在使用查询方式进行定时器2测波时,可以采用while(1)循环来实现。首先,需要设置定时器T0的相关寄存器,包括TMOD、TH0和TL0。然后,需要设置IE寄存器,禁止中断。接下来,启动T0计数。在while(1)循环中,通过判断TF0标志位是否为1来判断T0是否溢出。如果溢出,则执行相应的操作,例如调用timelover函数进行处理。在timelover函数中,需要停止计数、重赋初值、进行信号反转,并重新启动计数。 综上所述,使用51单片机定时器2测波的具体方法和代码可以参考引用\[1\]、引用\[2\]和引用\[3\]中提供的内容。 #### 引用[.reference_title] - *1* *2* [51单片机-波特率的计算&定时器初始值的计算](https://blog.csdn.net/cyaya6/article/details/127490178)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [从头开始学51单片机之实例4:用定时器输出方波](https://blog.csdn.net/changxiaoyong8/article/details/127540460)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值