void Read1B597(void)
{
INT8U i;
INT8U alm=0,gb=0,gl=0;
RCLK597_Disable();
nSRCLR597_Enable(); //不清寄存器
nSRSLOAD597_Disable();
RCLK597_Enable(); //RCK上升沿锁存输入数据
nSRSLOAD597_Enable();
for(i=0; i<8; i++)//串行读入各告警数据
{
alm <<= 1;
if(ALMIO())
{
alm = alm | 0x01;
}
gb <<= 1;
if(GBIO())
{
gb = gb | 0x01;
}
gl <<= 1;
if(GLIO())
{
gl = gl | 0x01;
}
SRCLK597_Disable();
SRCLK597_Enable();//时钟上升沿移位数据
}
ALMERR = alm;
GBERR = gb;
GLERR = gl;
}
需要注意的是时钟上升沿的位置!