C51軟復位分析
單片機復位的更好方法
帖子中匯編語(yǔ)言解釋如下:
clra//清除ACC=0
pushacc//壓0到堆?!?位
pushacc//再壓0到堆?!?位
reti//返回到0地址,從而執行。
帖子作者的這種復位方法比較麻煩,更加簡(jiǎn)單的復位寫(xiě)法是(摘自《C缺陷與陷阱》):
(*(void(*)())0)();
本句的分析方法同上,但更加精煉,沒(méi)有多余的匯編語(yǔ)句。
上述復位的方法可稱(chēng)為軟件復位。
軟件復位跟真正上電復位有很大差別:上電復位時(shí)大部分寄存器都有確定的復位值;軟件
復位則只相當于從0地址開(kāi)始執行而已,寄存器不會(huì )變?yōu)榇_定的復位值。
如果用戶(hù)要編程實(shí)現上電復位這種情況,在程序中不要踢看門(mén)狗即可。大部分單片機都有
看門(mén)狗吧。
附錄
筆者精于DSPC24xx,但不太懂C51;讀者應能從函數指針的定義和引用中看出來(lái),C語(yǔ)言的
設計哲學(xué)是使用形式和定義形式一致,雖然這一點(diǎn)飽受質(zhì)疑。
如果你覺(jué)得雞蛋好吃時(shí),不必認識那只母雞;但如果你覺(jué)得本文不錯,請來(lái)筆者網(wǎng)站坐坐
吧www.1piao.com/wlg.asp。
2004年7月看到這個(gè)有意思的帖子,也干了一件蠢事——買(mǎi)了飛利浦的一款拍照手機,屏幕
有強烈閃爍感,飛利浦拒換,服務(wù)意識真是不敢恭維。
可來(lái)信免費轉載本文,請保持整篇文章的完整性,包括本句。
----------------2---------------
匯編中的ORG0X0000H在C51中如何實(shí)現.
一般是在連接定位模塊中來(lái)進(jìn)行地址分配
1、選擇"optionsfotarget"
2、選擇“BL51Locate”
3、在code欄填入?PR?MAIN?SS(0x800)
其中MAIN是你要定位的函數名,SS是函數所在的文件名,要是有多個(gè)函數需要定位,則在中間加
逗號。
功能強大的時(shí)鐘中斷
在單片機程序設計中,設置一個(gè)好的時(shí)鐘中斷,將能使一個(gè)CPU發(fā)揮兩個(gè)CPU的功效,大大方
便和簡(jiǎn)化程序的編制,提高系統的效率與可***作性。我們可以把一些例行的及需要定時(shí)執行的程
序放在時(shí)鐘中斷中,還可以利用時(shí)鐘中斷協(xié)助主程序完成定時(shí)、延時(shí)等***作。
下面以6MHz時(shí)鐘的AT89C51系統為例,說(shuō)明時(shí)鐘中斷的應用。
定時(shí)器初值與中斷周期 時(shí)鐘中斷無(wú)需過(guò)于頻繁,一般取20mS(50Hz)即可。如需要百分之一
秒的時(shí)基信號,可取10mS(100Hz)。這里取20mS,用定時(shí)器T0工作于16位定時(shí)器方式(方式1)。
評論