211

主题

0

好友

3013

积分

罗宾汉 当前离线

黄金圣斗士

Rank: 7Rank: 7Rank: 7

UID
29392
帖子
10040
精华
1
经验
3013 点
金钱
2891 ¥
注册时间
2007-10-25

DIY大赛获奖

发表于 2013-7-29 02:10 | 显示全部楼层
一个程序,居然仿真下莫名其妙会产生无声现象,后来加进2个NOP空指令就正常,这算什么道理,气死人
    acall senda
       nop
       nop
       jb   SIGN_FIR,PLAY1A
       nop
       nop
      
      
PLAY1: mov a,#02h           ;SMUTE=1 ¾²Òô¹Ø----     Â˲¨Æ÷ÉèÖÃΪ¼±¾ç·­¹ö
       nop
       nop
       jmp    PLAY2
       NOP
       nop

就是在jmp    PLAY2 之上必需加2个NOP 程序才正常,吐血,查死人的,大家遇到过这样问题么。

40

主题

5

好友

3067

积分
     

罗宾汉 当前离线

哆啦A梦

Rank: 7Rank: 7Rank: 7

UID
39496
帖子
7530
精华
0
经验
3067 点
金钱
2868 ¥
注册时间
2008-4-5
发表于 2013-7-29 08:09 | 显示全部楼层
刚同学回复我,说此问题为时序冲突

0

主题

0

好友

52

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
141958
帖子
113
精华
0
经验
52 点
金钱
52 ¥
注册时间
2009-10-23
发表于 2013-7-29 08:22 | 显示全部楼层
深奥了一点,不太明白。

21

主题

12

好友

2850

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
360418
帖子
2929
精华
0
经验
2850 点
金钱
2701 ¥
注册时间
2011-7-4
发表于 2013-7-29 09:02 | 显示全部楼层
并不是它无聊,像一些DSP芯片、一些高速并行流水线执行的RISC指令芯片要注意此问题,在跳转操作、中断返回、调用、调用返回都要等待几个空操作,原因是它是先等之前正在运行的动作完成才能跳到别的地方执行。不过如果是C或其它高级语言,编译器就会替你做这步工作,不需你理会。

1

主题

1

好友

183

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
285689
帖子
563
精华
0
经验
183 点
金钱
179 ¥
注册时间
2011-1-24
发表于 2013-7-29 12:29 | 显示全部楼层
伟哥在搞播放器???

32

主题

4

好友

1926

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
114497
帖子
1713
精华
0
经验
1926 点
金钱
1713 ¥
注册时间
2009-6-27
发表于 2013-7-29 12:31 | 显示全部楼层
本帖最后由 别时方觉依依 于 2013-7-29 12:38 编辑

第一种可能是时序冲突。因为ARM是乱序执行的。
第二种可能是字节对齐的问题。编译的时候16位指令和32位指令混编的。可能导致读指令错误。

这两种问题我都碰到过。确实是很头痛的问题。

其实第二种情况 我是在 C下面和 汇编环境下都遇到。当时开始程序是C写的。单步都没有问题。但是自由运行时就不对。只好跟踪到汇编代码里去。汇编单步也是可以的。将整个代码用汇编重新写了遍。还是不行。为这个问题,查了2天。以为IC坏了。换了4片。最终还是网上找到原因。

现在别问我ARM的东西了。2年没有去碰它了。

211

主题

0

好友

3013

积分

罗宾汉 当前离线

黄金圣斗士

Rank: 7Rank: 7Rank: 7

UID
29392
帖子
10040
精华
1
经验
3013 点
金钱
2891 ¥
注册时间
2007-10-25

DIY大赛获奖

 楼主| 发表于 2013-7-29 14:08 | 显示全部楼层
我是用89C51的汇编,真个搞死人的,这样,小2个NOP就不行,以前都没遇到过

56

主题

12

好友

6091

积分
     

青铜剑侠 当前离线

小熊猫

Rank: 8Rank: 8

UID
59487
帖子
7499
精华
0
经验
6091 点
金钱
5748 ¥
注册时间
2008-10-20
发表于 2013-7-29 15:02 | 显示全部楼层
fsweiliang 发表于 2013-7-29 14:08
我是用89C51的汇编,真个搞死人的,这样,小2个NOP就不行,以前都没遇到过

为何还用汇编?

29

主题

8

好友

3687

积分
     

罗宾汉 当前离线

瞎烧、便宜烧……

Rank: 7Rank: 7Rank: 7

UID
487425
帖子
9473
精华
0
经验
3687 点
金钱
3658 ¥
注册时间
2012-4-7
发表于 2013-7-29 16:01 | 显示全部楼层
看不懂的路过,LZ写得像天书,膜拜一下!!!

34

主题

7

好友

1812

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
532639
帖子
1594
精华
0
经验
1812 点
金钱
1566 ¥
注册时间
2012-10-2
发表于 2013-7-29 16:03 | 显示全部楼层
上一语句或者有中断执行,执行时间不够。

4

主题

0

好友

439

积分

业余侠客 当前离线

Rank: 4

UID
201039
帖子
433
精华
0
经验
439 点
金钱
431 ¥
注册时间
2010-5-13
发表于 2013-7-29 16:38 | 显示全部楼层
除非MCU的资源紧张,否则别用汇编。

32

主题

4

好友

1926

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
114497
帖子
1713
精华
0
经验
1926 点
金钱
1713 ¥
注册时间
2009-6-27
发表于 2013-7-29 16:50 | 显示全部楼层
楼主用的89C51汇编,但是芯片不是89C51吧。
如果是其他芯片。是有可能出现这个问题。说下用什么芯片?
头像被屏蔽

79

主题

168

好友

1026

积分

禁止发言 当前离线

UID
11863
帖子
1308
精华
0
经验
1026 点
金钱
280 ¥
注册时间
2006-8-29
发表于 2013-7-29 16:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

2

好友

452

积分
     

业余侠客 当前离线

Rank: 4

UID
51431
帖子
536
精华
0
经验
452 点
金钱
438 ¥
注册时间
2008-8-20
发表于 2013-7-29 19:28 来自手机端 | 显示全部楼层
你可能用的是stc 单片机,这片子用汇编要注意有的指令最好加延时,厂家的说法是CPU太快了有的硬件还来不及执行,我喜欢用C,移植很方便

117

主题

0

好友

1194

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
270736
帖子
2604
精华
0
经验
1194 点
金钱
1174 ¥
注册时间
2010-12-11
发表于 2013-7-29 19:37 | 显示全部楼层
需要一两步空操作延迟时间,,,

211

主题

0

好友

3013

积分

罗宾汉 当前离线

黄金圣斗士

Rank: 7Rank: 7Rank: 7

UID
29392
帖子
10040
精华
1
经验
3013 点
金钱
2891 ¥
注册时间
2007-10-25

DIY大赛获奖

 楼主| 发表于 2013-7-29 19:54 | 显示全部楼层
我还没用芯片。只是用仿真器调的。周立功的

9

主题

0

好友

58

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
605296
帖子
178
精华
0
经验
58 点
金钱
48 ¥
注册时间
2013-7-20
发表于 2013-7-29 20:11 | 显示全部楼层
不懂,来看看学习学习

24

主题

1

好友

917

积分

职业侠客 当前离线

Rank: 5Rank: 5

UID
88329
帖子
1913
精华
0
经验
917 点
金钱
908 ¥
注册时间
2009-3-15
发表于 2013-7-29 21:08 | 显示全部楼层
怎么没有听过acall这个指令啊

21

主题

12

好友

2850

积分
     

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
360418
帖子
2929
精华
0
经验
2850 点
金钱
2701 ¥
注册时间
2011-7-4
发表于 2013-7-30 08:42 | 显示全部楼层
8位机程序一个半月前我也遇到过此问题,同样求解:
nop.jpg
你的是在跳转之前加,我的是在跳转进入之前加,或跳转进入之后用用程序运行程序前加都可以。
这是我用AVR8位机8年了,第一次遇到的问题,
样机做了两个,一个已交给客户,一个扔给我小孩玩,
到现在也没有发现什么问题,现在一也一直没弄清楚

211

主题

0

好友

3013

积分

罗宾汉 当前离线

黄金圣斗士

Rank: 7Rank: 7Rank: 7

UID
29392
帖子
10040
精华
1
经验
3013 点
金钱
2891 ¥
注册时间
2007-10-25

DIY大赛获奖

 楼主| 发表于 2013-7-30 12:31 | 显示全部楼层
搞的我现在到处加NOP.,,,,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部