打印

各位大哥帮帮忙!

[复制链接]
1484|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dyw07|  楼主 | 2007-11-24 19:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void delayms(unsigned char ms)    // 延时子程序
{                        
    unsigned char i;
    while(ms--)
    {
        for(i = 0; i < 120; i++);
    }
}晶振选12MHz的
如果delayms(1000)
大概延时多少毫秒?

相关帖子

沙发
dyw07|  楼主 | 2007-11-24 19:08 | 只看该作者

!!

小弟是新手,不会汇编
各位大虾帮个忙嘛!!!1
最好给点学好单片机的经验

使用特权

评论回复
板凳
yanfengzhu| | 2007-11-24 19:28 | 只看该作者

软件自己仿真一下。

使用特权

评论回复
地板
dyw07|  楼主 | 2007-11-24 19:32 | 只看该作者

!!1

怎么仿真,给点意见嘛!

使用特权

评论回复
5
Swd21ic| | 2007-11-24 19:37 | 只看该作者

hehe

额.
1.形参的ms应该定义为16位整型的.你8位的去调用delay(1000)根本是错的.
2.如果你需要知道精确的时间的话,你必须知道这段代码被编译成汇编后的代码,而你又不熟汇编的话就无法去深究原因了..(我也没深究过..)
3.延时的话最简单的办法是用示波器看看就好了..
: )

使用特权

评论回复
6
dyw07|  楼主 | 2007-11-24 19:55 | 只看该作者

!!!

如果delayms(100)

使用特权

评论回复
7
5880527| | 2007-11-24 20:24 | 只看该作者

这样的延时让我想到了个笑话,只是娱乐一下,无取笑的成

一个土财主的儿子,跟老师学写字,老师说,1就是一划。2就是二划。3就是三划。刚刚说完,财主的儿子就说我会了,而后跑去和财主说。爸爸你可以把老师辞退了。我都会了。财主很高兴。想反正老师也要花很多钱。就把老师辞退了。
    过了几天财主要请一个姓万的朋友吃饭,就让儿子写一份邀请函。财主等了一天都没有看见儿子写好。跑去一看。儿子正在纸上划道。财主问,你怎么这么久都没有写好信。儿子说,你的朋友姓什么不好,偏偏姓万。我划了一天只划了5000道。

使用特权

评论回复
8
dyw07|  楼主 | 2007-11-24 21:34 | 只看该作者

给大虾们的致辞

高手,小弟阅历尚浅,能否说的浅显点

使用特权

评论回复
9
hellomcu| | 2007-11-24 22:35 | 只看该作者

我给你说说

我给你说说
    如果用汇编语言来写一个简单的延时,我不知你会不会,如果不会,那你一定要去看一下,能基本看懂就会,如果一点不看,那对C的运行机理你是不可能理解的。这个学习是要花一点时间的。如果学习也是一个必要的过程,否则你以后还是要不断地回不过头来学。
    汇编延时包括一些跳转指令,这个我就不说了,你回头看书去吧。在延时处理的中间,我们相当于加入了nop指令。
    这个nop指令的执行速度是一个机器指令周期,一个机器指令周期多长?    你回头看看书。
    现在的晶振是12MHz的,那你可以算出一个nop的指令执行时间?

    先把for(i = 0; i < 120; i++);简单看成是执行120个nop指令(实际上是这个的3~6倍,我就不计算了)
    那样算下来,你要运行多少次才可以足1ms呢? 1s = 1000ms = 1000 000us知道吧?
    那需要延时处理再多的时间也就出来了,对么?
    你看明白了么?

    此后就是C语言的事情了。
    unsigned char 代表什么意思,你明白了么?它的数据范围有多大?把一个很大的数放在在一很小的存贮范围内,如同把一桶水倒到一个杯子里一样,而且后果可能还会更加严重。
    找本书看下,你很快就会明白的。明白了以上的问题,就可以解决你的问题了。
    看过,问过,想过,做过,还不明白的话,再来这个坛子上问吧。

使用特权

评论回复
10
dyw07|  楼主 | 2007-11-25 19:54 | 只看该作者

请教高手

typedef unsigned char      uint8;                // 无符号8位整型变量
请问一下,上面条语句的意思是不是用 uint8代替unsigned char      

使用特权

评论回复
11
hellomcu| | 2007-11-26 08:00 | 只看该作者

不是

不是,它的意思是 uint8与unsigned char 具有一样的含义。可以用它像后者一样定义变量。

使用特权

评论回复
12
ayb_ice| | 2007-11-26 08:23 | 只看该作者

软件仿真是最好的

使用特权

评论回复
13
孤星119| | 2007-11-26 08:59 | 只看该作者

同意楼上

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

71

帖子

0

粉丝