发表于:2007-05-16 08:40:00
220楼
void Do_Output(void)
{
u_short i,do_out;
for(i=0;i<DO_NUM;i++)
{
do_out=read_coil(Do_Define[i].reg_adr,REG_MODBUS);
if(i<8)
{
IO_Output(&Do_Define[DO_NUM+1].pio,0);//PB16置低,第二个373锁存器禁止输入
IO_Output(&Do_Define[DO_NUM].pio,1);//PB14置高,第一个373锁存器有效输入。
IO_Output(&Do_Define[i].pio,do_out);
}
else
{
IO_Output(&Do_Define[DO_NUM].pio,0);//第一个373锁存器禁止输入
IO_Output(&Do_Define[DO_NUM+1].pio,0);//第二个373锁存器有效输入。
IO_Output(&Do_Define[i].pio,do_out);
}
}
IO_Output(&Do_Define[DO_NUM+1].pio,0);//第二个373锁存器禁止输入
IO_Output(&Do_Define[DO_NUM].pio,0);//第一个373锁存器禁止输入。
}
楼主,上面是我的DO部分的驱动程序。但是我的怎么只有1-8路有输出,8-16路输出不对呢?从寄存器置值,相应的输出端子没有反应阿。请赐教。