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