📄 ztpm511.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <sys/io.h>
//#include "ztpm511.h"
#define ZTAPI
#define APIENTRY
extern int zt_io_fd;
void outport(long addr,long v){
long uldata[2];
uldata[0]=addr;uldata[1]=v;
write(zt_io_fd,uldata,16);
}
long inport(long addr){
long uldata[2];
uldata[0]=addr;uldata[1]=0;
read(zt_io_fd,uldata,16);
return uldata[1];
}
void outportb(long addr,long v){
long uldata[2];
uldata[0]=addr;uldata[1]=v;
write(zt_io_fd,uldata,8);
}
long inportb(long addr){
long uldata[2];
uldata[0]=addr;uldata[1]=0;
read(zt_io_fd,uldata,8);
return uldata[1];
}
ZTAPI long APIENTRY ztpm511ad(short base,short ch,short nmode,long delaytimes){
int retv=0;
float fretv=0;
outportb(base,ch&0xff);
for(;delaytimes>0;delaytimes--)inportb(base+1);
inportb(base);
while((inportb(base+1)&1)&&delaytimes++<100);
retv=inport(base+2)&0xfff;
if(delaytimes>=100)retv=4096;
switch(nmode){
case 0:
fretv=retv*1.0;
break;
case 1:
fretv=(float)(retv*10.0/4095.0);
break;
case 2:
fretv=(float)(retv*10.0/4095.0-5.0);
break;
case 3:
fretv=(float)(retv*20.0/4095.0-10.0);
break;
default:
fretv=retv*1.0;
break;
}
/* printf("%10.2f ",fretv);*/
return retv;
}
ZTAPI long APIENTRY ztpm511da(short base,short ch,short value)
{
int nvalue=0;
outportb(base+0x4,ch);
nvalue=(int)value;
outport(base+0x6,nvalue);
printf("ztpm511da:ch:%d,value:%d",ch,value);
return 0;
}
ZTAPI long APIENTRY ztpm511initc(short base,long value)
{
outportb(base+0xf,value&0xff);
// printf("v:%x\n",value);
return 0;
}
ZTAPI long APIENTRY ztpm511writec(short base,short ch,long value)
{
outportb(base+0xc+ch,value&0xff);
outportb(base+0xc+ch,(value>>8)&0xff);
// printf("ch:%x,v:%x\n",ch,value);
return 0;
}
ZTAPI long APIENTRY ztpm511readc(short base,short ch)
{ long v;
v=inportb(base+0xc+ch)+inportb(base+0xc+ch)*0x100;
// printf("ch:%x,v:%x\n",ch,v);
return v;
}
ZTAPI long APIENTRY ztpm511init55(short base,short value)
{
outportb(base+0xb,value&0xff);
// printf("value:%x\n",value);
return inportb(base+0xb);
}
ZTAPI long APIENTRY ztpm511read55(short base,short ch)
{
// printf("ch:%x\n",ch);
return (inportb(base+0x8+ch)&0xff);
}
ZTAPI long APIENTRY ztpm511write55(short base,short ch,short value)
{
long ret=0;
// printf("ch:%x,v:%x\n",ch,value);
outportb((base+0x8+ch),value&0xff);
ret=inportb((base+0x8+ch));
return ret&0xff;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -