pm511adi.c

来自「pc104接口在arm9200开发板上的驱动程序」· C语言 代码 · 共 70 行

C
70
字号
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
#include <errno.h>

void outport(int fd,long addr,long v){
long uldata[2];
  uldata[0]=addr;uldata[1]=v;
  write(fd,uldata,16);
}

long inport(int fd,long addr){
long uldata[2];
  uldata[0]=addr;uldata[1]=0;
  read(fd,uldata,16);
  return uldata[1];
}

void outportb(int fd,long addr,long v){
long uldata[2];
  uldata[0]=addr;uldata[1]=v;
  write(fd,uldata,8);
}

long inportb(int fd,long addr){
long uldata[2];
  uldata[0]=addr;uldata[1]=0;
  read(fd,uldata,8);
  return uldata[1];
}

char* dev={"/dev/zt_io-0"};
int main()
{
  int fd;
  int ch=0;			     		/* 定义通道变量 */
  long d=0,base;				/* 定义过程变量 */
  long i,j=0;
  unsigned long max=0,min=0,ed;
  unsigned short td[409600];
  base=0x100;
  fd=open(dev,O_RDWR);
  if(!fd){printf("open zt_io error!\n");return 0;}
  outport(fd,1000,1);
  outportb(fd,base+1,0);
  outportb(fd,base,ch);
  outport(fd,base+2,39);
  outportb(fd,base+1,0xc2);
  while(1){
    int retv;
    min=4095;max=0;
    ed=0;
    if((retv=read(fd,td,409600*2))<0)printf("read 8192 false!%ld\n",retv);
    for(i=0;i<retv;i++){
      int a=td[i]&0xfff;
      ed+=a;
      max=a<max?max:a;
      min=a>min?min:a;
//      printf("%x\n",td[i]);
    }
    if(retv>0){
      ed/=retv;
      printf("%6x,%6x,%6x,%6x,%7ld,%5x\n",ed,(max-min),max,min,retv,j++);
    }
  }
  return 0;
}

⌨️ 快捷键说明

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