打印
[程序源码]

大神帮小弟看下这个延时程序的时间计算哪里错了,谢谢

[复制链接]
1274|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
赤火隐士|  楼主 | 2019-8-15 14:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 赤火隐士 于 2019-8-16 12:26 编辑

延时程序如下:
DELAY_10MS:
    LDWI              80
    STR                TEMP1
    LDWI               16
    STR                 TEMP2
DELAY_10MSLOOP3:
    CLRWDT
    DECRSZ                   TEMP2,F
    LJUMP                     DELAY_10MSLOOP3
    DECRSZ                   TEMP1,F
    LJUMP                      DELAY_10MSLOOP3
    RET
我的计算是:((1+1+2)*16+1+2)*80+4=5364
由于一个采用16M内部时钟,一个指令周期2个时钟周期,所以延时时间是5364*0.125=670us,实际是10mS。帮忙看下哪里计算错了,谢谢

使用特权

评论回复

相关帖子

沙发
ayb_ice| | 2019-8-15 15:04 | 只看该作者
代码有问题,TEMP2第一个循环为16,后面的循环不是16,需要修改
DELAY_10MS:
    LDWI              80
    STR               TEMP1
loop:
    LDWI              16
    STR               TEMP2
DELAY_10MSLOOP3:
    CLRWDT
    DECRSZ            TEMP2,F
    LJUMP             DELAY_10MSLOOP3
    DECRSZ            TEMP1,F
    LJUMP             loop
    RET
延时需要重新计算下,但误差不会太大

使用特权

评论回复
板凳
cabot168| | 2019-8-15 16:08 | 只看该作者
汇编看不懂,打个广告我司单片机https://xinning1350.b2b.hc360.com/

使用特权

评论回复
地板
赤火隐士|  楼主 | 2019-8-16 12:13 | 只看该作者
ayb_ice 发表于 2019-8-15 15:04
代码有问题,TEMP2第一个循环为16,后面的循环不是16,需要修改
DELAY_10MS:
    LDWI              80

谢谢回复,程序没问题哦,第二个循环是80(TEMP1)

使用特权

评论回复
5
赤火隐士|  楼主 | 2019-8-16 12:16 | 只看该作者
实际测试出来也是10mS

使用特权

评论回复
6
gx_huang| | 2019-8-16 12:41 | 只看该作者
明显的程序错误,第二次延时,TEMP2要循环256次了,这么简单的错误。

使用特权

评论回复
7
ayb_ice| | 2019-8-16 13:09 | 只看该作者
赤火隐士 发表于 2019-8-16 12:13
谢谢回复,程序没问题哦,第二个循环是80(TEMP1)

仔细看看吧,

使用特权

评论回复
8
赤火隐士|  楼主 | 2019-8-16 13:10 | 只看该作者
本帖最后由 赤火隐士 于 2019-8-16 13:13 编辑
ayb_ice 发表于 2019-8-15 15:04
代码有问题,TEMP2第一个循环为16,后面的循环不是16,需要修改
DELAY_10MS:
    LDWI              80

对对,谢谢大神,晕了,谢谢((1+1+2)*16+(4*256+3)*79+4=81201,这样计算对吗

使用特权

评论回复
9
赤火隐士|  楼主 | 2019-8-16 13:12 | 只看该作者
gx_huang 发表于 2019-8-16 12:41
明显的程序错误,第二次延时,TEMP2要循环256次了,这么简单的错误。

谢谢大神,这么简单的问题都没有看出来

使用特权

评论回复
10
ayb_ice| | 2019-8-16 13:40 | 只看该作者
赤火隐士 发表于 2019-8-16 13:10
对对,谢谢大神,晕了,谢谢((1+1+2)*16+(4*256+3)*79+4=81201,这样计算对吗 ...



固定的延时程序用软件仿真可以很好解决,看执行了多少周期就可以了,根据结果调整参数,搞几次就可以了

使用特权

评论回复
评论
smartpower 2019-8-18 11:23 回复TA
高~ 
11
赤火隐士|  楼主 | 2019-8-16 14:00 | 只看该作者
ayb_ice 发表于 2019-8-16 13:40
固定的延时程序用软件仿真可以很好解决,看执行了多少周期就可以了,根据结果调整参数,搞 ...

好的,谢谢大神

使用特权

评论回复
12
西陆| | 2020-3-26 11:37 | 只看该作者
赤火隐士 发表于 2019-8-16 13:10
对对,谢谢大神,晕了,谢谢((1+1+2)*16+(4*256+3)*79+4=81201,这样计算对吗 ...

咋算的啊  ,没想明白。为啥*256?

使用特权

评论回复
13
西陆| | 2020-3-26 11:38 | 只看该作者
gx_huang 发表于 2019-8-16 12:41
明显的程序错误,第二次延时,TEMP2要循环256次了,这么简单的错误。

求告知,这个为啥是循环256次

使用特权

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

本版积分规则

5

主题

98

帖子

1

粉丝