导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→初学者:请高手帮我看一下程序[hwm_11]

 *第4814篇: 初学者:请高手帮我看一下程序

  
楼 主:hwm_11 2002年9月4日10:18
 初学者:请高手帮我看一下程序
下面对x25045的读写程序不知错在哪,麻烦高手指点指点。

#include"at89x52.h"
 sbit SO=P1^6;/*25045输出*/
 sbit SI=P1^7;/*25045输入*/
 sbit SCK=P1^4;/*25045时钟*/
 sbit CS=P1^5;/*25045片选*/
 
void wr_byte(unsigned char aa)
{
 unsigned char my_flag1;
 signed char i;
 for (i=7;i>=0;i--)
  {
   my_flag1=aa;
   SI=((my_flag1>>i)&0x01);
   SCK=0;
   SCK=1;
 }
}
unsigned char rd_byte(void)
{
 unsigned aa,my_flag;
 signed char i;
 aa=0x00;
 for (i=7;i>=0;i--)
 {
   my_flag=(unsigned char)(SO);
   SCK=1;
   SCK=0;
   aa=(aa|(my_flag<<i));
 }
 return aa;
}
unsigned char rd_sr(void)
{
 unsigned char aa;
 CS=0;
 wr_byte(0x05);
 aa=rd_byte();
 CS=1;
 return aa;
 }
unsigned char pd(void)
{
 unsigned char aa;
 aa=rd_sr();
 if(aa&0x01) return 1;
   else return 0;

void wr_sr(void)
{
        while(pd());      
        CS=0;
        wr_byte(0x06);
        CS=1;
        CS=0;
        wr_byte(0x01);
        wr_byte(0x18);//只用下半部(00H-ffH).    600ms
        CS=0;
        CS=1;
        return;
        

unsigned char rd_b(unsigned char d)
{ unsigned char a;
    while(pd());
    CS=0;
    wr_byte(0x03);
    wr_byte(d);
    a=rd_byte();
    CS=1;
    return a;
}

void wr_b(unsigned char d,unsigned char a)
{
    while(pd());
    CS=0;
    wr_byte(0x06);
    CS=1;
    CS=0;
    wr_byte(0x02);
    wr_byte(d);
    wr_byte(a);
    CS=0;
    CS=1;
    return;
}
       
         

  
2楼:hwm_11 2002年9月4日10:36
 不管往里面写的什么,读出来的都只有两个值,且每读一次都交替变化一次

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:闲聊:硬件开发板

[下一篇主题]:初学者:max+plus 2 求救