久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
有關(guān)STC單片機芯片的軟件復(fù)位系統(tǒng)
[打印本頁]
作者:
dalaoshi
時間:
2023-9-24 06:18
標題:
有關(guān)STC單片機芯片的軟件復(fù)位系統(tǒng)
為何我的以下代碼不起作用?
RESETHERE:
MOV A, #56H
LCALL SENTONEBYTE1
CLR P5.4
LCALL DELAY4
MOV 0C7H, #00100000B ;RESET TO AP
SJMP $
DIGITINPUTEXIT:
RET
執(zhí)行此命令后并沒有重新啟動,會在附近重復(fù)打轉(zhuǎn),之前已經(jīng)送出一個#56H的字節(jié)到串口,確定是有執(zhí)行到這里的。
這問題從STC12開始到現(xiàn)在STC8H了都沒有解決,是否之前還要設(shè)定什么寄存器呢?
作者:
188610329
時間:
2023-9-24 15:37
軟件 復(fù)位 只需要
MOV 0C7H, #20H
這一句 就能實現(xiàn)。不存在任何前置條件。
你不如考慮一下, 你復(fù)位前的幾個操作,是否阻止了復(fù)位代碼的運行。
假定,P01 是 LED, P00 是按鍵開關(guān)。
CLR P0.1 ; 點亮 LED
Roop1:
DJNZ R2,Roop1
DJNZ R3,Roop1
SETB P0.1 ; 滅LED
JB P0.0,$ ; 等待按鍵按下
MOV 0C7H,#20H ;請求復(fù)位
SJMP $
這種方法應(yīng)該是最簡單測試 復(fù)位是否成功的方法吧?
作者:
dalaoshi
時間:
2023-9-24 23:39
很難理解為何會有這樣的情況,照我理解軟件重置后所有寄存器和記憶體都應(yīng)該歸零,然后從0000開始執(zhí)行,我的板沒有按鈕,只有一顆指示燈P5.4,無法用你的方法檢測,因此我在代碼加上四個重置命令,并關(guān)閉中斷,如果重置無效會看到LED閃滅,結(jié)果證明第一次重置就有效,但沒有回到0000開始執(zhí)行,而在這個副程式不斷重復(fù)。我這副程式有一個寫藍牙模塊的副程式,可以看到不斷有字節(jié)送往串口。
DIGITINPUT2: ;WRITE ECB
LCALL DELAYLONGLONG
LCALL ECB_BONDNAMELAH ;寫藍牙
LCALL DELAYLONGLONG
RESETHERE:
;MOV A, #56H
;LCALL SENTONEBYTE1
CLR EA
CLR P5.4
LCALL DELAY3
MOV 0C7H, #00100000B ;RESET TO AP
SETB P5.4
LCALL DELAY3
MOV 0C7H, #00100000B ;RESET TO AP
CLR P5.4
LCALL DELAY3
MOV 0C7H, #00100000B ;RESET TO AP
SETB P5.4
LCALL DELAY3
MOV 0C7H, #00100000B ;RESET TO AP
SJMP $
DIGITINPUTEXIT:
RET
作者:
188610329
時間:
2023-9-25 16:31
開機后 啥事都不干,先讓 LED 慢閃 3 次, 然后 執(zhí)行 你的其他代碼,
然后, 在 執(zhí)行 MOV 0C7H, #20H 之前,先點亮 LED, 然后 執(zhí)行重起 再用 SJMP $ 停住代碼。
你就可以通過 LED 有沒有常亮 來知道 重啟是否有效了。 然后在 各代碼 出 分別 追加 快閃 來確定問題出在哪里。
作者:
dalaoshi
時間:
2023-9-25 22:06
這問題終于有了答案,原來是我高估了軟件重置的功能,重置后只是將各個功能寄存器恢復(fù)DEFAULT值,然后從0000開始執(zhí)行,并沒有將內(nèi)部RAM全部請零,這就影響程式的路徑了,必須在MAIN開始處加上清零代碼,這樣就和重新開機一樣了。
MAIN:
;LCALL OSC
LCALL IOSET8G ;8G初始時IO腳全為高阻,必須設(shè)定LED才會亮
CLEANRAM: ;THIS CLEAR INTERNAL RAM FFH TO 00H 這個不可用副程式,因為SP會不見?
MOV A, #0
MOV R0, #0FFH
CLEANRAM1:
MOV @R0, A
DJNZ R0, CLEANRAM1
作者:
188610329
時間:
2023-9-25 22:37
dalaoshi 發(fā)表于 2023-9-25 22:06
這問題終于有了答案,原來是我高估了軟件重置的功能,重置后只是將各個功能寄存器恢復(fù)DEFAULT值,然后從000 ...
那個…… 一般 沒必要全IDATA清零吧?
通常只有 用 C51 的,才會需要 全IDATA 甚至 XDATA 上電 清0吧?
玩匯編的,一般都是 用什么 給什么上初值吧? 就好比 R0~R7 以及 A 你都是用之前會 上初值吧? 不會說默認以為他是0 的不是么?
作者:
dalaoshi
時間:
2023-9-28 03:28
本帖最后由 dalaoshi 于 2023-9-28 14:25 編輯
上電是應(yīng)該所有RAM都是零的,特殊功能寄存器都被系統(tǒng)設(shè)定為初始值(不一定是零),然后用戶軟件開始賦值跑動。
我納悶為何軟件重置系統(tǒng)是看門狗必須使用的關(guān)鍵功能,卻沒有看過軟件開始時必須將RAM清零的論述,否則看門狗軟件重置后,可能會在故障原地繼續(xù)打轉(zhuǎn),因此我做了一項實驗,將
MOV 0C7H, #00100000B ;RESET TO AP 改成:
MOV 0C7H, #01100000B ;RESET TO ISP 重置后從系統(tǒng)ISP開始執(zhí)行代碼
再把開始清零的代碼去除。
這樣運行軟件代碼后,也能完全重啟,這是因為系統(tǒng)ISP里有代碼能清除RAM為零。
所以以后軟件重置必須是:
MOV 0C7H, #01100000B ;RESET TO ISP ;60H
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲一区二区在线播放
|
香蕉久久久久久
|
国产精品色一区二区三区
|
国产精品久久久久久福利一牛影视
|
黄色大片视频
|
一区二区三区四区在线免费观看
|
视频一区二区中文字幕
|
综合久久网
|
欧美精品一区久久
|
中文字幕人成乱码在线观看
|
日韩精品一区二区三区视频播放
|
午夜精品一区二区三区在线
|
99九九视频
|
一区二区精品
|
国产视频精品在线
|
亚洲天堂色
|
国产高清视频
|
欧美日韩专区
|
亚洲精品中文字幕
|
国产情侣一区
|
久草.com
|
国产精品一区二区三区99
|
久久一二区
|
91大神在线资源观看无广告
|
yiren22 亚洲综合
|
欧美特级黄色
|
日韩成人免费在线视频
|
国产馆
|
亚洲成人一二三
|
日韩一区二区三区在线观看
|
91久久精品国产免费一区
|
亚洲一区在线免费观看
|
亚洲综合天堂
|
日日摸夜夜爽人人添av
|
久草电影网
|
在线国产一区二区
|
久久久久国产精品人
|
免费国产一区
|
久久精品久久久久久
|
久久夜视频
|
在线欧美日韩
|