val-off-little/board/digital.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;
}
}