【正文】
下,震蕩器停止工作,進入掉電模式的指令是最后一條被執(zhí)行的指令, 片內(nèi) RAM 和特殊功能寄存器的內(nèi)容在終止掉電模式前被凍結(jié)。退出掉電模式的唯一方法是硬件復(fù)位,復(fù)位后將重新定義全部特殊功能寄存器但不改變 RAM 中的內(nèi)容,在 VCC 恢復(fù)到正常工作電平前,復(fù)位應(yīng)無效,且必須保持一定時間以使振蕩器重啟動并穩(wěn)定工作。 程序存儲器的加密: AT89C51 可使用對芯片上的 3 個加密位進行編程( P)或不編程( U)來得到如下表所示的功能: 加密位保護功能表 程序加密位 保護類型 LB1 LB2 LB3 1 U U U 沒有程序保護功能 2 P U U 禁止從外部程序存儲器中執(zhí)行 MOVC 指令 讀取內(nèi)部程序存儲器的內(nèi)容 3 P P U 除上表功能外,還禁止程序校驗 4 P P P 除以上功能外,同時禁止外部執(zhí)行 當加密位 LB1 被編程時,在復(fù)位期間, EA 端的邏輯電平被采樣并鎖存,如果單片機上電后一直沒有復(fù)位,則鎖存起的初始值是一個隨機數(shù),且這個隨機數(shù)會一直保持到真正復(fù)位為止。為使單片機能正常工作,被鎖存的 EA 電平值必須與該引腳當前的邏輯電平一致。此外,加密位只能通過整片擦除的方法第 6 頁 ( 共 15 頁 ) 清除。 FLASH 閃速存儲器的編程 AT89C51 單片機內(nèi)部有 4K 字節(jié)的 FLASH PEROM,這個 FLASH 存儲陣 列出廠時已處于擦除狀態(tài)(即所有存儲單元的內(nèi)容均為 FFH),用戶隨時可對其進行編程。編程接口可接收高電平( +12V)或低電平( VCC)的允許編程信號,低電平編程模式適合于用戶再線編程系統(tǒng),而高電平編程模式可與通用 EPROM編程器兼容。 AT89C51 單片機中,有些屬于低電壓編程方式,而有些則是高電平編程方式,用戶可從芯片上的型號和讀取芯片內(nèi)的簽名字節(jié)獲得該信息 。 AT89C51 的程序存儲器陣列是采用字節(jié)寫入方式編程的,每次寫入一個字節(jié),要對整個芯片內(nèi)的 PEROM 程序存儲器寫入一個非空字節(jié),必須使用片擦除的方式 將整個存儲器的內(nèi)容清除。 編程方法 編程前,需設(shè)置好地址,數(shù)據(jù)及控制信號, AT89C51 編程方法如下: 1. 在地址線上加上要編程單元的地址信號。 2. 在數(shù)據(jù)線上加上要寫入的數(shù)據(jù)字節(jié)。 3. 激活相應(yīng)的控制信號。 4. 在高電壓編程方式時,將 ^EA/VPP 端加上 +12V編程電壓。 5. 每對 FLASH 存儲陣列寫入一個字節(jié)或每寫入一個程序加密位,加上一個 ALE/^PROG 編程脈沖,改變編程單元的地址和寫入的數(shù)據(jù),重復(fù) 1—5 步驟,直到全部文件編程結(jié)束。每個字節(jié)寫入周期是自身定時地,通常約為 。 數(shù)據(jù)查詢: AT89C51 單片機用數(shù) 據(jù)查詢方式來檢測一個寫周期是否結(jié)束,在一個寫周期中,如需要讀取最后寫入的那個字節(jié),則讀出的數(shù)據(jù)的最高位( )是原來寫入字節(jié)最高位的反碼。寫周期完成后,有效的數(shù)據(jù)就會出現(xiàn)在所有輸出端上,此時,可進入下一個字節(jié)的寫周期,寫周期開始后,可在任意時刻進行數(shù)據(jù)查詢。 READY/^BUSY:字節(jié)編程的進度可通過 “RDY/^BSY”輸出信號監(jiān)測,編程期間, ALE 變?yōu)楦唠娖?“H”后 (RDY/^BSY)端電平被拉低,表示正在編程第 7 頁 ( 共 15 頁 ) 狀態(tài)(忙狀態(tài))。編程完成后, 變?yōu)楦唠娖奖硎緶蕚渚途w狀態(tài)。 程序校驗:如果加 密位 LB LB2 沒有進行編程,則代碼數(shù)據(jù)可通過地址和數(shù)據(jù)線讀回原編寫的數(shù)據(jù)。加密位不可能直接變化。證實加密位的完成通過觀察它們的特點和能力。 芯片擦除:利用控制信號的正確組合并保持 ALE/^PROG 引腳 10ms 的低電平脈沖寬度即可將 PEROM 陣列( 4k字節(jié))整片擦除,代碼陣列在擦除操作中將任何非空單元寫入 “1”,這步驟需要再編程之前進行。 讀片內(nèi)簽名字節(jié): AT89C51 單片機內(nèi)有 3 個簽名字節(jié),地址為 030H、 031H和 032H。用于聲明該器件的廠商、型號和編程電壓。讀簽名字節(jié)的過程和單元030H、 031H 和 032H 的正常校驗相仿,只需將 和 保持低電平,返回值意義如下: ( 030H) =1EH 聲明產(chǎn)品由 ATMEL公司制造。 ( 031H) =51H 聲明為 AT89C51 單片機。 ( 032H) =FFH 聲明為 12V編程電壓。 ( 032H) =05H 聲明為 5V編程電壓。 編程接口:采用控制信號的正確組合可對 FLASH 閃速存儲陣列中的每一代碼字節(jié)進行寫入和存儲器的整片擦除,寫操作周期是自身定時的,初始化后它將自動定時到操作完成。AT89C51 MCU Introduction 第 8 頁(共 15 頁) AT89C51 MCU Introduction Description The AT89C51 is a lowpower, highperformance CMOS 8bit microputer with 4K bytes of Flash Programmable and Erasable Read Only Memory (PEROM) and 128 bytes RAM. The device is manufactured using Atmel’s high density nonvolatile memory technology and is patible with the industry standard MCS51? instruction set and pinout. The chip bines a versatile 8bit CPU with Flash on a monolithic chip, the Atmel AT89C51 is a powerful microputer which provides a highly flexible and cost effective solution to many embedded control applications. Features ? Compatible with MCS51? Products ? 4K Bytes of InSystem Reprogrammable Flash Memory ? Endurance: 1,000 Write/Erase Cycles ? Fully Static Operation: 0 Hz to 24 MHz ? ThreeLevel Program Memory Lock ? 128 x 8Bit Internal RAM ? 32 Programmable I/O Lines ? Two 16Bit Timer/Counters ? Six Interrupt Sources ? Programmable Serial Channel ? Low Power Idle and Power Down Modes The AT89C51 provides the following standard features: 4K bytes of Flash, 128 bytes of RAM, 32 I/O lines, two 16bit timer/counters, a five vector twolevel interrupt architecture, a full duplex serial port, onchip oscillator and clock circuitry. In addition, the AT89C51 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port and interrupt system to continue functioning. The Power Down Mode saves the RAM contents but freezes the oscillator AT89C51 MCU Introduction 第 9 頁(共 15 頁) disabling all other chip functions until the next hardware reset. Pin Description VCC Supply voltage. GND Ground. Port 0:Port 0 is an 8bit open drai