0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个X25045的C51读写程序

Wildesbeast 来源:福星电子网 作者:福星电子网 2020-01-18 11:13 次阅读

* 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;

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5992

    文章

    43910

    浏览量

    619657
  • 程序
    +关注

    关注

    114

    文章

    3628

    浏览量

    79425
  • x25045
    +关注

    关注

    0

    文章

    9

    浏览量

    13950
收藏 人收藏

    评论

    相关推荐

    C51C251有啥区别

    更大的内存和存储器容量,可以支持更复杂的应用程序。 性能和速度:由于C251具有更高的位宽和更复杂的指令集,它通常比C51具有更高的性能和运行速度。 应用领域:由于C51是较早的微控制
    发表于 01-20 11:39

    C51单片机的IO口介绍(下)

    上一篇文章我们对C51的IO简单的介绍了一下,现在我们来简单了解C51的IO的结构
    的头像 发表于 11-02 10:57 507次阅读
    <b class='flag-5'>C51</b>单片机的IO口介绍(下)

    基于C51单片机实现LED灯1s闪烁

    C51使用的晶振频率是11.0592MHz一颗LED灯接在C51的P0.0,现在要求设计程序,让这颗LED灯以1s为间隔闪烁。
    的头像 发表于 11-02 10:55 1524次阅读
    基于<b class='flag-5'>C51</b>单片机实现LED灯1s闪烁

    请问keil C51中的data怎么设置成大点的值?

    keil C51中的data怎么设置成大点的值?
    发表于 11-01 07:42

    C51为什么要嵌套汇编?

    C51为什么要嵌套汇编
    发表于 10-31 06:48

    C51下载的时候经常搜索不到串口是为什么?

    C51下载的时候经常搜索不到串口?
    发表于 10-25 06:39

    请问keil C51和MDK高版本如何共存?

    keil C51和MDK高版本如何共存?按照网上方法装同一个目录结果只能看到的51芯片选择,高等级arm找不到!
    发表于 10-19 08:24

    c51单片机如何同时点亮40LED灯?

    c51单片机如何同时点亮40LED灯?io口不够啊
    发表于 10-18 06:38

    C51中断函数和汇编语言中断服务程序在用法上有什么不同?

    C51中断函数和汇编语言中断服务程序在用法上有何不同?
    发表于 10-17 08:31

    使用C51搭的简易示波器的资料和程序

    使用C51搭的简易示波器的资料和程序合集
    发表于 09-22 06:18

    C51的内存空间利用手册

    C51使用ROM指令(C51手册中的第49页)来帮助优化调用和跳转指令。 如果您使用飞利浦精简指令集处理器之,如80C751或80C752
    发表于 09-04 07:07

    51系列中data,idata,xdata,pdata的区别是什么?

    51系列中data,idata,xdata,pdata的区别: data:固定指前面0x00-0x7f的128RAM,可以用acc直接读写的,速度最快,生成的代码也最小。 idat
    发表于 06-25 08:48

    请问Keil C51如何对SPROM进行烧录?

    Keil C51 如何对 SPROM 进行烧录?
    发表于 06-20 08:15

    C51中如何通过外部中断和定时器来实现对速度的检测?

    C51中如何通过外部中断和定时器来实现对速度的检测?我的硬件设计思路是:车轮每转六分之周,硬件部分则向单片机发
    发表于 05-08 16:14

    8051单片机RS485通讯C51程序

    8051单片机RS485通讯C51程序
    发表于 04-07 15:01 11次下载