标题: 这个C语言转换程序看不明白。有大佬能说明一下都是干什么的,什么作用么? [打印本页]

作者: liuze1670    时间: 2020-5-24 13:43
标题: 这个C语言转换程序看不明白。有大佬能说明一下都是干什么的,什么作用么?
uint adc0832(unsigned char CH)
{
  uchar i,test,adval;
  adval = 0x00;
  test = 0x00;
  Clk = 0;      
  DATI = 1;
  _nop_();   _nop_();
  CS = 0;
  _nop_();
  Clk = 1;
  _nop_();  _nop_();
if(CH == 0x00)     
   {
       Clk = 0;
       DATI = 1;   
       _nop_();
       Clk = 1;
       _nop_();  _nop_();

       Clk = 0;
       DATI = 0;   
       _nop_();  _nop_();

       Clk = 1;
       _nop_();
    }
    else
    {
       Clk = 0;
       DATI = 1;  
        _nop_();  _nop_();

       Clk = 1;
        _nop_();  _nop_();

       Clk = 0;
       DATI = 1;  
      _nop_();
      Clk = 1;
      _nop_();
    }
      Clk = 0;   _nop_();

      DATI = 1;
   for( i = 0;i < 8;i++ )   
    {
       _nop_();
       adval <<= 1;
       Clk = 1;
       _nop_();  _nop_();

       Clk = 0;           _nop_();

       if (DATO)
          adval |= 0x01;
      else
          adval |= 0x00;
    }
  for (i = 0; i < 8; i++)  
      {
           test >>= 1;
           if (DATO)
              test |= 0x80;
           else
              test |= 0x00;
          _nop_();
          Clk = 1;
          _nop_();  _nop_();

          Clk = 0;   _nop_();

      }
  if (adval == test)     
     dat = test;
     _nop_();  _nop_();
     CS = 1;      
     DATO = 1;
     Clk = 1;
     return dat;

}


作者: benclee    时间: 2020-5-24 22:37
uint adc0832(unsigned char CH)
{
  uchar i,test,adval;
  adval = 0x00;
  test = 0x00;
  Clk = 0;      
  DATI = 1;
  CS = 0;
  Clk = 1;
if(CH == 0x00) //选择通道   
   {
       Clk = 0;//这段是选通道0
       DATI = 1;   
       Clk = 1;
       Clk = 0;
       DATI = 0;   
        Clk = 1;
    }
    else
    {
       Clk = 0;//这段是选择通道1
       DATI = 1;  
       Clk = 1;
       Clk = 0;
       DATI = 1;  
      Clk = 1;
    }
      Clk = 0;  

      DATI = 1;
   for( i = 0;i < 8;i++ )   //读取8位数据高位在前
    {
        adval <<= 1;
       Clk = 1;
       Clk = 0;  

       if (DATO)
          adval |= 0x01;
      else
          adval |= 0x00;
    }
  for (i = 0; i < 8; i++)  //读取8位数据低位在前,也就是上面一段反这读取。
      {
           test >>= 1;
           if (DATO)
              test |= 0x80;
           else
              test |= 0x00;
           Clk = 1;
          Clk = 0;
      }
  if (adval == test)     //进行校验,如果相同则数据正确,
     dat = test;
      CS = 1;      
     DATO = 1;
     Clk = 1;
     return dat;

}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1