Cygnal 51單片機的特點與應(yīng)用
3.2軟件設(shè)計
軟件設(shè)計有幾點需要注意:
3.2.1如何從應(yīng)用程序?qū)慒lash
(1)要點
在線編程允許將Flash像E2PROM一樣用于非易失性信息的存儲,用MOVC指令讀?。∕OVC a,@A+DPTR),用MOVX指令寫入(MOVX @A+DPTR, a)。Flash 是按一系列512 k的頁組織的,另外還有一個128 k的頁,該頁位于Flash的頂部,起始地址為0x8000 。由于寫操作只能寫入0, 因此在寫一個Flash字節(jié)之前,包含該字節(jié)的頁必須首先被擦除(使該頁中的所有位都為1),該字節(jié)必須被初始化為0xFF,一個Flash 擦除操作將一頁內(nèi)的所有字節(jié)初始化為0xFF。含有讀鎖定字節(jié)和寫/擦除鎖定字節(jié)的Flash 頁不能由用戶軟件擦除(但是,該頁可以由用戶軟件寫入),該頁只能通過JTAG 接口擦除。
(2)擦除一個Flash頁
在進行Flash寫或擦除之前,必須根據(jù)當前的系統(tǒng)時鐘設(shè)置FLSCL中的FLASCL位,在進行寫之前必須將PSWE置1。在進行Flash擦除之前,必須將PSWE和PSEE置1。
一個Flash頁可以通過下述過程擦除:
①根據(jù)當前系統(tǒng)時鐘頻率值按C8051F000數(shù)據(jù)表的說明設(shè)置FLSCL(當使用缺省的2 MHz內(nèi)部振蕩器時,FLSCL=0x86)。
②通過向PSCTL寫入03 H使PSWE和PSEE置1。
④如果不再進行擦除操作,將PSEE設(shè)置為‘0’。
擦除每個頁需要10~20 ms的時間。注意CPU內(nèi)核在Flash擦除過程中停止工作,但外設(shè)(像ADC,UART,SMBus和定時器)仍然工作。在擦除過程中產(chǎn)生的任何中斷都將被掛起,直到該過程結(jié)束。在寫一個Flash字節(jié)期間CPU的工作情況與此相同。
(3)寫一個Flash字節(jié)
(4)更新Flash 中的數(shù)據(jù)
當保存一組配置信息時,經(jīng)常需要在一組字節(jié)中單獨改變某個字節(jié)的數(shù)值。單獨更新某個字節(jié)(或字節(jié)子集)的一般過程如下:
①將Flash頁拷貝到一個臨時存儲區(qū)(RAM或一個已被擦除的‘臨時’Flash頁)。
外接100 kHz RC方式外部時鐘,用于低功耗設(shè)計。
4個按鍵:由于I/O口很多,而鍵盤數(shù)目又很少,因此采用簡單的非編碼鍵盤,工作于中斷方式。
LCD顯示(16字符×2行):采用由HD44780構(gòu)成的液晶顯示模塊。
輸入電路由測量變壓器、精密檢波電路構(gòu)成:電壓互感器和電流互感器將被測電壓和電流變換至精密檢波電路所能接受的信號,然后經(jīng)精密檢波電路傳送給8051F000的A/D。
輸出控制電路由P1口輸出控制信號,控制8路固態(tài)繼電器的接通和短開。
評論