社区导航

 

搜索
查看: 2898|回复: 17

keil 中 1s的延时程序 在仿真中体现不出

[复制链接]

98

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-24 23:35 | 显示全部楼层 |阅读模式
delay:mov r5,#50
de1  :mov r6,#100
de2  :mov r7,#100
     djnz r7,$
     djnz r6,de2
     djnz r5,de1
     ret
按计算是1s的延时,但是在keil仿真时 小灯闪烁得很快
  希望解决

99

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-24 23:41 | 显示全部楼层
补充一下是用软件开发板仿真得,我还没买硬件

回复

使用道具 举报

100

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-25 06:13 | 显示全部楼层
仿真使用电脑的cpu来算,当然快了。
这个演示程序使用指令的计算时间来延时,cpu的计算速度越快,延时越小

回复

使用道具 举报

108

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-25 08:48 | 显示全部楼层
引用 2 楼 benjaminweber 的回复:
仿真使用电脑的cpu来算,当然快了。
这个演示程序使用指令的计算时间来延时,cpu的计算速度越快,延时越小

错了,仿真的时候,在工程的属性中可以设置晶振的值。看看设对了没有。

回复

使用道具 举报

105

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-25 08:50 | 显示全部楼层
keil软仿真需要设置单片机用的晶振频率的。你算1s时用的是什么频率?
另外,可以在仿真时看keil左边栏,有一个时间值,是从启动到当前pc所经历的时间。
你可以用单步调试,执行到这段延时的第一步,然后将光标定位到延时程序结束后的一条指令,然后用“运行到光标所在行”的方式,直接运行完这一段延时,再看那个时间值,算一下差值就知道实际用了多长时间。

回复

使用道具 举报

123

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-25 09:00 | 显示全部楼层
ding

回复

使用道具 举报

99

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-25 09:00 | 显示全部楼层
ding

回复

使用道具 举报

113

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-25 13:34 | 显示全部楼层
引用 2 楼 benjaminweber 的回复:
仿真使用电脑的cpu来算,当然快了。
这个演示程序使用指令的计算时间来延时,cpu的计算速度越快,延时越小

不是吧,算得要是PC的频率的话也太夸张了。
仿真器上有设置频率地方

回复

使用道具 举报

103

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-25 22:39 | 显示全部楼层
有设置频率得地方,我设置得12M

回复

使用道具 举报

76

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-26 12:29 | 显示全部楼层
关注。

回复

使用道具 举报

114

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-26 13:26 | 显示全部楼层
看看CPU设的对不对,12机器周期的,12M晶振在keil中仿真下来就是1S,没发现什么问题。

回复

使用道具 举报

100

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-27 09:07 | 显示全部楼层
晶振时钟周期不一样的。

回复

使用道具 举报

114

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-27 09:10 | 显示全部楼层
帮顶

回复

使用道具 举报

89

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-27 09:10 | 显示全部楼层
帮顶

回复

使用道具 举报

103

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-27 09:28 | 显示全部楼层
多加些延时吧 软件和硬件还是不太符合的

回复

使用道具 举报

106

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-27 22:20 | 显示全部楼层
这个问题很简单啦。
在keil中,打开菜单project\Options for Target "Target 1"
然后在弹出的对话框的debug属性页左上方勾上"Limit Speed to Real-Time"前的单选框。

呵呵,虽然很简单,但是最开始我也被这个问题弄的头疼过。
对了,我的keil是v8.05,不知道不同的版本这里的设置是否有不同,你自己注意看看。

回复

使用道具 举报

96

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-28 22:37 | 显示全部楼层
谢谢楼上的,我用的是V2.30中文版,找不到你说的那个选项
  谁知道啊

回复

使用道具 举报

93

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2009-3-30 18:07 | 显示全部楼层
你也可以先用定时器测一下

回复

使用道具 举报

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

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-2-20 00:56 , Processed in 0.487000 second(s), 19 queries , Gzip On, MemCache On.

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