新手紧急求助:IO管教定义问题(大虾请进) 点击:945 | 回复:4



梦游

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 6回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2004年8月01日
发表于: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个管脚不能接收数据,其显示数据和输出相同!本人初次搞这个东东,求大虾赐教!!!!(急)



梦游

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 6回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2004年8月01日
发表于:2005-03-25 15:22:00
1楼
怎么没人回啊!! 我很急啊 !!大虾快来吧!!

柠檬

  • 精华:1帖
  • 求助:0帖
  • 帖子:12帖 | 29回
  • 年度积分:0
  • 历史总积分:131
  • 注册:2004年9月01日
发表于:2005-03-28 15:20:00
2楼
同时定义IO_0 input byte in_DI;IO_0 output byte in_DO应该是没什么问题的。在做输入和输出之间切换时,需要设定IO的方向,你的程序中好像没有~~ 不知是不是这个原因。

梦游

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 6回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2004年8月01日
发表于:2005-05-03 14:39:00
3楼
哦,的确是那个原因!!!问题解决了!!谢谢!!

shanshan

  • 精华:1帖
  • 求助:0帖
  • 帖子:23帖 | 150回
  • 年度积分:0
  • 历史总积分:453
  • 注册:2004年1月12日
发表于:2005-05-03 18:12:00
4楼
请问梦游: 你上面作的是什么系统的实验?可以把你的电路图给我吗?还有程序!我想作为学习的例子!!请给与帮助!!

热门招聘
相关主题

官方公众号

智造工程师