打印

再提汇编软复位问题?

[复制链接]
2210|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
diannaoza|  楼主 | 2007-1-22 12:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
org 0000h
ajmp beg
org 0003h
reti
org 000bh
reti
org 0013h
reti
org 001bh
reti
org 0023h
reti

org 0030h
beg:
jb 00h,beg1
inc 21h
mov r6,#99h
beg1:
mov r6,#88h
loop1:
cpl 00h
       clr a;;软复位
       push acc
    push acc
    reti ;;软复位
nop
ajmp loop1
end

看了相关的贴子,说复位到0000h,重新运行,寄存器状态不确定?
我上面的例子软件模拟运行却是确定的。
//我想得到的是位00h,在软复位后还是保持在没软复位前的状态//。
当00h=1时,软复位后它的值还是1,不会因为软复位而改变。
这样运行程序有问题吗?

相关帖子

沙发
hotpower| | 2007-1-22 12:37 | 只看该作者

应该没问题,如何知道有问题???

使用特权

评论回复
板凳
maychang| | 2007-1-22 18:46 | 只看该作者

没掉电,各RAM内容就是确定的,不会成为随机数

各SFR在硬复位时初始化,软复位不会初始化。

使用特权

评论回复
地板
conwh| | 2007-1-22 21:25 | 只看该作者

还是不建议这样使用,因为你的这段程序不是充分地说明各

比如说,你的口状态当发生改变时,你这样的“复位”就不能改变口的状态,有时可能还是危险的。

使用特权

评论回复
5
diannaoza|  楼主 | 2007-1-22 23:55 | 只看该作者

我想知道这样的软复位什么场合可以用,适合用?

当然我想要的是就是不想让寄存器的状态改变,而让程序从头(0000H)处开始运行?当然是有用处的。
也就想多解下这样的软件复位,可以在什么场合下用,适合用,可靠用,不会说这样的软复位什么场合也不能用吧?HeHe...

使用特权

评论回复
6
hotpower| | 2007-1-23 00:02 | 只看该作者

一路人~~~

使用特权

评论回复
7
diannaoza|  楼主 | 2007-1-23 00:04 | 只看该作者

软复位后想在特定的时间得到运行体!

;;硬件带硬狗;;想得到在特定的时间里“运行体”;;
org 0000h
ajmp beg
org 0003h
reti
org 000bh
reti
org 0013h
reti
org 001bh
reti
org 0023h
reti

org 0030h
beg:
jb 00h,beg1
;;;
;;;运行体后
pcon,#2;;;
beg1:
mov p1,#0ffh
mov p3,#0ffh
mov tmod,#22h
mov smod,#55h
mov scon,#50h
mov ie,#83h
..
loop1:
..
cpl 00h
..
       clr a;;软复位
       push acc
    push acc
    reti ;;软复位
nop
ajmp loop1
end

看了相关的贴子,说复位到0000h,重新运行,寄存器状态不确定?
我上面的例子软件模拟运行却是确定的。
//我想得到的是位00h,在软复位后还是保持在没软复位前的状态//。
当00h=1时,软复位后它的值还是1,不会因为软复位而改变。
这样运行程序有问题吗?

 

使用特权

评论回复
8
diannaoza|  楼主 | 2007-1-23 00:06 | 只看该作者

一路人~~~

“” 一路人~~~“”什么叫一路人,倒塌...HeHe...

使用特权

评论回复
9
hotpower| | 2007-1-23 00:10 | 只看该作者

倒塌了~~~有硬狗就原地踏步掐死狗~~~硬复位操心少的~~~

使用特权

评论回复
10
diannaoza|  楼主 | 2007-1-23 00:14 | 只看该作者

有硬狗就原地踏步掐死狗?

有硬狗就原地踏步掐死狗!

我的实体运行部份运行不了。这个运行是在寄存器标志为1的情况下进行的。你硬启了就进不了我的运行实体,因为寄存器复位初始。还有这个软件复位什么场合可以用??

使用特权

评论回复
11
dengm| | 2007-1-23 00:21 | 只看该作者

RE

    ACALL SUB_RETI
    clr a;;软复位
    MOV IE, A
    push acc
    push acc
SUB_RETI:
    reti ;;软复位

使用特权

评论回复
12
xwj| | 2007-1-23 00:24 | 只看该作者

软复位不是那么简单的,还有很多事要做的


IO
SP
PSW
中断标志和配置
IE
中断占用
清内存
部分特殊寄存器
外围器件的释放
正常初始化
等等等等。。。


系统可靠性要考虑的东西很多的,LZ想的还是过于简单了哦

软复位、特殊处理的提出是基于出错情况的不确定性来假设的,就是说复位时的情况、寄存器值可能是你不知道或不可预计、不受控的
虽然现在能用,但不保证以后或现场不出错误哦


虚心点吧,再仔细点哦

对你的领悟和应用能力表示赞赏,再接再厉,把结构化编程和可靠性考虑成为习惯,把51彻底研究透彻,把思路和知识面无限扩展,那你就是高手了

加油吧!
 
 

使用特权

评论回复
13
conwh| | 2007-1-23 00:25 | 只看该作者

为什么非得再从0000开始?

使用特权

评论回复
14
hotpower| | 2007-1-23 00:39 | 只看该作者

今天遇到两位"一路人"~~~有意思~~~

倒塌了~~~昨天看丁俊辉打球到6:00,该倒塌去了~~~

使用特权

评论回复
15
diannaoza|  楼主 | 2007-1-23 00:44 | 只看该作者

为什么非得再从0000开始?想节省程序存储字节。

也就是有想当的一部分程序是共用的。

使用特权

评论回复
16
hotpower| | 2007-1-23 00:51 | 只看该作者

晕~~~这个你先请教一下dengm~~~

使用特权

评论回复
17
diannaoza|  楼主 | 2007-1-23 01:43 | 只看该作者

软件复位与程序构架!

org 0000h
ajmp beg
org 0003h
..
reti
org 000bh
..
reti
org 0013h
..
reti
org 001bh
..
reti
org 0023h
..
reti

org 0030h
beg:
mov sp,#5fh;;
mov p1,#0ffh
mov p3,#0ffh
mov tmod,#22h
mov smod,#55h
mov scon,#50h
mov ie,#83h
loop:
;;500b的主体程序;;
;;;;
jb 00h,rrdd;;;这个rrdd不常进入只是偶而用下;;;
loop1:
500b的子体

here:mov pcon,#01h
ajmp here
;;//

子程序的一部份:;;当进入这个时;;
rrdd:
nop
jb 00h,rrd1
    setb 00h
       ACALL SUB_RETI
    clr a;;软复位
    MOV IE, A
    push acc
    push acc
       SUB_RETI:
    reti ;;软复位

    rrd1:
主体处理完的得到的相关数据
    clr 00h
ret
end

不知道完成这样的程序,用这样的构架是否有问题?还有更好的构架吗?谢谢!

使用特权

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

本版积分规则

21

主题

315

帖子

0

粉丝