新聞中心

        C51軟復(fù)位分析

        作者: 時間:2012-07-04 來源:網(wǎng)絡(luò) 收藏


        單片機復(fù)位的更好方法

        帖子中匯編語言解釋如下:

        clra//清除ACC=0

        pushacc//壓0到堆?!?位

        pushacc//再壓0到堆?!?位

        reti//返回到0地址,從而執(zhí)行。

        帖子作者的這種復(fù)位方法比較麻煩,更加簡單的復(fù)位寫法是(摘自《C缺陷與陷阱》):

        (*(void(*)())0)();

        本句的分析方法同上,但更加精煉,沒有多余的匯編語句。



        上述復(fù)位的方法可稱為軟件復(fù)位。

        軟件復(fù)位跟真正上電復(fù)位有很大差別:上電復(fù)位時大部分寄存器都有確定的復(fù)位值;軟件
        復(fù)位則只相當(dāng)于從0地址開始執(zhí)行而已,寄存器不會變?yōu)榇_定的復(fù)位值。

        如果用戶要編程實現(xiàn)上電復(fù)位這種情況,在程序中不要踢看門狗即可。大部分單片機都有
        看門狗吧。

        附錄

        筆者精于DSPC24xx,但不太懂;讀者應(yīng)能從函數(shù)指針的定義和引用中看出來,C語言的
        設(shè)計哲學(xué)是使用形式和定義形式一致,雖然這一點飽受質(zhì)疑。

        如果你覺得雞蛋好吃時,不必認識那只母雞;但如果你覺得本文不錯,請來筆者網(wǎng)站坐坐
        吧www.1piao.com/wlg.asp。

        2004年7月看到這個有意思的帖子,也干了一件蠢事——買了飛利浦的一款拍照手機,屏幕
        有強烈閃爍感,飛利浦拒換,服務(wù)意識真是不敢恭維。

        可來信免費轉(zhuǎn)載本文,請保持整篇文章的完整性,包括本句。


        ----------------2---------------


        匯編中的ORG0X0000H在中如何實現(xiàn).
        一般是在連接定位模塊中來進行地址分配
        1、選擇"optionsfotarget"
        2、選擇“BL51Locate”
        3、在code欄填入?PR?MAIN?SS(0x800)

        其中MAIN是你要定位的函數(shù)名,SS是函數(shù)所在的文件名,要是有多個函數(shù)需要定位,則在中間加
        逗號。

        功能強大的時鐘中斷
          在單片機程序設(shè)計中,設(shè)置一個好的時鐘中斷,將能使一個CPU發(fā)揮兩個CPU的功效,大大方
        便和簡化程序的編制,提高系統(tǒng)的效率與可***作性。我們可以把一些例行的及需要定時執(zhí)行的程
        序放在時鐘中斷中,還可以利用時鐘中斷協(xié)助主程序完成定時、延時等***作。
          下面以6MHz時鐘的AT89系統(tǒng)為例,說明時鐘中斷的應(yīng)用。
          定時器初值與中斷周期 時鐘中斷無需過于頻繁,一般取20mS(50Hz)即可。如需要百分之一
        秒的時基信號,可取10mS(100Hz)。這里取20mS,用定時器T0工作于16位定時器方式(方式1)。


        關(guān)鍵詞: C51 軟復(fù)位分析

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 嵊州市| 余姚市| 鄯善县| 嘉善县| 分宜县| 扎兰屯市| 罗源县| 宁阳县| 庄浪县| 呼伦贝尔市| 奉贤区| 上饶县| 隆安县| 哈巴河县| 万全县| 杭锦旗| 铜山县| 榆社县| 柯坪县| 民乐县| 竹溪县| 扎鲁特旗| 翁牛特旗| 鹤庆县| 新乡县| 西乌| 永兴县| 霍州市| 大方县| 图们市| 石泉县| 万年县| 张掖市| 穆棱市| 屏山县| 罗平县| 娱乐| 敖汉旗| 辽中县| 兴安盟| 五寨县|