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

📄 drive8243.c

📁 ... .. 单片机接口技术实用子程序
💻 C
字号:
/*----------------------------------------------------------------------------------------------------------------
函数名称:driver8243
功能描述:驱动8243
输入参数:sele_P端口选择,sele_M工作模式选择,out_data输出模式下的输出数据
输出参数:in_data接收模式返回接收到的数据,其它模式返回0
特殊说明:在不同的单片机应用系统中,需要做相应得调整
//----------------------------------------------------------------------------------------------------------------*/
#include<config.h>
char driver8243(char sele_P,char sele_M,char out_data)
 			   {
			    char in_data=0;
			   	PROG=1;						//置PROG为高电平
											//开始写控制字
				 if((sele_P&0x01)==0)		    //将控制字最低位送到8243的p2.0		 
				 {
				    ContrBit0=0;			
				  }
				  else
				  {
				   ContrBit0=1;
				   }
				  if((sele_P&0x02)==0)		    //将控制字第二位送到8243的p2.1
				 {
				    ContrBit1=0;
				  }
				  else
				  {
				   ContrBit1=1;			   //以上两位共同指定端口地址
				   }
										   //写端口工作模式控制字
										   
				   if((sele_M&0x01)==0)		   //将端口工作模式控制字低位送到8243的p2.2
				 {
				    ContrBit2=0;
				  }
				  else
				  {
				   ContrBit2=1;
				   }

				   if((sele_M&0x01)==0)		    //将端口工作模式控制字高位送到8243的p2.3
				 {
				    ContrBit3=0;
				  }
				  else
				  {
				   ContrBit3=1;
				   }					  //写控制字完成
				
				PROG=0;					  //在PROG上产生下降沿
			    switch(sele_M&0x03)		  //判断工作模式
				 {
				   case 0: break;	                        //sele_M=B00为输入,不处理,等待上升沿
				   case 1: data_buf=out_data;break;			//sele_M=B01为输出,直接送数据
				   case 2: data_buf=out_data;break;			//sele_M=B10为逻辑或,直接送数据
				   case 3: data_buf=out_data;break;			//sele_M=B11为逻辑与,直接送数据
				   }
			  
			   PROG=1;					     //在PROG上产生上升沿
			     if((sele_M&0x03)==0) 		 //sele_M=B00为输入,接收数据
			      in_data=(data_buf&0x0F);   
			   return(in_data);				 //sele_M=B00,返回接收到的数据
											 //sele_M!=B00,返回0
             }

void main( void)
          {
		  char receive_data;
		  receive_data=	driver8243(1,0,5);
		  }

⌨️ 快捷键说明

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