這是C++代碼,::是作用域符號,在這里用來分隔類名以及類的成員函數(shù)(::前面是類名,后面是成員函數(shù)的名字)。以~開頭且名念野字跟類名一樣的成員函數(shù)是類的"析構(gòu)函數(shù)",即類對象被銷毀時調(diào)用的函數(shù),這個函仔毀喊數(shù)一般用來做一些清理工作,比如刪除該對象擁有的的其它對象,或關(guān)閉它打開的文件,等等。
創(chuàng)新互聯(lián)主營大同網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都APP應(yīng)用開發(fā),大同h5成都微信小程序搭建,大同網(wǎng)站營銷推廣歡迎大同等地區(qū)企業(yè)咨詢
從代碼上看,reset()是CsmaCA802_15_4這個類的成員函數(shù),reset字面上講是“重置”,所以余租這個函數(shù)應(yīng)該是為類的成員變量重置初始值。
可以使用下面的程序跳到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)用。
下面的小段匯編函數(shù)可以在中斷程序或主鄭尺程序中調(diào)用,該函數(shù)將0x0000壓棧,然后通過“RETI”出棧,這將清除中斷環(huán)境并讓程序從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
as
new
PUSH
ACC
;
return
address
to
stack
PUSH
ACC
RETI
;
execute
return
of
interrupt
END
以上程序讓喊在選擇bank
0寄存器組時工作良好,假如選擇的不是bank0寄存器組,那么可能無法獲得預(yù)料的結(jié)果。你應(yīng)該在以上的程序或啟動代碼中加上“MOV
PSW,
#0”來選擇bank
0寄存器組。
以上文章由龍嘯九天翻譯自KEIL
FAQ,可能有疏漏,歡迎提出。
這謹(jǐn)散埋個是曾經(jīng)一個天才級的年輕人寫的掘姿語句
#define
Reset()
((void
(code
*)
(void))
0x0000)
()
你在要復(fù)位的的時候,添加Reset();就可以實現(xiàn)祥螞軟件復(fù)位了