⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pm511adi.c

📁 pc104接口在arm9200开发板上的驱动程序
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -