性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

熱啟動代碼例程應用

熱啟動代碼例程應用

對于工業(yè)控制計算機,往往設有有看門狗電路,當看門狗動作,使計算機復位,這就是熱啟動。熱啟動時,一般不允許從頭開始,這將導致現有的已測量到或計算到的值復位,導致系統(tǒng)工作異常。

因而在程序必須判斷是熱啟動還是冷啟動,常用的方法是:確定某內存單位為標志位(如0x7f位和0x7e位),啟動時首先讀該內存單元的內容,如果它等于一個特定的值(例如兩個內存單元的都是0xaa),就認為是熱啟動,否則就是冷啟動,程序執(zhí)行初始化部份,并將0xaa賦與這兩個內存單元。

根據以上的設計思路,編程時,設置一個指針,讓其指向特定的內存單元如0x7f,然后在程序中判斷,程序如下:

void main()

 {

char data *HotPoint=(char *)0x7f;

if((*HotPoint==0xaa)&&(*(--HotPoint)==0xaa)){else{ HotPoint=0x7e;

/*冷啟動的處進

{

else

{

*HotPoint=0xaa;

*(++HotPoint)=0xaa;

}

}

然而實際調試中發(fā)現,無論是熱啟動還是冷啟動,開機后所有內存單元的值都被復位為0,當然也實現不了熱啟動的要求。

用C語言編程時,開機時執(zhí)行的代碼并非是從main()函數的第一句語句開始的,在main()函數的第一句語句執(zhí)行前要先執(zhí)行一段’起始代碼在執(zhí)行到判斷是否熱啟動的代碼之前,起始代碼已將所有內存單元清零

1.首先修改源文件然后執(zhí)行如下命令:Ax startup.ax 得到startup.obj文件。將此文件拷入HOTSTART.C所在目錄。

2.將編好的C源程序用Cx.EXE編譯好,得到目標文件HOTSTART.OBJ。 

3.用 Lx HOTSTART, STARTUP.OBJ 命令連接,得到絕對目標文件HOTSTART。 

4.用 OHS51 HOTSTART 得到HOTSTART.HEX文件,即可。 對于startup.ax的修改,根據自已的需要進行,如將IDATALEN EQU 80H中的80H改為70H,就可以使6F到7F的16字節(jié)內存不被清零。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 2
收藏 3
關注 27
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧