找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1258|回复: 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;

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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 单片机教程网

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