历史上的今天
今天是:2025年03月25日(星期二)
2021年03月25日 | STC12延时函数的探究
2021-03-25 来源:eefocus
这种写法是C中嵌套了汇编。精确延时时间=2*t*T+5*T,T为一个机器周期。对于8051,

如果t=1,那么这个函数执行应该是7us。如果是STC12,那么这个延时函数的延时应该是:若t=1,精确延时=2*1*1/12+5*1/12=(7/12)us啊。
昨天也查了STC12手册 手册上对时钟写的很笼统,其中一句话是:与8051指令执行时间对比,一共有12个指令,一个时钟就可以执行完成,工作在相同频率下运行速度提高8~12倍
难道这里应该是(7/8)us?而不是(7/12)us?
这个是uint型函数时间是近似的
那么可以用延时时间=8*t*T
应该是8*1*(1/12)=8/12
根据程序分析猜想t=1时这个延时函数应该为1us最为合理。
用示波器测试过 执行一个delay(5000)大约5.8ms。51执行一个delay(5000)大约40064us嗯,用示波器测得那个IO口的频率变化为85.47HZ,那么一个delay(5000)就是(1/85.47)/2*1000=5850us
这里的t设的uint型,有误差,加上 LED=1;LED=0;执行也会消耗时间 结果存在误差 。
最后总结得出这条延时语句在51上执行一次大约花7us,在12上花1us。示波器测试通过!和我计算符合。
上一篇:51单片机实现红外编码检测
下一篇:单片机中晶振对波特率的影响
史海拾趣
|
驱动使用DDK写的,不是DS+DDK,以前用DS+DDK的时候是应用把一个Event的HANDLE传进去,然后驱动里面用传进来的HANDLE生成一个KEVENT,应用那里启动一个线程,线程里面等待那个Event就行了,这样当发生中断时驱动的DPC就把KEVENT设置,应用的那个线程就 ...… 查看全部问答> |
|
初学DSP,用了一片TMS320VC5409和10M无源晶振,板子做起来以后不能用,测量时钟信号发现X1管脚的信号是一个比较畸形的正弦波,X2管脚的波形是一个规则的正弦波;但是时钟输出CLKOUT的波形则是在高低电平两个位置剧烈震荡。由于对晶振和时钟信号不熟 ...… 查看全部问答> |
|
在做430向SD卡写数据时候,SD卡可以,但是用SDHC卡初始化过程中CMD0的响应正确,ACMD41响应总是0x01,是不是argument有问题呢?… 查看全部问答> |
|
2012TI杯山东省大学生电子设计竞赛 基本仪器和主要元器件清单 1、基本仪器清单 数字电桥 直流稳压电源 量角器 米尺 四位半数字万用表 0~200℃温度 ...… 查看全部问答> |




