用c51编写写的x25045的读写程序
源代码在线查看: 用c51写的x25045的读写程序.txt
用c51写的x25045的读写程序
发表时间:2005-08-07 10:31:28 浏览人数:14 发布者:administrator
/* x25045的读写程序 用c51写的 */ #define CS P2.7 /*单片机p2.7为片选 可以改为你的实际引脚 */ #define SO P2.6 /*数据输出 */ #define SK P2.5 /* 时钟 */ #define SI P2.4 /* 数据输入*/ /* here is the instrution of x25045*/ #define WREN 0x06 #define WRDI 0x04 #define RDSR 0x05 #define WRSR 0x01 #define READ0 0x03 #define READ1 0x0b #define WRITE0 0x02 #define WRITE1 0x0a unsigned char Read8() { bit bData; unsigned char cLoop; unsigned char cData; for(cLoop=0;cLoop<8;cLoop++) { SK=1; SK=0; bData=SO; cData<<=1; if(bData) { cData|=0x01; } } return cData; } void Write8(unsigned char cData) { unsigned char cLoop; for(cLoop=0;cLoop<8;cLoop++) { if((cData&0x80)==0) { SI=0; } else { SI=1; } SK=0; SK=1; cData<<=1; } } unsigned char ReadSR() { unsigned char cData; CS=0; Write8(RDSR); cData=Read8(); CS=1; return cData; } unsigned char WriteSR(unsigned char cData) { unsigned char cTemp; cTemp=ReadSR(); if((cTemp&0x01)==1) return 0; CS=0; Write8(WREN); CS=1; CS=0; Write8(WRSR); Write8(cData); CS=1; return 1; } void Write1B(unsigned char cData,unsigned char cAddress,bit bRegion) /* 写入一个字节,cData为写入的数,cAddress为写入地址,bRegion为页 */ { while((ReadSR()&0x01)==1) { } CS=0; Write8(WREN); CS=1; CS=0; if(bRegion==0) { Write8(WRITE0); } else { Write8(WRITE1); } Write8(cAddress); Write8(cData); SK=0; CS=1; } unsigned char Read1B(unsigned char cAddress,bit bRegion) /* 读入一个字节,cAddress为读入地址,bRegion为页 */ { unsigned char cData; while((ReadSR()&0x01)==1) { } CS=0; if(bRegion==0) { Write8(READ0); } else { Write8(READ1); } Write8(cAddress); cData=Read8(); CS=1; return cData; }