发表于:2005-03-24 14:43:00
楼主
我用74ls244。74ls373进行io管脚扩展IO0-IO7作为数据通信,IO8-IO10通过74LS138做片选,程序如下:
///////////////DI TEST PROGRAMS////////////////
#pragma num_alias_table_entries 11
//Network variables declarations
network output SNVT_switch nvoDIValue[8];
network input SNVT_switch nviDOValue[8];
//timer declaration
stimer repeating maxreceT;
//I/O object declarations
IO_0 input byte in_DI;
IO_0 output byte in_DO;
IO_8 output bit A;
IO_9 output bit B;
IO_10 output bit C;
/////////////////////TASK///////////////////////
//Reset
when(reset)
{
maxreceT=1;
io_out(A,0);
io_out(B,0);
io_out(C,0);
}
///////////DI TEST/////////////////
when(timer_expires(maxreceT))
{ int i;
io_out(A,1);
io_out(B,0);
io_out(C,1);
for(i=0;i<8;i++){
int j;
j=io_in(in_DI);
nvoTemp[0]=j;
nvoDIValue[i].state=(j&1);
j>>=1;
};
io_out(A,0);
io_out(B,0);
io_out(C,0);
}
/////////DO TEST////////
when (nv_update_occurs(nviDOValue))
{
int i;
io_out(A,1);
io_out(B,1);
io_out(C,1);
for(i=0;i<8;i++){
j=nviDOValue[i].state*(2^i)+j;
}
io_out(in_DO,i);
io_out(A,0);
io_out(B,0);
io_out(C,0);
}
程序中分别定义input和output时调试正确,但是如果程序中同时定义IO_0 input byte in_DI;IO_0 output byte in_DO;就不行了,输入的前4个管脚不能接收数据,其显示数据和输出相同!本人初次搞这个东东,求大虾赐教!!!!(急)