48 lines
799 B
C
48 lines
799 B
C
#include "digital.h"
|
|
|
|
uint8_t di_data = 0,do_data = 0;
|
|
|
|
void di_do_ctrl(void)
|
|
{
|
|
//数字量输入
|
|
di_data = (READ_DI1() << 7) + (READ_DI2() << 6) + (NCHRG_STATE() << 5);
|
|
DisState[0] = di_data;
|
|
|
|
//数字量输出
|
|
if(CoilState[0] & 0x80) DO_HIGH();
|
|
else DO_LOW();
|
|
|
|
if(CoilState[0] & 0x20) BUZZER_HIGH();
|
|
else BUZZER_LOW();
|
|
|
|
// if(CoilState[0] & 0x10) POW_ON();
|
|
// else POW_OFF();
|
|
|
|
if(CoilState[0] & 0x04)
|
|
{
|
|
__HAL_TIM_SetCounter(&htim1, 0x9718); //初始化计数值
|
|
cnt_update = 152;
|
|
CoilState[0] = CoilState[0] & 0xFB;
|
|
}
|
|
|
|
if(CoilState[0] & 0x02)
|
|
{
|
|
for(int n = 5;n < 9;n++)
|
|
{
|
|
HoldReg[n] = 0;
|
|
}
|
|
CoilState[0] = CoilState[0] & 0xFD;
|
|
}
|
|
if(CoilState[0] & 0x01)
|
|
{
|
|
for(int n = 9;n < 13;n++)
|
|
{
|
|
HoldReg[n] = 0;
|
|
}
|
|
CoilState[0] = CoilState[0] & 0xFE;
|
|
}
|
|
}
|
|
|
|
|
|
|