PIC16F877A单片机,晶振是4M(内部的晶振),怎么用C语言实现1us的延时

PIC16F877A单片机,晶振是4M(内部的晶振),怎么用C语言实现1us的延时,第1张

是ms吧,我用过的都是ms,基本上不用us

delay1ms(uchar T) //单位时间Tms延时,即T是多少,就延时多少ms

{

uchar time;

while(T--)

for(time=0;time<89;time++);

}

这个我用MPLAB的秒表测过,是1ms,差一点点,T越大越准确,不过要注意变量类型

还有这个也行

delay1ms(uchar T) //单位时间Tms延时

{

uchar time;

while(T--)

for(time=0;time<89;time++);

}

软件延时是通过使用空运算来消耗芯片的一定运算周期来实现延时的,比如采用循环体进行

硬件延时是通过硬件上的计时模块或中断模块来实现一定的延时的,这种方法可以提高CPU的工作效率,也能做到精确延时;

编程时选调软件定时器单元,首先看定时器定时单位是多少,例如10毫秒单位定时器,2小时=3600秒2,换算毫米是7200000毫秒,是10毫秒单位定时器的720000个计量单位,但是1个定时器不够用,2个或N个进位用,多少时间都没有问题。

如果你用的是4M的晶振的话

void delay(uint x)

{

uint a,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

在Keil里仿真的话,在配置里把晶振调成12MHz,然后在调用delay函数的地方设置一个断点,开始调试程序,运行到断点处,注意程序左边有一个记录当前寄存器和一些状态的窗口,其中,里面有一个是专门记录当前运行了多少时间的变量,记下当前时间T1,然后按F10(不进入子函数)调试,再记录当前时间T2,则延时=T2-T1。多试几个A,差不多调到1s就够了。我一般都这么调。

你要想明白其中原理,想自己算的话,你就看看delay的汇编代码段自己算吧。

以上就是关于PIC16F877A单片机,晶振是4M(内部的晶振),怎么用C语言实现1us的延时全部的内容,包括:PIC16F877A单片机,晶振是4M(内部的晶振),怎么用C语言实现1us的延时、pic单片机,软件延时与硬件延时主要有哪些区别、pic12f675延时程序,延时2小时,自己不会编写啊,各位大哥会的帮个忙呗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9313800.html

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

发表评论

登录后才能评论

评论列表(0条)

保存