找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3134|回复: 8
打印 上一主题 下一主题
收起左侧

mcu单片机for延时迷惑

[复制链接]
跳转到指定楼层
楼主
STC89C52单片机,接11.0592M或12M晶振。
/*****************************************************
函数功能:延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
void delay1ms()
{
   unsigned char i,j;
  for(i=0;i<4;i++)
   for(j=0;j<33;j++);   
}
上面程序对吗,有没达到1毫秒的延时?总感觉i<4应改成i<10才对。望详细解释一下。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2014-9-3 13:56 | 只看该作者
这里有你要的答案 :http://www.51hei.com/bbs/dpj-4711-1.html
回复

使用道具 举报

板凳
ID:65751 发表于 2014-9-3 18:41 | 只看该作者
看不太懂,上面哪个程序能指点迷津一下?
回复

使用道具 举报

地板
ID:1 发表于 2014-9-3 21:22 | 只看该作者
(3j+2)*i=(3×33+2)×10=1010(微秒), 你这个计算方法是错误的,,正确的方法是 先把c语言的程序反汇编,然后根据每一条指令 来算时间.
回复

使用道具 举报

5#
ID:19715 发表于 2014-9-3 22:26 | 只看该作者
for的不同循环,在编译器当中会产生不同的代码:
刚才编译了一下:
delay1ms:CLR   A                  
        MOV   R7,A          
DL1:        CLR   A                   
        MOV   R6,A          
DL2:        INC   R6          
        CJNE  R6,#21H,DL2
        INC   R7          
        CJNE  R7,#04H,DL1
        RET

评分

参与人数 1威望 +25 黑币 +25 收起 理由
admin + 25 + 25 回帖助人的积分奖励

查看全部评分

回复

使用道具 举报

6#
ID:19715 发表于 2014-9-3 22:35 | 只看该作者
这样才能准确计算时间了,假如一个机器周期用1T表示(abcde...用于区分不同位置)
delay1ms:CLR   A                //1aT
        MOV   R7,A        //1bT    1a + 1b

DL1:        CLR   A                 //1cT
        MOV   R6,A          //1dT
DL2:        INC   R6                  //1eT
        CJNE  R6,#21H,DL2         //2fT    (1e+2f)*33
        INC   R7                  //1gT
        CJNE  R7,#04H,DL1         //2hT          [1c + 1d+ (1e+2f)*33 + 1g +2h]*4       
        RET                          //2iT          [1c + 1d+ (1e+2f)*33 + 1g +2h]*4 +2i

评分

参与人数 1威望 +40 黑币 +35 收起 理由
admin + 40 + 35

查看全部评分

回复

使用道具 举报

7#
ID:19715 发表于 2014-9-3 22:38 | 只看该作者
一共就是:  1a +1b + [1+1+(1+2)*33+1+2]*4+2  =2 + [104]*4+2= 420
用变量表示也就是: 2+  [1+1+(1+2)*j+1+2]*i +2 = (5+3*j)*i +4

再加上调用函数需要两个机器周期:
(5+3*j)*i +6

评分

参与人数 1黑币 +30 收起 理由
admin + 30

查看全部评分

回复

使用道具 举报

8#
ID:19715 发表于 2014-9-3 22:45 | 只看该作者
以上是标准51的计算,STC单片机要设置成普通的12T

评分

参与人数 1黑币 +25 收起 理由
admin + 25

查看全部评分

回复

使用道具 举报

9#
ID:19715 发表于 2014-9-3 23:19 | 只看该作者

评分

参与人数 1威望 +40 黑币 +50 收起 理由
admin + 40 + 50 回帖助人送积分!!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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