導航:首頁 > 軟體知識 > 復位程序怎麼寫

復位程序怎麼寫

發布時間:2023-11-10 00:16:33

㈠ 如何使用單片機C語言實現復位

可以使用下面的程序跳到0000H實現軟復位,下面的程序實際上是一個函數指針,指針指向了0000H地址。
((void
(code
*)
(void))
0x0000)
();
下面的例子將實現軟體自復位void
reset
(void)
{
((void
(code
*)
(void))
0x0000)
();
}
void
main
(void)
{
reset
();
}
你可能注意到以上的軟復位程序並不能清除8051的中斷系統和某些8051的外圍設備,當您在中斷程序中調用上面的軟體復位程序後,中斷將再不能觸發。因此,以上的軟復位程序不能在中斷子程序中調用。
下面的小段匯編函數可以在中斷程序或主程序中調用,該函數將0x0000壓棧,然後通過「RETI」出棧,這將清除中斷環境並讓程序從0000H重新開始運行。
?PR?RESET
SEGMENT
CODE
RSEG
?PR?RESET
;
C
prototype:
void
reset
(void);
PUBLIC
reset
reset:
POP
ACC
;
pop
return
address
POP
ACC
CLR
A
;
push
0
as
new
PUSH
ACC
;
return
address
to
stack
PUSH
ACC
RETI
;
execute
return
of
interrupt
END
以上程序在選擇bank
0寄存器組時工作良好,假如選擇的不是bank0寄存器組,那麼可能無法獲得預料的結果。你應該在以上的程序或啟動代碼中加上「MOV
PSW,
#0」來選擇bank
0寄存器組。
以上文章由龍嘯九天翻譯自KEIL
FAQ,可能有疏漏,歡迎提出。

㈡ 如何從程序中開始復位

程序控制的軟體復位方法
微處理器復位方法:

用硬體引腳RESET的復位方法;

用看門狗的復位方法;

自己程序控制的復位方法(本文方法,叫軟體復位)。

軟體復位實現方法

首先聲明一個函數指針,指向復位後要開始執行指令的位置:

void (*app_start)(void) = 0x0000;

可以根據具體微處理器復位後的位置,修改後邊的地址。

之後,在自己的程序中想復位的地方調用app_start(); 也就是跳到0x0000位置執行指令。

可以根據不同微處理器復位的地址,修改上邊的地址(0x0000)。實現上你可以跳到任何位置執行,或調用函數執行。

實例測試

以下以Arino為開發環境來測試。注意:在AVR微處理器中,為了使Arino復位時不再進入引導區,使AVR設置BOOTRST設置為1。

使用函數指針復位方法如下,你能想像到下邊的程序會使LED燈閃亮嗎?

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

///0. 引腳定義
#define LED_PIN 13 //定義LED引腳為13號數據引腳(DIG13)
static void (*reset_this_CPU)(void) = 0x0000; // ***復位本CPU函數指針
///1. 初始化
void setup() {
pinMode(LED_PIN, OUTPUT); // 初始化DIG13為輸出
digitalWrite(LED_PIN, HIGH); //DIG13輸出高電平
delay(1000); //延時1秒
digitalWrite(LED_PIN, LOW); //DIG13輸出低電平
delay(1000); //延時1秒
reset_this_CPU(); //***跳到0x0000地址指針,也就是復位
}
///2. 循環
void loop() {

//此處什麼也沒有啊!
}

結論
用本方法,可以用軟體方式進行復位,也可以用這個函數指針的方法調用任何函數。

閱讀全文

與復位程序怎麼寫相關的資料

熱點內容
如何快捷記錄信息和標注 瀏覽:400
加工中心怎麼調用對刀程序 瀏覽:873
切後台自動結束程序怎麼改 瀏覽:488
火神山有什麼技術 瀏覽:100
佛山市詩蘭陶瓷批發市場在哪裡 瀏覽:753
查詢學生表的全部信息怎麼查 瀏覽:119
數據系統有哪些部分 瀏覽:29
論斤賣的地攤產品怎麼進貨 瀏覽:564
西安北郊海鮮市場有什麼 瀏覽:751
數據墨盒怎麼做 瀏覽:862
量化交易軟體怎麼判斷會漲 瀏覽:592
健康信息化管理的系統有哪些 瀏覽:770
自然資源數據有哪些 瀏覽:876
短線交易如何看盤 瀏覽:257
臨沂光學膜行業市場前景如何 瀏覽:295
怎麼檢舉市場聘用罪犯 瀏覽:469
我能自學什麼技術 瀏覽:722
代理人離職後怎麼找工作 瀏覽:493
java程序消耗內存太大怎麼辦 瀏覽:49
抖音產品如何入池 瀏覽:658