當前位置:編程學習大全網 - 編程語言 - 如何用單片機讀寫FLASH?

如何用單片機讀寫FLASH?

就是這段程序了。我壹直用的。不懂的可以找我

#define CMD_IDLE 0

#define CMD_READ 1

#define CMD_PROGRAM 2

#define CMD_ERASE 3

#define ENABLE_IAP 0X82// SYSCLK<24M

#define IAP_ADDRESS 0X0000

void IAP_Disable()//Make MCU if safe state

{

//關閉IAP 功能, 清相關的特殊功能寄存器,使CPU 處於安全狀態,

//壹次連續的IAP 操作完成之後建議關閉IAP 功能,不需要每次都關

IAP_CONTR = 0; //關閉IAP 功能

IAP_CMD = 0; //清命令寄存器,使命令寄存器無命令,此句可不用

IAP_TRIG = 0; //清命令觸發寄存器,使命令觸發寄存器無觸發,此句可不用

IAP_ADDRH = 0x80; // 0x80

IAP_ADDRL = 0;

}

//讀壹字節,調用前需打開IAP 功能,入口:DPTR = 字節地址,返回:A = 讀出字節

uchar Byte_Read(uint addr)

{

IAP_CONTR=ENABLE_IAP; //打開IAP 功能, 設置Flash 操作等待時間

IAP_CMD=CMD_READ; //IAP/ISP/EEPROM 字節讀命令

IAP_ADDRL=addr; //設置目標單元地址的高8 位地址

IAP_ADDRH=addr>>8; //設置目標單元地址的低8 位地址

IAP_TRIG=0X5A;//先送 5Ah,再送A5h 到ISP/IAP 觸發寄存器,每次都需如此

IAP_TRIG=0XA5;//送完A5h 後,ISP/IAP 命令立即被觸發起動

_nop_();

IAP_Disable();//關閉IAP 功能, 清相關的特殊功能寄存器,使CPU 處於安全狀態

return IAP_DATA;

}

//字節編程,調用前需打開IAP 功能,入口:DPTR = 字節地址, A= 須編程字節的數據

void Byte_Program(uint addr,uchar dat)

{

IAP_CONTR=ENABLE_IAP;//打開 IAP 功能, 設置Flash 操作等待時間

IAP_CMD=CMD_PROGRAM;//IAP/ISP/EEPROM 字節編程命令

IAP_ADDRL=addr;//設置目標單元地址的高8 位地址

IAP_ADDRH=addr>>8; //設置目標單元地址的低8 位地址

IAP_DATA=dat;//要編程的數據先送進IAP_DATA 寄存器

IAP_TRIG=0X5A;//先送 5Ah,再送A5h 到ISP/IAP 觸發寄存器,每次都需如此

IAP_TRIG=0XA5; //送完A5h 後,ISP/IAP 命令立即被觸發起動

_nop_();

IAP_Disable();//關閉IAP 功能, 清相關的特殊功能寄存器,使CPU 處於安全狀態,

}

void Sector_Erase(uint addr) //擦除扇區, 入口:DPTR = 扇區地址

{

IAP_CONTR=ENABLE_IAP;

IAP_CMD=CMD_ERASE;

IAP_ADDRL=addr;

IAP_ADDRH=addr>>8;

IAP_TRIG=0X5A;

IAP_TRIG=0XA5;

_nop_();

IAP_Disable();

}

  • 上一篇:大家好,我今年被長安大學的物理學專業錄取了,請問長安大學地球物理學這個專業怎麽樣?
  • 下一篇:網站設計規劃書
  • copyright 2024編程學習大全網