51单片机软件复位函数
51單片機(jī)無自帶的看門狗,沒有提供軟件復(fù)位的函數(shù)和機(jī)制,要想實現(xiàn)軟件復(fù)位,只能通過強(qiáng)制將PC指針指到0x0000位置,
通過以下函數(shù)將PC指針強(qiáng)制指到0x0000:
void reset(void)
{
?? ?((void (code *) (void)) 0x0000) ();
}
可以使用下面的程序跳到0000H實現(xiàn)軟復(fù)位,下面的程序?qū)嶋H上是一個函數(shù)指針,指針指向了0000H地址。
((void (code *) (void)) 0x0000) ();
下面的例子將實現(xiàn)軟件自復(fù)位
void reset (void) {((void (code *) (void)) 0x0000) (); }void main (void) {reset (); }你可能注意到以上的軟復(fù)位程序并不能清除8051的中斷系統(tǒng)和某些8051的外圍設(shè)備,當(dāng)您在中斷程序中調(diào)用上面的軟件復(fù)位程序后,中斷將再不能觸發(fā)。因此,以上的軟復(fù)位程序不能在中斷子程序中調(diào)用。
STC的單片機(jī)有軟件復(fù)位指令,即ISP_CONTR,地址在0E7H 單元(即str ISP_CONTR=0xE7),MOVISP_CONTR,#00100000B(C語言為ISP_CONTR=0x20),內(nèi)狗也是一條指令MOV WDT_CONTR,#00111100B!
STC 51系列單片機(jī)Datasheet中指出:傳統(tǒng)的8051 單片機(jī)由于硬件上未支持此功能,用戶必須用軟件模擬實現(xiàn),實現(xiàn)起來較麻煩。現(xiàn)STC 新推出的增強(qiáng)型8051 根據(jù)客戶要求增加了ISP_CONTR 特殊功能寄存器,實現(xiàn)了此功能。用戶只需簡單的控制ISP_CONTR 特殊功能寄存器的其中兩位 SWBS / SWRST 就可以系統(tǒng)復(fù)位了。
總結(jié)
以上是生活随笔為你收集整理的51单片机软件复位函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机专业竞聘词150,计算机专业组长竞
- 下一篇: 经验:几个985/211/普通院校的本科