打印

菜鸟问问题1

[复制链接]
3198|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
徐小剑|  楼主 | 2009-10-6 12:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
lyjian| | 2009-10-6 12:23 | 只看该作者
LABEL:     SJMP   $   =    SJMP LABEL

SJMP   $ :跳转到当前地址
SJMP 标识符:跳转到标识符处地址

使用特权

评论回复
板凳
allround| | 2009-10-6 12:42 | 只看该作者
2楼正解

使用特权

评论回复
地板
徐小剑|  楼主 | 2009-10-6 15:17 | 只看该作者
如果程序是从上面执行下来然后一直在SJMP $处不停的执行,是不是就像c语言的的while语句一样的?

使用特权

评论回复
5
chen3bing| | 2009-10-6 15:49 | 只看该作者
while(1);

使用特权

评论回复
6
ningling_21| | 2009-10-6 17:43 | 只看该作者
loop:  sjmp  loop



       sjmp $  

一样的效果...

使用特权

评论回复
7
徐小剑|  楼主 | 2009-10-6 22:18 | 只看该作者
ORG O
SJMP MAIN
MAIN:
SETB P1.0
CLR  P1.0
SJMP MAIN
END

ORG 0
SJMP MAIN
MAIN:
SETB P1.0
CLR   P1.O
SJMP $
END
如果按照上面的书法这两条程序仿真的效果是有一样的!但是下面这条程序是实现了led闪烁的功能。
难道真的是我的仿真出问题了!

使用特权

评论回复
8
lyjian| | 2009-10-7 08:06 | 只看该作者
这两段程序不一样,仿真的效果也不会一样

使用特权

评论回复
9
woshiwml| | 2009-10-7 11:01 | 只看该作者
上面程序闪       下面程序被清零之后,最后就是 SJMP $ 自己循环了

使用特权

评论回复
10
不亦心| | 2009-10-7 12:12 | 只看该作者
不知道你硬件电路是怎样的
但是就这两个程序而言,不可能有闪烁的现象,两个程序也截然不同。
一,晶振稍微大一点儿,第一个程序都是常亮,因为你没延时。
二,用拉电流驱动LED,第二个程序常灭
三,用灌电流驱动LED,第二个程序常亮

下面再说说LZ,org 0000h,下面的sjmp  main语句完全可以去掉。

你应该好好看看你上一个问题中,别人给你的建议程序,看看人家怎么写的。汇编就是这样,某些格式就是千篇一律的,大家都这样写就有他这样写的原因,你没必要标新立异,独树一帜。

使用特权

评论回复
11
徐小剑|  楼主 | 2009-10-7 13:18 | 只看该作者
本帖最后由 徐小剑 于 2009-10-7 13:38 编辑

10# 不亦心
硬件电路是一样的!
第一条程序是闪烁的,所以你的第一句话就错了!

使用特权

评论回复
12
徐小剑|  楼主 | 2009-10-7 13:37 | 只看该作者
上面程序闪       下面程序被清零之后,最后就是 SJMP $ 自己循环了
woshiwml 发表于 2009-10-7 11:01

确实,你是对的!

使用特权

评论回复
13
不亦心| | 2009-10-7 14:16 | 只看该作者
你把俺的话贴出去看看别人怎么说
别的俺不多说了

11# 徐小剑

使用特权

评论回复
14
不亦心| | 2009-10-7 14:22 | 只看该作者
补充:你没理解“不知道你硬件电路是怎样的”这句话的意思

还有,有闪烁的话,你一定没有设置LED的属性,把它设置为数字的试试。

你放真的是模拟的属性吧


11# 徐小剑

使用特权

评论回复
15
徐小剑|  楼主 | 2009-10-7 14:56 | 只看该作者
14# 不亦心
我用的仿真软件是proteus呀!我不知道数字属性和模拟属性在哪里设置!

使用特权

评论回复
16
dinghuanai920| | 2009-10-7 15:55 | 只看该作者
程序没有问题,第一个实现闪烁,第二个只闪烁一次
可能是其他地方出问题了

使用特权

评论回复
17
不亦心| | 2009-10-7 18:34 | 只看该作者
汗啊,这么多误人子弟,不负责任的
看着就来气,,,,吼吼!!!!!!!!
跟本贴最后一贴,希望能把LS的脑袋吼清醒过来,顺便BS一下不负责任的人

→↑←关于这一条的解释:“一,晶振稍微大一点儿,第一个程序都是常亮,因为你没延时。”
LZ可知道视觉惰性这一说??视觉暂留时间约为0.05至0.2秒,下面看看
你的程序(就假设晶振是6MHZ)
SETB P1.0;2us
CLR  P1.0;2us
SJMP MAIN;4us
总共也不过8us就循环一次,试问你能看到闪烁???????况且LED还有余辉呢???
敢问那些声称程序没有错误的大虾们,你们的眼睛的分辨率多大,这么牛X……

→↑←关于这一句的解释“二,用拉电流驱动LED,第二个程序常灭”
也就是让LED阴极接地,P1.0高电平驱动,这个闪亮一下常灭,不用俺解释了吧

→↑←关于这一句的解释“三,用灌电流驱动LED,第二个程序常亮”
也就是让LED的阳极接电源,P1.0低电平驱动,这个常亮也没问题吧。

→↑←关于LZ的这一句的解释“我用的仿真软件是proteus呀!我不知道数字属性和模拟属性在哪里设置!”
LZ,俺知道你用的是什么东东,没必要给俺强调。
双击LED看看有没有属性设置,模拟数字你应该认识的。

→↑←关于这个问题的解释

俺很郁闷,这么多人让俺郁闷的还以为俺的观点出了大错,还以为这几天俺睡觉睡晕了呢
为了验证俺到底是不是错了,俺用Proteus 7.5版本,(用89c51,12MHZ的晶振,LED—red 数字属性,2.0V)
把LZ的程序原封未动的搬过去,仿真了一下,额最后还是决定不改变额的观点

众口铄金呀,弄得俺很是心虚,唉

衷心的希望论坛的同仁们能够本着负责人的态度回帖!!!!!!!

over

使用特权

评论回复
18
ningling_21| | 2009-10-7 18:40 | 只看该作者
原来是用模拟软件仿真的...

使用特权

评论回复
19
徐小剑|  楼主 | 2009-10-7 19:23 | 只看该作者
其实根本就与频率无关!

使用特权

评论回复
20
alan__lgh| | 2009-10-8 11:12 | 只看该作者
理论与实物所产生的结果还是有差别的。

使用特权

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

本版积分规则

43

主题

323

帖子

0

粉丝