📄 bsp_pca9551.c
字号:
{
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 + -