導航:首頁 > 操作系統 > 51單片機讀寫實例

51單片機讀寫實例

發布時間:2025-03-08 14:27:07

⑴ 51單片機怎麼使用內部EEPROM,上電次數、斷電記憶,怎麼實現計到最大值6千次。

STC 很多都有內部EEPROM,如11或12系列的STC單片機,讀寫內部EEPROM有一定限制,比如寫,必須先擦除再寫,而且一次必須擦除一個扇區,所以還是很麻煩的,只能覆蓋。

要實兆襪現你的功能,一點問題沒有,上電後先讀取上次的計數值,再加1重新寫進去就可以了。
以下是EEPROM讀寫子程序供參考:
;------------------------------------------------
;讀一位元組,調用前需打開 IAP 功能,入口:DPTR = 位元組地址,返回:A = 讀出位元組
IAP_READ:
MOV IAP_CONTR,#ENABLE_IAP ;打開 IAP 功能, 設置 Flash 操作等待時間
MOV IAP_CMD,#ISP_IAP_BYTE_READ ;設置為IAP/ISP/EEPROM位元組讀模式命令
MOV IAP_ADDRH,DPH ;設置目標單元地址的高8位地址
MOV IAP_ADDRL,DPL ;設置目標單元地址的低8位地址
;CLR EA
MOV IAP_TRIG,#5AH ;先送5Ah,再送A5h到ISP/IAP觸發寄存器,每次都需如此
MOV IAP_TRIG,#0A5H ;送完A5h後,ISP/IAP命令立即被觸發起動
NOP
MOV A,IAP_DATA ;讀出的數據在IAP_DATA單元中,送入累加器A
;SETB EA
LCALL IAP_Disable ;關閉 IAP 功能, 清相關的特殊功能寄存器,使CPU處於安全狀態,
;一次連續的IAP操作完成之後建議關閉IAP功能,不需要每次都關
RET
;------------------------------------------------
;位元組編程,散鬧調用前需打開 IAP 功能,入口:DPTR = 位元組地址, A=須編程位元組的數據
IAP_WRITE:
MOV IAP_CONTR,#ENABLE_IAP ;打開 IAP 功能, 設置 Flash 操作等待時間
MOV IAP_CMD,#ISP_IAP_BYTE_PROGRAM ;設置為IAP/ISP/EEPROM位元組編程模式命令
MOV IAP_ADDRH,DPH ;設置目標單元地址的高8位地址
MOV IAP_ADDRL,DPL ;設置目標單元地址的低8位地址
MOV IAP_DATA,A ;要編程的數據先送進ISP_DATA寄存器
;CLR EA
MOV IAP_TRIG,#5AH ;先送5Ah,再送A5h到ISP/IAP觸發寄存器,每次都需如此
MOV IAP_TRIG,#0A5H ;送完A5h後,ISP/IAP命令立即被觸發起動
NOP
;SETB EA
LCALL IAP_Disable ;關閉 IAP 功能, 清相關的特殊功能寄存器,使CPU處於安全狀態,
;一次連續的IAP操作完成之後建議關閉IAP功能,不需要每次都關
RET
;------------------------------------------------
;擦除扇區, 入口:DPTR = 扇區地址
IAP_Erase:
MOV IAP_CONTR,#ENABLE_IAP ;打開 IAP 功能, 設置 Flash 操作等待時間
MOV IAP_CMD,#03H ;設置為IAP/ISP/EEPROM扇區擦除模式命令
MOV IAP_ADDRH,DPH ;設置目標單元地址的高8位地址
MOV IAP_ADDRL,DPL ;設置目標單元地址的低8位地址
;CLR EA
MOV IAP_TRIG,#5AH ;先送5Ah,再送A5h到ISP/IAP觸發寄存器,每次都需如此
MOV IAP_TRIG,#0A5H ;送完A5h後,ISP/IAP命令立即被觸發起動
NOP
;SETB EA
LCALL IAP_Disable ;關閉 IAP 功能, 清相關的特殊功能寄存器,使CPU處於安全狀態,
;一族掘激次連續的IAP操作完成之後建議關閉IAP功能,不需要每次都關
RET
;------------------------------------------------
IAP_Disable:
;關閉 IAP 功能, 清相關的特殊功能寄存器,使CPU處於安全狀態,
;一次連續的IAP操作完成之後建議關閉IAP功能,不需要每次都關
MOV IAP_CONTR,#0 ;關閉 IAP 功能
MOV IAP_CMD,#0 ;清命令寄存器,使命令寄存器無命令,此句可不用
MOV IAP_TRIG,#0 ;清命令觸發寄存器,使命令觸發寄存器無觸發,此句可不用
MOV IAP_ADDRH,#0FFH ;送地址高位元組單元為00,指向非EEPROM區
MOV IAP_ADDRL,#0FFH ;送地址低位元組單元為00,防止誤操作
RET

⑵ 怎麼用c語言編程51單片機讀寫程序

編程代碼如下:

ORG 0000H

MOV DPTR,#1000H ;給源數據塊地址指針DPTR賦初值

MOV P2, #20H ;給目的數據塊地址指針P2和R0賦初值

MOV RO,#00H

LOOP: MOVX A, @DPTR .

MOVX @RO, A .

INC DPTR

INC RO

CJNE RO,#64H, LOOP

SJMP $

(2)51單片機讀寫實例擴展閱讀

MCS-51單片機主要由下列部件組成:1個8位CPU;1個片內振盪器及時鍾電路;4KB ROM程序存儲器,256BRAM;21個特殊功能寄存器。

2個1 6位定時/計數器;4個8位並行I/O口及1個可編程全雙工串列介面;可定址64KB的外部程序存儲器空間;可定址64KB的外部數據存儲器空間;5個中斷源、兩個優先順序中斷嵌套中斷結構。

MCS-51單片機內部有兩個16位可編程的定時/計數器,簡稱定時器0 (T0) 和定時器1 (T1) 。它們分別由方式寄存器TMOD、控制寄存器TCON和數據寄存器TH0、TLO, TH1、TL1組成。

低優先順序中斷源可被高優先順序中斷源所中斷,而高優先順序中斷源不能被任何中斷源所中斷;一種中斷源(不管是高優先順序還是低優先順序) 一旦得到響應,與它同級的中斷源不能再中斷它。當同時收到幾個同一優先順序的中斷時,響應哪一個中斷源取決於內部查詢順序。

⑶ 51單片機內部EEPROM使用求教

在使用51單片機時,如果你不確定使用的具體型號,可以查閱單片機的數據手冊,裡面會有詳細的操作時序介紹。針對STC15F4K系列單片機的EEPROM使用,以下是一個實例如何操作:

首先,進行初始化設置,比如配置引腳模式,開啟IAP功能等:

#include"reg51.h" #include"intrins.h" typedefunsignedcharBYTE; typedefunsignedintWORD; //...初始化寄存器

接著,定義一些宏和函數,用於控制IAP操作:

#defineCMD_IDLE0 #defineCMD_READ1 #defineCMD_PROGRAM2 #defineCMD_ERASE3 //...延時函數和IAP操作函數

在主函數中,首先初始化系統配置,然後進行扇區擦除、數據編程和校驗:

voidmain() { WORDi; P0M0=0x00; P0M1=0x00; P1M0=0x00; P1M1=0x00; P2M0=0x00; P2M1=0x00; P3M0=0x00; P3M1=0x00; P4M0=0x00; P4M1=0x00; P5M0=0x00; P5M1=0x00; P6M0=0x00; P6M1=0x00; P7M0=0x00; P7M1=0x00; P1=0xfe; InitUart(); Delay(10); IapEraseSector(IAP_ADDRESS); for(i=0;i<512;i++) { if(SendData(IapReadByte(IAP_ADDRESS+i))!=0xff) gotoError; } P1=0xf8; Delay(10); for(i=0;i<512;i++) { IapProgramByte(IAP_ADDRESS+i,(BYTE)i); } P1=0xf0; Delay(10); for(i=0;i<512;i++) { if(SendData(IapReadByte(IAP_ADDRESS+i))!=(BYTE)i) gotoError; } P1=0xf0; while(1); Error: P1&=0x7f; while(1); }

以上代碼展示了如何通過IAP介面對EEPROM進行擦除、編程和校驗操作。其中,Delay函數用於產生延時,IapIdle、IapReadByte、IapProgramByte和IapEraseSector函數分別用於關閉IAP功能、讀取EEPROM數據、寫入EEPROM數據和擦除EEPROM扇區。

初始化串口設置為8位可變波特率,並根據不同的URMD值選擇不同的波特率生成模式。

發送數據函數SendData則用於通過串口發送數據,並等待發送完成。

⑷ 怎樣讀51單片機內程序

ISP_CMD指令設定為0000 001,意味著啟動了從51單片機的flash區讀取用戶應用程序的過程。這一指令在編程中至關重要,因為它決定了如何安全、准確地讀取存儲在51單片機內部flash區和數據flash區的代碼與數據。在進行這一操作時,需要確保單片機與編程器之間有正確的連接,以便順利傳輸數據。

首先,需要確保單片機處於ISP(In-System Programming,即在線編程)模式。ISP模式允許用戶在不拆除晶元的情況下進行編程和調試。完成硬體連接後,通過發送ISP_CMD指令0000 001,啟動讀取程序。這一指令告訴單片機准備開始從flash區讀取數據。在讀取過程中,單片機會將數據從flash區傳輸到編程器,編程器再將數據傳輸到計算機,從而實現程序的讀取。

值得注意的是,在讀取過程中,程序代碼和數據會被逐一讀取。程序代碼通常存儲在應用程序flash區,而數據則存儲在數據flash區。確保從這兩個區域分別讀取數據,可以確保獲取完整的應用程序和數據。在讀取完成後,編程器將生成一個二進制文件,包含了從51單片機中讀取的所有程序代碼和數據。

此外,為了保證讀取過程的順利進行,還需要注意一些細節。例如,確保單片機的電源穩定,避免讀取過程中的數據丟失或損壞。同時,還需要確保編程器與單片機之間的連接穩定,以減少數據傳輸中的錯誤。

總之,通過設置ISP_CMD指令為0000 001,可以有效地讀取51單片機中的用戶應用程序和數據。這一過程需要仔細操作,確保連接正確,電源穩定,以及數據傳輸的准確性。

閱讀全文

與51單片機讀寫實例相關的資料

熱點內容
程序員放棄後會怎樣 瀏覽:160
河北模具編程 瀏覽:178
adb查找命令 瀏覽:309
安卓手機視頻文件夾怎麼打開 瀏覽:303
平板加密手機後怎麼關閉 瀏覽:557
流媒體伺服器應該注意什麼 瀏覽:528
d8命令編譯 瀏覽:943
壓縮包解壓需要多少空間 瀏覽:139
如何查找app屬性 瀏覽:380
android人臉識別技術 瀏覽:305
pc104編程 瀏覽:329
二維碼反編譯破解推廣 瀏覽:674
修改伺服器的mac地址 瀏覽:521
好玩的編程軟體 瀏覽:892
編程語言創始人有錢嗎 瀏覽:797
短視頻app怎麼獲客 瀏覽:8
查看雲伺服器的應用 瀏覽:427
javadump工具 瀏覽:558
程序員16g 瀏覽:421
程序員沒有辦法成為top怎麼辦 瀏覽:196