搜索
bottom↓
回复: 10

x5045读写程序,已调试成功

[复制链接]

出0入0汤圆

发表于 2012-1-8 15:40:28 | 显示全部楼层 |阅读模式
#include <reg51.h>
#include <intrins.h>
#include <config.h>

/**************************
//x5045接口定义
sbit x5045_cs=P1^4;
sbit x5045_so=P0^2;
sbit x5045_sck=P0^1;
sbit x5045_si=P0^0;

//x5045命令
#define WREN 0x06   //写允许
#define WRDI 0x04  //写禁止
#define RSDR 0x05  //读状态寄存器
#define WRSR 0x01  //写状态寄存器,看门狗和块保护定义
#define READ_ADDERS_H 0x0b  //从128~511地址读,可以连续写
#define READ_ADDERS_L 0x03  //从0~127地址读,可以连续写
#define WRITE_ADDERS_H 0x0a  //从128~511地址写,可以连续写
#define WRITE_ADDERS_L 0x02  //从0~127地址写,可以连续写

**************************/
void x5045_write_onebyte(unsigned char writedata){
        unsigned char i;
        for(i=0;i<8;i++){
                x5045_sck=0;
                x5045_si=(bit)(writedata&0x80);
                x5045_sck=1;
                writedata<<=1;               
                }
                x5045_si=0;
        }
       
unsigned char x5045_read_onebyte(void){
        unsigned char j,r_data;
        for(j=0;j<8;j++){
                x5045_sck=1;
                r_data<<=1;
                x5045_sck=0;
                r_data|=x5045_so;
               

                }
        return (r_data);
       
        }
       
unsigned char x5045_read_status(void){
        unsigned char temp;
        x5045_cs=0;
        x5045_write_onebyte(RSDR);

        temp=x5045_read_onebyte();
        x5045_cs=1;
        return (temp);
        }
       
       
void x5045_write_status(unsigned char reg){
        x5045_cs=0;
        x5045_write_onebyte(WREN);
        x5045_cs=1;
        x5045_cs=0;
        x5045_write_onebyte(WRSR);
        x5045_write_onebyte(reg);
        x5045_cs=1;
       
        while(x5045_read_status()&0x01);
       
       
        }
       
       
void x5045_write_data(unsigned int addr,unsigned char wdata){
        x5045_cs=0;
        x5045_write_onebyte(WREN);
        x5045_cs=1;
        x5045_cs=0;
        x5045_write_onebyte((addr>255)? WRITE_ADDERS_H : WRITE_ADDERS_L);
        x5045_write_onebyte(addr);
        x5045_write_onebyte(wdata);
        x5045_cs=1;
       
        while(x5045_read_status()&0x01);

        }       

unsigned char  x5045_read_data(unsigned int addr1){
        unsigned char rdata;

        x5045_cs=0;
        x5045_write_onebyte((addr1>255)? READ_ADDERS_H : READ_ADDERS_L);
        x5045_write_onebyte(addr1);
        rdata=x5045_read_onebyte();
        x5045_cs=1;
        return(rdata);

        }       
       
void x5045_write_lendata(unsigned int address ,unsigned char *str){
        unsigned char i;
        for(i=0;*str!=0;i++){
        x5045_write_data(address+i,*str);
        str++;
       
}
        }

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
头像被屏蔽

出0入0汤圆

发表于 2012-6-15 00:51:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2012-8-18 02:40:04 | 显示全部楼层
我的so 和 si 是接在一起的,
能读,不能写。

不知道调用的时候要注意点什么?

出0入0汤圆

发表于 2012-8-18 09:22:41 | 显示全部楼层
请教X5045和w25x10区别是什么

出0入0汤圆

发表于 2012-8-18 14:35:32 | 显示全部楼层
测试通过了。
对于输入输出用同一脚的应用,
可以简单设定直接应用。
感谢楼主的认真,自己的问题解决以后把答案贴上来。

出0入0汤圆

发表于 2012-8-28 16:40:03 | 显示全部楼层
ywjianghu 发表于 2012-8-18 14:35
测试通过了。
对于输入输出用同一脚的应用,
可以简单设定直接应用。

你好,我的x5045的SO与SI也是连在一起的,我也采用了楼主的程序,为什么读出来的寄存器值和数据都是0xFF或者0x00呢??设定不同的时钟延时会对读取的8位数据有影响吗??我用的单片机是STM32。十万火急啊。。。。

出0入0汤圆

发表于 2012-8-28 16:43:10 | 显示全部楼层
ywjianghu 发表于 2012-8-18 14:35
测试通过了。
对于输入输出用同一脚的应用,
可以简单设定直接应用。

你在x5045的调试过程中需要注意什么吗??我调试了几天了,还是不通,也不知道哪里出了问题,老板一直催着。。。先谢谢你了啊。。。

出0入0汤圆

发表于 2012-8-31 23:40:09 | 显示全部楼层
dyz 发表于 2012-8-28 16:43
你在x5045的调试过程中需要注意什么吗??我调试了几天了,还是不通,也不知道哪里出了问题,老板一直催 ...

不要急,仔细检查。
我就是采用楼主的程序的,调用正确就能直接用。
我的51单片机是12时钟机器周期,24M晶振。

出0入0汤圆

发表于 2012-9-1 10:47:41 | 显示全部楼层
恭喜调通,多谢分享!

出0入0汤圆

发表于 2014-3-4 17:03:10 | 显示全部楼层
感谢楼主,参照您的程序和网上的其他资料,我的5045已经调通,还有一点小问题正常改进中

出0入0汤圆

发表于 2014-3-4 18:23:30 | 显示全部楼层
挺好的  有时间试试看
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 04:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表