毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 嵌入式 >> 正文

AD中么不能直接取得数值然后显示,而是要左移八位然后再与低八位按位或呢

更新时间:2012-5-21:  来源:毕业论文

今天看了开发板的ADC例程,整个程序比较简单,但是里面有一句我不懂,我已经用黑体标注了,为什么不能直接取得数值然后显示,而是要左移八位然后再与低八位按位或呢?小弟菜鸟,请大家指点!

#include "stdio.h"
#include "sys/types.h"
#include "sys/ioctl.h"
#include "stdlib.h"
#include "termios.h"
#include "sys/stat.h"
#include "fcntl.h"
#include "sys/time.h"
int main(int argc, char **argv)
{
  int fd,ret,adcdat0;
  char buf[2];
  fd=open("/dev/adc_dev",0);
  if(fd<0)
  {
  printf("open adc error\n");
  exit(1);
  }
  else
  {
  printf("success\n");
  while(1)  
  {
  read(fd,buf,2);
adcdat0=buf[1];
adcdat0=adcdat0<<8|buf[0];//这句不理解,为什么要左移八位再按位或呢?
  printf("%x \n",adcdat0);
  sleep(1);
  }
  }
  close(fd);
}

buf[1]代表高8位,buf[0]为低8位, adcdat0 = buf[1]*256 + buf[0];直接表示,与下面两句是等价的
adcdat0=buf[1];
adcdat0=adcdat0<<8|buf[0]; 

因为adc 的装换精度高于8位  

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。