匿名使用者
匿名使用者 發問時間: 電腦與網際網路硬體附加元件 · 2 0 年前

請問單晶片89c51、89s51他們的c和s有何差別?

請問單晶片89c51、89s51他們的c和s有何差別?

1 個解答

評分
  • Rex
    Lv 6
    2 0 年前
    最佳解答

    在ATMEL的89S51系列的89S51與89C51功能相同。指令相容。HEX程式無需任何轉換可以直接使用。89S51只比89C51增加了一個看門狗功能。89S51的其他功能可以參見89C51的資料。

    看門狗具體使用方法如下:

    在程式初始化中向看門狗寄存器(WDTRST位址是0A6H)中先寫入01EH,再寫入0E1H。即可激活看門狗。

    Org 0000

    Ljmp begin

    Begin:

    Mov 0A6H,#01EH ;先送1E

    Mov 0A6H,#0E1H ;後送E1

    ;在程式初始化中啟動看門狗。

    ……

    ……

    For:

    ……

    Mov 0A6H,#01EH ;先送1E

    Mov 0A6H,#0E1H ;後送E1

    ;喂狗指令

    ……

    Ljmp for

    在C語言中要增加一個聲明語句。

    在AT89X51.h聲明檔中增加一行 sfr WDTRST = 0xA6;

    Main()

    {

    WDTRST=0x1E;

    WDTRST=0xE1;//初始化看門狗。

    While (1)

    {

    WDTRST=0x1E;

    WDTRST=0xE1;//喂狗指令

    }

    }

    注意事項:

    1. 89S51的看門狗必須由程式啟動後才開始工作。所以必須保證CPU有可靠的上電復位。否則看門狗也無法工作。

    2. 看門狗使用的是CPU的晶振。在晶振停振的時候看門狗也無效。

    3. 89S51只有14位計數器。在16383個機器週期內必須至少喂狗一次。而且這個時間是固定的,無法更改。當晶振為12M時每16個毫秒需喂狗一次。以上程式我已調試通過。還利用計時器把看門狗的喂狗時間延長幾秒至幾分鐘。

還有問題?馬上發問,尋求解答。