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

📄 sa866.c

📁 mcs51平台的SA866AE控制程序.用I/O口模拟spi
💻 C
字号:
 #include "def.h"
  void iniSA866(void);
  void setSA866(void);
  void SetFre(void);
  void rerunSA866(void);
   void zrerunSA866(void);
  struct STRSA sa866ae;
 /**********  延时子程序 ********************/
void delay(unsigned int time)
  {
    unsigned int i,j;
    for(i=0;i<time;i++)
          for(j=0;j<100;j++);
 } 
 /****************  写一字节子程序***********/
//addr为要写的寄存地址参数,
//cmd为要写的寄存命令值
/******************************************/
 void write_bye(U char addr,U char cmd)
{
    U char temp,iv,i;
    clrCLK;
    i=5;
    while(i>0)i--;
    setCS;
    i=5;
    while(i>0)i--;
    setDATA;
    i=5;
    while(i>0)i--;
    setCLK;
          for(iv=0;iv<4;iv++)
      {
      i=5;
      while(i>0)i--;
      clrCLK;
      temp=addr&0x08;
      addr=addr<<1;
      if(temp==0x08){setDATA;}
      else{clrDATA;}
      i=5;
      while(i>0)i--;
      setCLK;
      }
           for(iv=0;iv<8;iv++)
      {
      i=5;
      while(i>0)i--;
      clrCLK;
      temp=cmd&0x80;
      cmd=cmd<<1;
      if(temp==0x80){setDATA;}
      else{clrDATA;}
      i=5;
      while(i>0)i--;
      setCLK;
      }
      i=5;
      while(i>0)i--;
      clrCLK;
      i=5;
      while(i>0)i--;
      clrCS;
      i=5;
      while(i>0)i--;
      setCLK;
 }
/*********** 系统初始化子程序*************/
 void iniSA866(void)
     {
     clrCS;
     clrDATA;
     setCLK;
     clrSETTR;
     setDIR;
     clrREST;
     delay(600);
     setREST;
          }
 //////////////////////////// 
 void setSA866(void)
 {
    delay(10);
    write_bye(0,0x56);
    delay(3);
    write_bye(0,0x56);//1010010
    delay(3);
    write_bye(1,0x63);// b7-b5(011) CFS=2.4k// b4-b3(00) WS=0(sin)//b2-b0(011) FRS=52.8
   // write_bye(1,0x42);// b7-b5(010) CFS=5k// b4-b3(00) WS=0(sin)//b2-b0(010) FRS=52.8
    delay(3);
    //write_bye(2,0xfA); //b7-b1(1111 101) PDT=8uS//b0(0)FC=line
    write_bye(2,0xB2); //b7-b1(1011 001) PDT=15uS//b0(0)FC=line
    delay(3);
    write_bye(3,0x4A);//b7-b2(1000 10)PDY=36uS//b1-b0(10)ZTH=100mV(L-H) 78mv(H-L)
    //write_bye(3,0x9A);//b7-b2(1001 10)PDY=10uS//b1-b0(10)ZTH=100mV(L-H) 78mv(H-L)
    write_bye(6,0x0d);//GRAD
    delay(3);
    write_bye(7,0x33);//PED 20
    delay(3);
    write_bye(8,0x00);//KAY
    delay(3);
    write_bye(9,0x00);//b3-b0AWS
    delay(3);
    SetFre();
    }
    //////////////////////////////////
   void SetFre(void)
   {
   unsigned int temp;
   unsigned char temp2;
   temp=sa866ae.freset;
    if(temp>520)
        {
        delay(3);
        write_bye(4,0xff);//speedtop
        delay(3);
        write_bye(5,0xff);//speedlow
        delay(3);
        }
    else
        {
        temp=temp*131;
        temp2=temp>>8;
        delay(3);
        write_bye(4,temp2);//speedtop
        temp2=temp&0xff;
        delay(3);
        write_bye(5,temp2);//speedlow
        delay(3);
        }

   }
    void rerunSA866(void)
   {
    delay(3);
    write_bye(0,0x54);//speedtop
   }
 void zrerunSA866(void)
   {
    delay(3);
    write_bye(0,0x56);//speedtop
   }    

⌨️ 快捷键说明

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