⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x5045.h

📁 sbit CS = P1^0 sbit SCK = P1^6 sbit SIN = P1^7 sbit SOUT = P1^5 sbit WP = P1^1
💻 H
字号:
/* ========================================================================== */
/*                                                                            */
/*   x5045.h                                                                  */
/*   (c) 2001 Author                                                          */
/*                                                                            */
/*   Description                                                              */
/*                                                                            */
/* ========================================================================== */


/******************************************************************
 *                      -----------x5045---------                 *
 ******************************************************************/
sbit CS   = P1^0;
sbit SCK  = P1^6;
sbit SIN  = P1^7;
sbit SOUT = P1^5;
sbit WP   = P1^1;  //      

sbit DOG = P1^0;

#define  x_num    1         //X5045              
#define  x_addr   4         //X5045          X5045      
#define  x_mark   0         //X5045                    
#define  XMARK    0x5a      //X5045            

void XReady(void)
{
        CS=1;
        SOUT=1;
        SCK=0;
        SIN=0;
        return;
}
void XSendByte(unsigned char b)
{
     int i;
     unsigned char tb;
     tb=b;
     for (i=0;i<8;i++){
         SCK=0;
         SIN=((tb & 0x80)==0x80);
         SCK=1;
         tb<<=1;
         }
      SIN=0;
      return;
}
unsigned char XGetByte(void)
{
     int i;
     unsigned char tb;
     tb=0;
     for (i=0;i<8;i++){
         tb<<=1;
         SCK=1;
         SCK=0;
         tb|=SOUT;
         }
      return tb;
}
void XWriteEn(void)
{
        SCK=0;
        CS=0;
        XSendByte(0x06);
        SCK=0;
        CS=1;
        return;
}
void XWriteDis(void)
{
        SCK=0;
        CS=0;
        XSendByte(0x04);
        SCK=0;
        CS=1;
        return;
}
unsigned char XReadStatus(void)
{
        unsigned char tb;
        CS=0;
        XSendByte(0x05);
        tb=XGetByte();
        CS=1;
        return tb;

}
void XWipPoll(void)
{
        int i;
        unsigned char r;
        for (i=0;i<99;i++){
            r=XReadStatus();
            if((r&1)==0)return;
            }
        return;
}

void XWriteStatus(unsigned char b)
{
        SCK=0;
        CS=0;
        XSendByte(0x01);
        XSendByte(b);
        SCK=0;
        CS=1;
        XWipPoll();
        return ;

}

void XReadData(unsigned char *m,unsigned char x,unsigned char n)
{
        int i;
        SCK=0;
        CS=0;
        XSendByte(0x03);
        XSendByte(x);
        for(i=0;i<n;i++){
           m[i]=XGetByte();
           }
        SCK=0;
        CS=1;
        return ;
}
void XWriteData(unsigned char  *m,unsigned char x,unsigned char n)
{
        int i;
        SCK=0;
        CS=0;
        XSendByte(0x02);
        XSendByte(x);
        for(i=0;i<n;i++){
           XSendByte(m[i]);
           }
        SCK=0;
        CS=1;
        XWipPoll();
        return ;
}
#define XResetDog() {CS=0;CS=1;}

void InitX5045(void)
{
    bit btmp;
    unsigned char mm[x_num];
    WP=1;
    btmp=EA;
    EA=0;
    XReady();
    XWriteEn();
    XReadData(mm,x_addr,x_num);
    if (mm[x_mark]!=XMARK){
            mm[x_mark]=XMARK;
            XReady();
            XWriteEn();
            XWriteData(mm,x_addr,x_num);
            XWriteEn();
            XWriteStatus(0x00);
            _nop_();
     }
     else  _nop_();
     XWriteDis();
     EA=btmp;
     return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -