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

📄 do_8255_test.c

📁 基于linux2.4内核下,外接于AT91RM9200总线上的8255驱动及测试程序。硬件平台为:中嵌科技的CE9200-1开发板
💻 C
字号:
/*****************************************************************************
;Institue of Automation, Chinese Academy of Sciences
;www.hyesco.com
;Description:	8255 driver on Linux for NJWKM; 
;Date:		2007-01-05	
;Author:	
;E_mail:	
*****************************************************************************/

#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>

int main()
{
		//Channel取值为0~2,分别对应8255的PA1、PB1、PC1;
		//PA1---> RELAY0~RELAY7;   
		//PB1---> RELAY8~RELAY15;
		//PC1---> USRLED0~USRLED7;
		//PA1、PB1、PC1(U1800)用于输出,从这些端口读入数据无意义;
		
		unsigned char Channel;
		//IO_data为8255的输入/输出数据缓冲区,用于存放输入/输出的数据;
		unsigned char IO_data;
		unsigned int rev;
		static int fd=-1;
		unsigned char ch;
		
		//以可读、写的方式打开设备文件;
		if((fd=open("/dev/DO_8255",O_RDWR))==-1)
			{
			perror("\r\nOpen DO_8255 error!\r\n");
			exit(1);
			}
			
		//选择PA1口;
		Channel=0;
		rev = ioctl(fd,1,Channel);
		
		//向PA1口输出全高电平;
		IO_data=0xff;
		rev = write(fd,&IO_data,sizeof(unsigned char));
		printf("\r\nPA1 are high-level! \r\n");
		printf("\r\nPress any key to continue...! \r\n");
		ch = getchar();
		
		//向PA1口输出全低电平;
		IO_data=0x00;
		rev = write(fd,&IO_data,sizeof(unsigned char));
		printf("\r\nPA1 are low-level! \r\n");
		printf("\r\nPress any key to continue...! \r\n");
		ch = getchar();
		
		//选择PB1口;
		Channel=1;
		rev = ioctl(fd,1,Channel);
		
		//向PB1口输出全高电平;
    IO_data=0xff;
		rev = write(fd,&IO_data,sizeof(unsigned char));
		printf("\r\nPB1 are high-level! \r\n");
		printf("\r\nPress any key to continue...! \r\n");
		ch = getchar();

    //向PB1口输出全低电平;
    IO_data=0x00;
		rev = write(fd,&IO_data,sizeof(unsigned char));
		printf("\r\nPB1 are low-level! \r\n");
		printf("\r\nPress any key to continue...! \r\n");
		ch = getchar();	
		
		//选择PC1口;
		Channel=2;
		rev = ioctl(fd,1,Channel);
		
		//向PC1口输出全高电平;
		IO_data=0xff;
		rev = write(fd,&IO_data,sizeof(unsigned char));
		printf("\r\nPC1 are high-level! \r\n");
		printf("\r\nPress any key to continue...! \r\n");
		ch = getchar();
		
		//向PC1口输出全低电平;
		IO_data=0x00;
		rev = write(fd,&IO_data,sizeof(unsigned char));
		printf("\r\nPC1 are low-level! \r\n");
		printf("\r\nPress any key to continue...! \r\n");
		ch = getchar();
		
		//关闭备文件;	
		close(fd);
		return 0;
}

⌨️ 快捷键说明

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