单片机C语言(for)延时计算

上传人:人*** 文档编号:488808163 上传时间:2023-10-09 格式:DOC 页数:3 大小:55.50KB
返回 下载 相关 举报
单片机C语言(for)延时计算_第1页
第1页 / 共3页
单片机C语言(for)延时计算_第2页
第2页 / 共3页
单片机C语言(for)延时计算_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《单片机C语言(for)延时计算》由会员分享,可在线阅读,更多相关《单片机C语言(for)延时计算(3页珍藏版)》请在金锄头文库上搜索。

1、类型具有比12MHz 的单C 程序中可使用不同类型的变量来进行延时设计。经实验测试,使用 unsigned char unsigned int 更优化的代码,在使用时应该使用 unsigned char 作为延时变量。 以某晶振为 片机为例,晶振为 12MHz 即一个机器周期为 1us 。一. 500ms 延时子程序程序 :void delay500ms(void)unsigned char i,j,k;for(i=15;i0;i-)for(j=202;j0;j-)for(k=81;k0;k-);计算分析 :程序共有三层循环一层循环 n:R5*2 = 81*2 = 162us二层循环 m:R6

2、*(n+3) = 202*165 = 33330us三层循环 : R7*(m+3) = 15*33333 = 499995usDJNZ 2usDJNZ2us + R5赋值1us = 3usDJNZ2us + R6赋值1us = 3us循环外 : 5us子程序调用 2us + 子程序返回2us + R7 赋值 1us= 5us延时总时间 = 三层循环 + 循环外 = 499995+5 = 500000us =500ms 计算公式 :延时时间 =(2*R5+3)*R6+3*R7+5二. 200ms 延时子程序程序:void delay200ms(void)unsigned char i,j,k;f

3、or(i=5;i0;i-) for(j=132;j0;j-) for(k=150;k0;k-);三. 10ms 延时子程序 程序:void delay10ms(void)unsigned char i,j,k; for(i=5;i0;i-) for(j=4;j0;j-) for(k=248;k0;k-);四. 1s 延时子程序 程序: void delay1s(void) unsigned char h,i,j,k;for(h=5;h0;h-) for(i=4;i0;i-) for(j=116;j0;j-) for(k=214;k0;k-);关于单片机 C 语言的精确延时,网上很多都是大约给出

4、延时值没有准确那值是多少,也就没有达到精确高的要求, 而本函数克服了以上缺点, 能够精确计数出要延时值且精确达到 1us, 本举例所用 CPU 为 STC12C5412 系列 12 倍速的单片机 ,只要修改一下参数值其它系例单片 机也通用 ,适用范围宽。共有三条延时函数说明如下:函数调用分两级:一级是小于10US的延时,二级是大于 10US的延时/=小于 10US 的【用 1US 级延时】/ 微秒级延时 for(i=X;iX;i-)延时时间 =(3+5*X)/12提示 (单位 us, X 不能大于 255)11= 大于 10US0;MS-)for(i=26;i0;i-);i=(延时值-1.75)*12/Ms-15/4 如想延时60US贝U i=(60-1.75)*12/6- 15/4=25.37526修改i的值=26,再调用上面的 【10US级延时函数】 Delay10us(6); 则就精确延时 60US;如果想延时 64US 可以用这二种函数组合来用 : Delay10us(6); for(i=9;iX;i-)共延时 64US

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号