资源简介
51单片机读写华邦串行FLASH W25X40 程序范例,C语言编程。适用于华邦W25X系列,比较完整。
代码片段和文件信息
//W25X40 51单片机读写程序
//华邦串行FLASH W25X40 读写程序范例
//适用于华邦W25X系列,单通道模式;
#include
#include
#define uint8 unsigned char
#define uint16 unsigned int
#define uchar unsigned char
#define uint unsigned int
#define uint32 unsigned long
sbit _cs= P1^2;
sbit _do= P1^3;
sbit _wp= P1^4;
//sbit _hold= P1^5;
sbit _clk= P1^6;
sbit _di= P1^7;
#define W25P_WriteEnable 0x06
#define W25P_WriteDisable 0x04
#define W25P_ReadStatusReg 0x05
#define W25P_WriteStatusReg 0x01
#define W25P_ReadData 0x03
#define W25P_FastReadData 0x0B
#define W25P_PageProgram 0x02
#define W25P_SectorErase 0xD8 // 64KB
#define W25P_ChipErase 0xC7
#define W25P_PowerDown 0xB9
#define W25P_ReleasePowerDown 0xAB
#define W25P_DeviceID 0xAB
#define W25P_ManufactDeviceID 0x90
void init_cpu(void);
void IO_Send_Byte(uchar out);
uchar IO_Get_Byte();
void delay(uchar tt);
void IO_Wait_Busy();
void IO_init();
uchar IO_Read_StatusReg();
void IO_Write_StatusReg(byte);
void IO_Write_Enable();
void IO_PowerDown();
void IO_ReleasePowerDown();
uchar IO_Read_ID1();
uint IO_Read_ID2(uchar ID_Addr);
uchar IO_Read_Byte(uint32 Dst_Addr);
void IO_Read_nBytes(uint32 Dst_Addr uchar nBytes_128);
uchar IO_FastRead_Byte(uint32 Dst_Addr);
void IO_FastRead_nBytes(uint32 Dst_Addr uchar nBytes_128);
void IO_Write_Byte(uint32 Dst_Addr uchar byte);
void IO_Write_nBytes(uint32 Dst_Addr uchar nBytes_128);
void IO_Erase_Chip();
void IO_Erase_Sector(uint32 Dst_Addr);
void Verify(uchar byte uchar cor_byte);
void IO_Write_Disable();
void trace(uchar *struchar len);
uint IO_Read_ID3();
uint8 Rxtemp;
bit MYTI;
uint8 tx_buff[16];
uint8 upper_128[16];
bit rx_ok;
#define nop() _nop_()
void main(void)
{
uint i;
init_cpu();
IO_init();
for(;;)
{
if(rx_ok == 1)
{
rx_ok = 0;
switch(Rxtemp)
{
case 0x01:
Rxtemp = 0;
tx_buff[0] = IO_Read_ID1();
trace(tx_buff1);
break;
case 0x02:
i = IO_Read_ID2(0x00);
tx_buff[1] = (uchar)i;
tx_buff[0] = (uchar)(i>>8);
trace(tx_buff2);
break;
case 0x03:
i = IO_Read_ID3();
tx_buff[1] = (uchar)i;
tx_buff[0] = (uchar)(i>>8);
trace(tx_buff3);
break;
case 0x04:
tx_buff[0] = IO_Read_Byte(0x00000000);
trace(tx_buff1);
break;
case 0x05:
tx_buff[0] = 0x55;
IO_Write_Byte(0x000000000xa5);
trace(tx_buff1);
break;
case 0x06:
tx_buff[0] = IO_Read_StatusReg();
trace(tx_buff1);
break;
case 0x07:
IO_Write_Enable();
break;
case 0x08:
upper_128[0]=0x01;upper_128[1]=0x02;upper_128[2]=0x03;upper_128[3]=0x04;
IO_Write_nBytes(0x000000004);
break;
case 0x09:
IO_Erase_Chip();
break;
case 0x0a:
IO_Erase_Sector(0x00000000);
break;
default:
break;
}
}
}
}
void init_cpu(void)
{
TMOD = 0x21;
PCON = PCON | 0x80; //波特率加
相关资源
- 博巨兴mcu例程(BJ8M601A)
- 基于mfc vc 的flash播放器
- HT66Fxx flash 单片机原理与应用C语言版
- 智能家电控制技术 牛俊英,宋玉宏编
- 新概念51单片机C语言教程 入门、提高
- Dynamic C (Rabbit MCU 开发工具)
- HT66Fxx+Flash单片机原理与实践+C语言
- 华邦串行FLASH W25X40 读写程序范例,
- TI官方2833xflash擦写api文档与库安装文
- MCU动态内存管理
- S32K14X系列MCU硬件手册(共2023页)
- modbus主机代码(可以用在各种MCU平台
- 单片机(STC 1TMCU控制DS1302)
- C++实战源码-播放Flash动画
- Stm32F030用Flash模拟EEPROM
- Image2Lcd 2.9(破解版).7z
评论
共有 条评论