|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
再提匯編軟復位問題? |
| 作者:diannaoza 欄目:單片機 |
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,重新運行,寄存器狀態(tài)不確定? 我上面的例子軟件模擬運行卻是確定的。 //我想得到的是位00h,在軟復位后還是保持在沒軟復位前的狀態(tài)//。 當00h=1時,軟復位后它的值還是1,不會因為軟復位而改變。 這樣運行程序有問題嗎? |
| 2樓: | >>參與討論 |
| 作者: hotpower 于 2007/1/22 12:37:00 發(fā)布:
應該沒問題,如何知道有問題??? |
|
| 3樓: | >>參與討論 |
| 作者: maychang 于 2007/1/22 18:46:00 發(fā)布:
沒掉電,各RAM內(nèi)容就是確定的,不會成為隨機數(shù) 各SFR在硬復位時初始化,軟復位不會初始化。 * - 本貼最后修改時間:2007-1-22 18:47:53 修改者:maychang |
|
| 4樓: | >>參與討論 |
| 作者: conwh 于 2007/1/22 21:25:00 發(fā)布:
還是不建議這樣使用,因為你的這段程序不是充分地說明各個狀態(tài) 比如說,你的口狀態(tài)當發(fā)生改變時,你這樣的“復位”就不能改變口的狀態(tài),有時可能還是危險的。 |
|
| 5樓: | >>參與討論 |
| 作者: diannaoza 于 2007/1/22 23:55:00 發(fā)布:
我想知道這樣的軟復位什么場合可以用,適合用? 當然我想要的是就是不想讓寄存器的狀態(tài)改變,而讓程序從頭(0000H)處開始運行?當然是有用處的。 也就想多解下這樣的軟件復位,可以在什么場合下用,適合用,可靠用,不會說這樣的軟復位什么場合也不能用吧?HeHe... |
|
| 6樓: | >>參與討論 |
| 作者: hotpower 于 2007/1/23 0:02:00 發(fā)布:
一路人~~~ |
|
| 7樓: | >>參與討論 |
| 作者: diannaoza 于 2007/1/23 0:04:00 發(fā)布:
軟復位后想在特定的時間得到運行體! ;;硬件帶硬狗;;想得到在特定的時間里“運行體”;; 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,重新運行,寄存器狀態(tài)不確定? 我上面的例子軟件模擬運行卻是確定的。 //我想得到的是位00h,在軟復位后還是保持在沒軟復位前的狀態(tài)//。 當00h=1時,軟復位后它的值還是1,不會因為軟復位而改變。 這樣運行程序有問題嗎? |
|
| 8樓: | >>參與討論 |
| 作者: diannaoza 于 2007/1/23 0:06:00 發(fā)布:
一路人~~~ “” 一路人~~~“”什么叫一路人,倒塌...HeHe... |
|
| 9樓: | >>參與討論 |
| 作者: hotpower 于 2007/1/23 0:10:00 發(fā)布:
倒塌了~~~有硬狗就原地踏步掐死狗~~~硬復位操心少的~~~ |
|
| 10樓: | >>參與討論 |
| 作者: diannaoza 于 2007/1/23 0:14:00 發(fā)布:
有硬狗就原地踏步掐死狗? 有硬狗就原地踏步掐死狗! 我的實體運行部份運行不了。這個運行是在寄存器標志為1的情況下進行的。你硬啟了就進不了我的運行實體,因為寄存器復位初始。還有這個軟件復位什么場合可以用?? |
|
| 11樓: | >>參與討論 |
| 作者: dengm 于 2007/1/23 0:21:00 發(fā)布:
RE ACALL SUB_RETI clr a;;軟復位 MOV IE, A PUSH acc PUSH acc SUB_RETI: reti ;;軟復位 |
|
| 12樓: | >>參與討論 |
| 作者: xwj 于 2007/1/23 0:24:00 發(fā)布:
軟復位不是那么簡單的,還有很多事要做的 IO SP PSW 中斷標志和配置 IE 中斷占用 清內(nèi)存 部分特殊寄存器 外圍器件的釋放 正常初始化 等等等等。。。 系統(tǒng)可靠性要考慮的東西很多的,LZ想的還是過于簡單了哦 軟復位、特殊處理的提出是基于出錯情況的不確定性來假設的,就是說復位時的情況、寄存器值可能是你不知道或不可預計、不受控的 雖然現(xiàn)在能用,但不保證以后或現(xiàn)場不出錯誤哦 虛心點吧,再仔細點哦 對你的領悟和應用能力表示贊賞,再接再厲,把結(jié)構化編程和可靠性考慮成為習慣,把51徹底研究透徹,把思路和知識面無限擴展,那你就是高手了 加油吧! |
|
| 13樓: | >>參與討論 |
| 作者: conwh 于 2007/1/23 0:25:00 發(fā)布:
為什么非得再從0000開始? |
|
| 14樓: | >>參與討論 |
| 作者: hotpower 于 2007/1/23 0:39:00 發(fā)布:
今天遇到兩位"一路人"~~~有意思~~~ 倒塌了~~~昨天看丁俊輝打球到6:00,該倒塌去了~~~ |
|
| 15樓: | >>參與討論 |
| 作者: diannaoza 于 2007/1/23 0:44:00 發(fā)布:
為什么非得再從0000開始?想節(jié)省程序存儲字節(jié)。 也就是有想當?shù)囊徊糠殖绦蚴枪灿玫摹?br> |
|
| 16樓: | >>參與討論 |
| 作者: hotpower 于 2007/1/23 0:51:00 發(fā)布:
暈~~~這個你先請教一下dengm~~~
|
|
| 17樓: | >>參與討論 |
| 作者: diannaoza 于 2007/1/23 1:43:00 發(fā)布:
軟件復位與程序構架! 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: 主體處理完的得到的相關數(shù)據(jù) clr 00h ret end 不知道完成這樣的程序,用這樣的構架是否有問題?還有更好的構架嗎?謝謝! |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |