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

📄 di_module.c

📁 can tongxunCAN128的底层驱动
💻 C
字号:
#include "main.h"
/*
*  11: 开关闭和
*  10: 开关打开
*  00: 断线
*/
//PA3,PF2   PF3,PA2   PE7,PE1   PE0,PE6   PA5,PF0   PF1,PA4


Uchar DI_Status[3];
Uchar PINA_temp,PINB_temp,PINE_temp,PINF_temp;

void DI_Init(void)
{
  DDRA = 0x00;
  DDRB = 0x00;
  DDRB |= (1<<5);
  DDRE = 0x00;
  DDRF = 0x00;
  DI_handle();
}

void DI_handle(void)
{
  PINA_temp = PINA;
  PINB_temp = PINB;
  PINE_temp = PINE;
  PINF_temp = PINF;

/**************Channel 1*****************/   
  if(PINA_temp & (1<<3))
      DI_Status[0] |= (1<<0);
  else 
      DI_Status[0] &= (~(1<<0));
  
  if(PINF_temp & (1<<2))
      DI_Status[0] |= (1<<1);
  else 
      DI_Status[0] &= (~(1<<1));
	 
/**************Channel 2*****************/ 
  if(PINF_temp & (1<<3))
      DI_Status[0] |= (1<<2);
  else 
      DI_Status[0] &= (~(1<<2));

  if(PINA_temp & (1<<2))
      DI_Status[0] |= (1<<3);
  else 
      DI_Status[0] &= (~(1<<3));

/**************Channel 3*****************/
  if(PINE_temp & (1<<7))
      DI_Status[0] |= (1<<4);
  else 
      DI_Status[0] &= (~(1<<4));

  if(PINE_temp & (1<<1))
      DI_Status[0] |= (1<<5);
  else 
      DI_Status[0] &= (~(1<<5));

/**************Channel 4*****************/
  if(PINE_temp & (1<<0))
      DI_Status[0] |= (1<<6);
  else 
      DI_Status[0] &= (~(1<<6));

  if(PINE_temp & (1<<6))
      DI_Status[0] |= (1<<7);
  else 
      DI_Status[0] &= (~(1<<7));
	  
/**************Channel 5*****************/
  if(PINA_temp & (1<<5))
      DI_Status[1] |= (1<<0);
  else 
      DI_Status[1] &= (~(1<<0));

  if(PINF_temp & (1<<0))
      DI_Status[1] |= (1<<1);
  else 
      DI_Status[1] &= (~(1<<1));
   
/**************Channel 6*****************/
  if(PINF_temp & (1<<1))
      DI_Status[1] |= (1<<2);
  else
      DI_Status[1] &= (~(1<<2));
  
  if(PINA_temp & (1<<4))
      DI_Status[1] |= (1<<3);
  else 
      DI_Status[1] &= (~(1<<3));
	  
	  
//PB1,PE3  PE2,PB0  PA7,PA1   PA0,PA6   PB3,PE5   PE4,PB2	  
	  
/**************Channel 7*****************/
  if(PINB_temp & (1<<1))
      DI_Status[1] |= (1<<4);
  else 
      DI_Status[1] &= (~(1<<4));

  if(PINE_temp & (1<<3))
      DI_Status[1] |= (1<<5);
  else 
      DI_Status[1] &= (~(1<<5));
	  
/**************Channel 8*****************/
  if(PINE_temp & (1<<2))
      DI_Status[1] |= (1<<6);
  else 
      DI_Status[1] &= (~(1<<6));
	  
  if(PINB_temp & (1<<0))
      DI_Status[1] |= (1<<7);
  else 
      DI_Status[1] &= (~(1<<7));
	  
/**************Channel 9*****************/
  if(PINA_temp & (1<<7))
      DI_Status[2] |= (1<<0);
  else 
      DI_Status[2] &= (~(1<<0));
	   
  if(PINA_temp & (1<<1))
      DI_Status[2] |= (1<<1);
  else 
      DI_Status[2] &= (~(1<<1));

/**************Channel 10*****************/
  if(PINA_temp & (1<<0))
      DI_Status[2] |= (1<<2);
  else 
      DI_Status[2] &= (~(1<<2));

  if(PINA_temp & (1<<6))
      DI_Status[2] |= (1<<3);
  else 
      DI_Status[2] &= (~(1<<3));

/**************Channel 11*****************/
  if(PINB_temp & (1<<3))
      DI_Status[2] |= (1<<4);
  else 
      DI_Status[2] &= (~(1<<4));
	
  if(PINE_temp & (1<<5))
      DI_Status[2] |= (1<<5);
  else 
      DI_Status[2] &= (~(1<<5));

/**************Channel 12*****************/
  if(PINE_temp & (1<<4))	
      DI_Status[2] |= (1<<6);
  else 
      DI_Status[2] &= (~(1<<6));

  if(PINB_temp & (1<<2))
      DI_Status[2] |= (1<<7);
  else 
      DI_Status[2] &= (~(1<<7));
	  
///test
  if((DI_Status[0] != 0xaa) || (DI_Status[1] != 0xaa) || (DI_Status[1] != 0xaa))
      PORTB |= (1<<5);
}

⌨️ 快捷键说明

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