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

📄 driver.c

📁 用于IO端口等PC机驱动
💻 C
字号:
#include <sys/io.h>#include <stdio.h>#define SPPDATA(addr) addr#define STATUSPORT(addr) addr+1#define CONTROLPORT(addr) addr+2#define ADDRPORT(addr) addr+3#define DATAPORT(addr) addr+4#define uchar unsigned char#define uint unsigned intint main(void){int i;uint pulse[3],scale[3];uint dac;float  dac_tmp;uchar send;uchar rev[16];uchar  dir=0x00;iopl(3);while(1){				//脉冲数		outb(0x00,0x37A);		outb(0x04,0x37A);		outb(0x10,0x37B);		for(i=0;i<3;i++)		{//			scale[i]=(0x1250>>i);			scale[i]=125;			send=(uchar)((scale[i]>>16)&0x000000ff);				outb(send,0x37C);			send=(uchar)((scale[i]>>8)&0x000000ff);			outb(send,0x37c);			send=(uchar)(scale[i]&0x000000ff);			outb(send,0x37c);			pulse[i]=0x000050;			send=(uchar)((pulse[i]>>16)&0x000000ff);			outb(send,0x37C);			send=(uchar)((pulse[i]>>8)&0x000000ff);			outb(send,0x37c);			send=(uchar)(pulse[i]&0x000000ff);				outb(send,0x37c);		}		//方向		outb(dir,0x37c);		//dac		dac_tmp=3;		dac=(uint)(dac_tmp/4*4095);		send=(uchar)(dac&0x000000ff);		outb(send,0x37c);		send=(uchar)((dac>>8)&0x000000ff);		outb(send,0x37c);			//I/O		dac=0x00ffffff;		send =(uchar)(dac&0x000000ff);		outb(send,0x37c);		send=(uchar)((dac>>8)&0x000000ff);		outb(send,0x37c);		send=(uchar)((dac>>16)&0x000000ff);		outb(send,0x37c);		//读数据		usleep(1000);		outb(0x40,0x37B);		outb(0x20,0x37A);		outb(0x24,0x37A);		rev[0]=inb(0x37b);		for(i=0;i<16;i++)		{			rev[i]=inb(0x37c);			printf("%02x",rev[i]);			if(i==2)				printf("; ");			if(i==5)				printf("; ");			if(i==8)				printf("; ");		}		printf("\n");/*		rev[i]=inb(0x37c);		printf("%02x\n",rev[0]);*//*			outb(0x00,0x37A);			outb(0x04,0x37A);			outb(0x40,0x37B);			usleep(1000000);			outb(0x20,0x37A);			outb(0x24,0x37A);			for(i=0;i<3;i++)			{				rev[i]=inb(0x37c);				printf("%x",rev[i]);				usleep(1000000);			}			printf("\n");			outb(0x00,0x37A);			outb(0x04,0x37A);			outb(0x43,0x37B);			outb(0x20,0x37A);			outb(0x24,0x37A);			for(i=3;i<6;i++)			{				rev[i]=inb(0x37c);				printf("%x",rev[i]);			}			printf("\n");			outb(0x00,0x37A);			outb(0x04,0x37A);			outb(0x46,0x37B);			outb(0x20,0x37A);			outb(0x24,0x37A);			for(i=6;i<9;i++)			{				rev[i]=inb(0x37c);				printf("%x",rev[i]);			}			printf("\n");*///		usleep(interval);}			return 0;}

⌨️ 快捷键说明

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