PIC单片机如何设计延时

PIC单片机如何设计延时

PIC单片机的延时基本有三种,第一种是自己设计的delay()函数,第二种是直接调用库自带的delay()函数,最后一种就是利用其自带的Time定时器。当然不管是自己设计的delay()函数还是库自带的delay()函数的精度都低于Time0定时器的精度,Time定时器是单片机内部的硬件寄存器模块,而delay()函数是利用自加自减来实现延时,代码进行顺序执行,每走一步其实都会产生时间上的误差。
当在时间精度要求不高的场合可以使用delay()函数,而对于时间精度要求相对较高应该使用Time定时器。具体设计方法及使用方法如下。

自己设计一个delay()函数

自己写的delay()函数主要是利用fo循环的自加自减来完成的,今天这里我们就用for循环的自减来实现一个1s的延时,然后用1s做LED流水灯的延时让LED流水灯亮起来。
下面展示一些 内联代码片

// A code block
var foo = 'bar';

void delay(uint time)
{
uint a,b;
for(a=time;a>0;a–)
for(b=110;b>0;b–);
}

// An highlighted block
var foo = 'bar';

这个delay()设计好后,延时时间是timeb实际基数;有时我们不知道这款单片的时间基数是多少,有时是一个机器周有时是几个指令周期。这里我们不用担心,用MPLAB自带的软件模拟仿真就能比较精确的测出来你的延时,然后通过调整time和b就能获得你想要的延时时间,具体操作如下:
下面展示一些 内联代码片
点击“Debugger”->select Tool ->MPLAB SIM切换到仿真模式下,然后在主函数中进行延时测试,具体代码如下:

// A code block
var foo = 'bar';

void main()
{
while(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在岸上走的鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值