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

📄 spi.c

📁 这是驱动出租车开票打印机的程序
💻 C
字号:
#include <SM89516.h>
#include <intrins.h>
#include <absacc.h>

#define nop _nop_()

sbit spi_di=P1^4;       //SPI总线进
sbit spi_do=P1^5;       //SPI总线出
sbit spi_clk=P1^6;      //SPI总线时钟
sbit spi_cs=P3^7;


void writ_addr(char);

//******************SPI()读取子程序************//BEGIN
unsigned char READ_SPI_DATA (unsigned long int addr)
{unsigned char  rdata;
 unsigned char  a,b,c;
 //unsigned long int  r;
       spi_cs=0;
       spi_di=0;
       rdata=0x03;                             //送出读数据命令
       writ_addr(rdata);
       c=addr&0xff;     addr>>=8;
       b=addr&0xff;     addr>>=8;
       a=addr&0xff;                             //关出24个地址中的高8位
       writ_addr(a);
       writ_addr(b);
       writ_addr(c);
  for (a=0; a<8; a++)                          //读取在总线上的数据
         { spi_clk=0;
           rdata = rdata << 1;
           //_nop_();//delay(1);
           spi_do=1;
        if(spi_do==1) {rdata++;}
           spi_clk=1;
          // _nop_();//delay(1);
         }
   spi_cs=1;
  return rdata;                                //返回输出结果
}

/*
void WRITE_SPI_DATA (unsigned long int addr,unsigned char wdata)
{
 unsigned char  a,b,c;
 //unsigned long int  r;
       spi_cs=0;
       spi_di=0;                            //送出写数据命令
       writ_addr(0x06);
       writ_addr(0x02);
       c=addr&0xff;     addr>>=8;
       b=addr&0xff;     addr>>=8;
       a=addr&0xff;                             //关出24个地址中的高8位
       writ_addr(a);
       writ_addr(b);
       writ_addr(c);
       writ_addr(wdata);
   spi_cs=1;                           //返回输出结果
}

void wren(void)
{spi_cs=0;  _nop_();_nop_();_nop_();_nop_();
  spi_di=0;                            //送出写数据命令
  writ_addr(0x01);   _nop_();_nop_();_nop_();_nop_();
  writ_addr(0x02);
  
spi_cs=1;       
}
*/

void writ_addr(char m)
{unsigned char a;
   for (a=0; a<8; a++)
        { spi_clk=0;
        if (m & 0x80)
              {spi_di=1;}
        else  {spi_di=0;}
              _nop_();//delay(1);//
              spi_clk=1;
              m=m<<1;
              //_nop_();//delay(1);
        }
}
//*********************************************//END

⌨️ 快捷键说明

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