找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1518|回复: 1
收起左侧

这个C语言转换程序看不明白。有大佬能说明一下都是干什么的,什么作用么?

[复制链接]
ID:747076 发表于 2020-5-24 13:43 | 显示全部楼层 |阅读模式
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;

}

回复

使用道具 举报

ID:70069 发表于 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;

}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表