No.96262 作者:weichen2643 邮件:weichen2643@126.com ID:56814 登陆:1次 文章数:1篇 最后登陆IP:59.46.65.13 最后登陆:2006/8/14 17:14:59 注册:2006/7/13 14:34:32 财富:105 发帖时间:2006/8/1 16:53:51 发贴者IP:124.147.146.174 标题:weichen2643:求救~5045读全是ff... 摘要:No.96262求救~5045读全是ff... 调5045调了两天了,自己写的程序,网上拷的程序通通都读出来是ff,连读标志寄存器也是,也加了很多的延迟,电路就是面包板上搭建的,只接了个5045,实在是不知道什么地方出错了,求大家帮忙. 我写的程序如下,大家帮忙看看有什么问题吧. #include <REG52.H> #include <INTRINS.H> #define uchar unsigned char #define uint unsigned int #define NOP _nop_();_nop_();_nop_(); #define STATUS_REG 0x00 #define MAX_POLL 99 //-----------x5045指令-----------------// #define WREN 0x06 //写允许 #define WRDI 0x04 //写禁止 #define RDSR 0x05 //读状态寄存器 #define WRSR 0x01 //写状态寄存器 #define READ0 0x03 //读数据 #define WRITE0 0x02 //写数据 #define READ1 0x0B //读数据 #define WRITE1 0x0A //写数据 //-----------SPI通讯接口-----------------// sbit SI=P1^5; sbit SCK=P1^6; sbit SO=P1^4; sbit CS=P1^3; void wren_cmd(); void wrdi_cmd(); void wrsr_cmd(); uchar rdsr_cmd(); uchar byte_read(uchar add,bit block); void byte_write(uchar add,uchar bytedata,bit block); void rst_wdog(); void wip_poll(); void outbyt(uchar bytedata); uchar inbyt(); //**********************WREN************************ void wren_cmd() { SCK=0; CS=0; outbyt(WREN); SCK=0; CS=1; } //**********************WRDI************************ void wrdi_cmd() { SCK=0; CS=0; outbyt(WRDI); SCK=0; CS=1; } //**********************WRSR************************ void wrsr_cmd() { SCK=0; CS=0; outbyt(WRSR); _nop_();_nop_();_nop_(); outbyt(STATUS_REG); _nop_();_nop_();_nop_(); SCK=0; CS=1; wip_poll(); } //**********************RDSR************************ uchar rdsr_cmd() { uchar buff; SCK=0; CS=0; outbyt(RDSR); _nop_();_nop_();_nop_(); buff=inbyt(); _nop_();_nop_();_nop_(); SCK=0; CS=1; return buff; } //**********************byte_WR********************* void byte_write(uchar add,uchar bytedata,bit block) { SCK=0; CS=0; if(!block) { outbyt(WRITE0); } else { ......
>>返回讨论的主题
|