菜鸟问问题1

[复制链接]
4771|20
 楼主| 徐小剑 发表于 2009-10-6 12:04 | 显示全部楼层 |阅读模式
请教一下大家:
                  SJMP   $和 SJMP 标识符 有什么区别
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语句一样的?
chen3bing 发表于 2009-10-6 15:49 | 显示全部楼层
while(1);
ningling_21 发表于 2009-10-6 17:43 | 显示全部楼层
loop:  sjmp  loop



       sjmp $  

一样的效果...
 楼主| 徐小剑 发表于 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闪烁的功能。
难道真的是我的仿真出问题了!
lyjian 发表于 2009-10-7 08:06 | 显示全部楼层
这两段程序不一样,仿真的效果也不会一样
woshiwml 发表于 2009-10-7 11:01 | 显示全部楼层
上面程序闪       下面程序被清零之后,最后就是 SJMP $ 自己循环了
不亦心 发表于 2009-10-7 12:12 | 显示全部楼层
不知道你硬件电路是怎样的
但是就这两个程序而言,不可能有闪烁的现象,两个程序也截然不同。
一,晶振稍微大一点儿,第一个程序都是常亮,因为你没延时。
二,用拉电流驱动LED,第二个程序常灭
三,用灌电流驱动LED,第二个程序常亮

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

你应该好好看看你上一个问题中,别人给你的建议程序,看看人家怎么写的。汇编就是这样,某些格式就是千篇一律的,大家都这样写就有他这样写的原因,你没必要标新立异,独树一帜。
 楼主| 徐小剑 发表于 2009-10-7 13:18 | 显示全部楼层
本帖最后由 徐小剑 于 2009-10-7 13:38 编辑

10# 不亦心
硬件电路是一样的!
第一条程序是闪烁的,所以你的第一句话就错了!
 楼主| 徐小剑 发表于 2009-10-7 13:37 | 显示全部楼层
上面程序闪       下面程序被清零之后,最后就是 SJMP $ 自己循环了
woshiwml 发表于 2009-10-7 11:01

确实,你是对的!
不亦心 发表于 2009-10-7 14:16 | 显示全部楼层
你把俺的话贴出去看看别人怎么说
别的俺不多说了

11# 徐小剑
不亦心 发表于 2009-10-7 14:22 | 显示全部楼层
补充:你没理解“不知道你硬件电路是怎样的”这句话的意思

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

你放真的是模拟的属性吧


11# 徐小剑
 楼主| 徐小剑 发表于 2009-10-7 14:56 | 显示全部楼层
14# 不亦心
我用的仿真软件是proteus呀!我不知道数字属性和模拟属性在哪里设置!
dinghuanai920 发表于 2009-10-7 15:55 | 显示全部楼层
程序没有问题,第一个实现闪烁,第二个只闪烁一次
可能是其他地方出问题了
不亦心 发表于 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
ningling_21 发表于 2009-10-7 18:40 | 显示全部楼层
原来是用模拟软件仿真的...
 楼主| 徐小剑 发表于 2009-10-7 19:23 | 显示全部楼层
其实根本就与频率无关!
alan__lgh 发表于 2009-10-8 11:12 | 显示全部楼层
理论与实物所产生的结果还是有差别的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

323

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部