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

📄 bsp_pca9551.c

📁 嵌入式的tcpip协议栈
💻 C
📖 第 1 页 / 共 2 页
字号:
{
  LED_Blinker_Write(0x03, PeriodPattern1);
}


/*********************************************************************************************************
*                                           SetDutyCyclePattern1()
*
* Description : Set Pattern 1 Duty Cycle
*
* Argument(s) : Pattern 1 Duty Cycle value
*
* Return(s)   : none.
*********************************************************************************************************/
void SetDutyCyclePattern1(CPU_INT08U DutyCyclePattern1)
{
  LED_Blinker_Write(0x04, DutyCyclePattern1);
}


/*********************************************************************************************************
*                                           GetPeriodPattern0()
*
* Description : Read Pattern 0 Period
*
* Argument(s) : Pointer to Pattern 0 Period value
*
* Return(s)   : none.
*********************************************************************************************************/
void GetPeriodPattern0(CPU_INT08U *ReadData)
{
  CPU_INT08U  reg = 0x01;
  CPU_INT08U  data = 0xFF;

  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  *ReadData = data;
}


/*********************************************************************************************************
*                                           GetDutyCyclePattern0()
*
* Description : Read Pattern 0 Duty Cycle
*
* Argument(s) : Pointer to Pattern 0 Duty Cycle value
*
* Return(s)   : none.
*********************************************************************************************************/
void GetDutyCyclePattern0(CPU_INT08U *ReadData)
{
  CPU_INT08U  reg = 0x02;
  CPU_INT08U  data = 0xFF;

  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  *ReadData = data;
}


/*********************************************************************************************************
*                                           GetPeriodPattern1()
*
* Description : Read Pattern 1 Period
*
* Argument(s) : Pointer to Pattern 1 Period value
*
* Return(s)   : none.
*********************************************************************************************************/
void GetPeriodPattern1(CPU_INT08U *ReadData)
{
  CPU_INT08U  reg = 0x03;
  CPU_INT08U  data = 0xFF;

  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  *ReadData = data;
}


/*********************************************************************************************************
*                                           GetDutyCyclePattern1()
*
* Description : Read Pattern 1 Duty Cycle
*
* Argument(s) : Pointer to Pattern 1 Duty Cycle value
*
* Return(s)   : none.
*********************************************************************************************************/
void GetDutyCyclePattern1(CPU_INT08U *ReadData)
{
  CPU_INT08U  reg = 0x04;
  CPU_INT08U  data = 0xFF;

  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  *ReadData = data;
}


/*********************************************************************************************************
*                                           SetLED1Output()
*
* Description : Set LED1 Output State
*
* Argument(s) : LED1 Output State value
*
* Return(s)   : none.
*********************************************************************************************************/
void SetLED1Output(CPU_INT08U LED1State)     // LED1 is connected to pin LED4 of the PCA9551
{
  CPU_INT08U  LEDOutputRegister = 0xFF;

  I2C_ReadReg(PCA9551_ADDRESS, &LEDOutputRegister, 1, 0x06);    // Read LED Output Register (LED4-LED7)
  LEDOutputRegister = LEDOutputRegister & 0xFC;                 // Clear previous LED4 output state
  LEDOutputRegister = LEDOutputRegister | LED1State;            // Insert new LED4 output state
  LED_Blinker_Write(0x06, LEDOutputRegister);                   // Program new LED Output Register
}


/*********************************************************************************************************
*                                           SetLED2Output()
*
* Description : Set LED2 Output State
*
* Argument(s) : LED2 Output State value
*
* Return(s)   : none.
*********************************************************************************************************/
void SetLED2Output(CPU_INT08U LED2State)     // LED2 is connected to pin LED5 of the PCA9551
{
  CPU_INT08U LEDOutputRegister = 0xFF;
  
  I2C_ReadReg(PCA9551_ADDRESS, &LEDOutputRegister, 1, 0x06);    // Read LED Output Register (LED4-LED7)
  LEDOutputRegister = LEDOutputRegister & 0xF3;                 // Clear previous LED5 output state
  LEDOutputRegister = LEDOutputRegister | (LED2State << 2);     // Insert new LED5 output state
  LED_Blinker_Write(0x06, LEDOutputRegister);                   // Program new LED Output Register
}


/*********************************************************************************************************
*                                           SetLED3Output()
*
* Description : Set LED3 Output State
*
* Argument(s) : LED3 Output State value
*
* Return(s)   : none.
*********************************************************************************************************/
void SetLED3Output(CPU_INT08U LED3State)     // LED3 is connected to pin LED6 of the PCA9551
{
  CPU_INT08U LEDOutputRegister = 0xFF;
  
  I2C_ReadReg(PCA9551_ADDRESS, &LEDOutputRegister, 1, 0x06);    // Read LED Output Register (LED4-LED7)
  LEDOutputRegister = LEDOutputRegister & 0xCF;                 // Clear previous LED6 output state
  LEDOutputRegister = LEDOutputRegister | (LED3State << 4);     // Insert new LED6 output state
  LED_Blinker_Write(0x06, LEDOutputRegister);                   // Program new LED Output Register
}


/*********************************************************************************************************
*                                           SetLED4Output()
*
* Description : Set LED4 Output State
*
* Argument(s) : LED4 Output State value
*
* Return(s)   : none.
*********************************************************************************************************/
void SetLED4Output(CPU_INT08U LED4State)     // LED4 is connected to pin LED7 of the PCA9551
{
  CPU_INT08U LEDOutputRegister = 0xFF;

  I2C_ReadReg(PCA9551_ADDRESS, &LEDOutputRegister, 1, 0x06);    // Read LED Output Register (LED4-LED7)  
  LEDOutputRegister = LEDOutputRegister & 0x3F;                 // Clear previous LED7 output state
  LEDOutputRegister = LEDOutputRegister | (LED4State << 6);     // Insert new LED7 output state
  LED_Blinker_Write(0x06, LEDOutputRegister);                   // Program new LED Output Register
}


/*********************************************************************************************************
*                                           GetLED1Output()
*
* Description : Read LED1 Output State
*
* Argument(s) : Pointer to LED1 Output State value
*
* Return(s)   : none.
*********************************************************************************************************/
void GetLED1Output (CPU_INT08U *ReadData)    // LED1 is connected to pin LED4 of the PCA9551
{
  CPU_INT08U  reg = 0x06;
  CPU_INT08U  data = 0xFF;

  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  data = data & 0x03;
  *ReadData = data;
}


/*********************************************************************************************************
*                                           GetLED2Output()
*
* Description : Read LED2 Output State
*
* Argument(s) : Pointer to LED2 Output State value
*
* Return(s)   : none.
*********************************************************************************************************/
void GetLED2Output (CPU_INT08U *ReadData)    // LED2 is connected to pin LED5 of the PCA9551
{
  CPU_INT08U  reg = 0x06;
  CPU_INT08U  data = 0xFF;

  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  data = (data & 0x0C) >> 2;
  *ReadData = data;
}


/*********************************************************************************************************
*                                           GetLED3Output()
*
* Description : Read LED3 Output State
*
* Argument(s) : Pointer to LED3 Output State value
*
* Return(s)   : none.
*********************************************************************************************************/
void GetLED3Output (CPU_INT08U *ReadData)    // LED3 is connected to pin LED6 of the PCA9551
{
  CPU_INT08U  reg = 0x06;
  CPU_INT08U  data = 0xFF;

  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  data = (data & 0x30) >> 4;
  *ReadData = data;
}


/*********************************************************************************************************
*                                           GetLED4Output()
*
* Description : Read LED4 Output State
*
* Argument(s) : Pointer to LED4 Output State value
*
* Return(s)   : none.
*********************************************************************************************************/
void GetLED4Output (CPU_INT08U *ReadData)    // LED4 is connected to pin LED7 of the PCA9551
{
  CPU_INT08U  reg = 0x06;
  CPU_INT08U  data = 0xFF;

  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  data = (data & 0xC0) >> 6;
  *ReadData = data;
}


/*********************************************************************************************************
*                                           GetStateSW1()
*
* Description : Read SW1 Switch 1 Output State
*
* Argument(s) : Pointer to SW1 Output State
*
* Return(s)   : none.
*********************************************************************************************************/
CPU_INT08U GetStateSW1(void)            // SW1 is connected to pin LED1 of the PCA9551
{
  CPU_INT08U  State_SW1;
  CPU_INT08U  reg = 0x00;
  CPU_INT08U  data = 0xFF;
  
  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  State_SW1 = data & 0x01;
  
  return State_SW1;
}


/*********************************************************************************************************
*                                           GetStateSW2()
*
* Description : Read SW2 Switch 2 Output State
*
* Argument(s) : Pointer to SW2 Output State
*
* Return(s)   : none.
*********************************************************************************************************/
CPU_INT08U GetStateSW2(void)            // SW2 is connected to pin LED2 of the PCA9551
{
  CPU_INT08U  State_SW2;
  CPU_INT08U  reg = 0x00;
  CPU_INT08U  data = 0xFF;
  
  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  State_SW2 = (data & 0x02) >> 1;
  
  return State_SW2;
}


/*********************************************************************************************************
*                                           GetStateSW3()
*
* Description : Read SW3 Switch 3 Output State
*
* Argument(s) : Pointer to SW3 Output State
*
* Return(s)   : none.
*********************************************************************************************************/
CPU_INT08U GetStateSW3(void)            // SW3 is connected to pin LED3 of the PCA9551
{
  CPU_INT08U  State_SW3;
  CPU_INT08U  reg = 0x00;
  CPU_INT08U  data = 0xFF;
  
  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  State_SW3 = (data & 0x04) >> 2;
  
  return State_SW3;
}


/*********************************************************************************************************
*                                           GetStateSW4()
*
* Description : Read SW4 Switch 4 Output State
*
* Argument(s) : Pointer to SW4 Output State
*
* Return(s)   : none.
*********************************************************************************************************/
CPU_INT08U GetStateSW4(void)            // SW4 is connected to pin LED4 of the PCA9551
{
  CPU_INT08U  State_SW4;
  CPU_INT08U  reg = 0x00;
  CPU_INT08U  data = 0xFF;
  
  I2C_ReadReg(PCA9551_ADDRESS, &data, 1, reg);  
  State_SW4 = (data & 0x08) >> 3;
  
  return State_SW4;
}

⌨️ 快捷键说明

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