找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17453|回复: 12
收起左侧

谁能给个1US延时程序啊(要求晶振是12M的51单片机)

[复制链接]
ID:40490 发表于 2012-7-4 15:42 | 显示全部楼层 |阅读模式

 

回复

使用道具 举报

ID:1 发表于 2012-7-4 16:24 | 显示全部楼层

这个简单  一个 nop 就是1us

 

回复

使用道具 举报

ID:40490 发表于 2012-7-4 16:47 | 显示全部楼层

我要的是一个延时程序是转一个参数进去 就得到想要的

 

回复

使用道具 举报

ID:7485 发表于 2012-7-4 23:53 | 显示全部楼层

你的问题很搞笑。

 

12兆晶体标准51片子,一个机器周期就是1us,无法再小了,没有其他办法。只能是nop,一周期指令。

回复

使用道具 举报

ID:7485 发表于 2012-7-4 23:54 | 显示全部楼层
估计你是需要1ms的吧?
回复

使用道具 举报

ID:7485 发表于 2012-7-5 08:43 | 显示全部楼层

如果已知屋里只有1个人,让你给出一个计算公式,计算屋里有几个人,你会怎么写?

 

回复

使用道具 举报

ID:40490 发表于 2012-7-5 18:50 | 显示全部楼层
版主你别想的那么理所当然 你试试就知道多难了 我目前最多控制在误差6个US以内 它是这样子的 12M里面有个累计误差 而且由于他的运算比较慢有个累计误差 所以我觉得是不可能的 但是呢就是有这么一个做到了
回复

使用道具 举报

ID:40490 发表于 2012-7-5 18:54 | 显示全部楼层
版主你别想的那么理所当然 你试试就知道多难了 我目前最多控制在误差6个US以内 它是这样子的 12M里面有个累计误差 而且由于他的运算比较慢有增大 时间相差就越大
回复

使用道具 举报

ID:7485 发表于 2012-7-5 22:05 | 显示全部楼层

听不懂你说的是啥!你最后说的和你开始说的就不是一回事!

 

“我目前最多控制在误差6个US以内 ”,你多长时间允许误差6个US??

 

对使用12M晶振的51单片机来说,最小的时间单位就是1US,只要是个程序,最少要一个指令吧?对标准的89c51来说任何一个指令都等于或大于1US。

如果说在一定时间内积累了一个或几个微秒的+误差,你想延迟几个微秒,那是另外一回事。

你想延迟几个微秒就加进去几个NOP,这也可以认为就是1US的延时程序。

如果你是数小时积累了1个微秒的误差,用程序在一定的小时后(计算出来的)或者是每天00:00:00时,一次性的在定时器的初装值加上几个数值即可。

积累误差不超过1微秒是没法调整的。

到现在我没有弄明你的真正的意图,不知道我揣摩的对与否?

回复

使用道具 举报

ID:40490 发表于 2012-7-6 09:26 | 显示全部楼层
就是你说这样我要一断长时间的累计 但是了又总是有点点岔开 这几天来一个总结晶振稍微大点误差就会少点 这几天来一个总结
回复

使用道具 举报

ID:43499 发表于 2012-8-1 01:16 | 显示全部楼层
 现在晶振质量普遍不行,
不过如果是 12T,延1uS,12M,NOP解决一切
回复

使用道具 举报

ID:43173 发表于 2012-8-1 09:05 | 显示全部楼层
以下是引用admin在2012-7-4 16:24:58的发言:

这个简单  一个 nop 就是1us

 

正解。

不清楚LZ到底想要什么!

回复

使用道具 举报

ID:425175 发表于 2019-2-2 21:38 | 显示全部楼层
/*分享一下常用的延时函数*/
/*延时10us*/
void delay_10us()  //延时10us@12M晶振
{      
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}

/****延时n个10us****/
void delay_n10us(uint n)  //延时n个10us@12M晶振
{      
        uint i;         
        for(i=n;i>0;i--)   
        {
              _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表