独闷闷网

 找回密码
 立即注册
搜索
查看: 2942|回复: 0
打印 上一主题 下一主题
收起左侧

[原创] 如何用任意散乱的8个IO口合并成一个并口,可以读取或者输出8位数据?已解答。

[复制链接]
跳转到指定楼层
楼主
发表于 2015-9-12 08:43:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
问:
如何用任意散乱的8个IO口合并成一个并口,可以读取或者输出8位数据?

★坚鸿-深圳:
其实也可以用联合结构体来做,但是对于初学者可能不好理解,所以下面直接用简单通俗的写法来举例子:
  1. #include "REG52.H"


  2. //任意IO口
  3. sbit IO_0=P2^3;
  4. sbit IO_1=P0^0;
  5. sbit IO_2=P1^2;
  6. sbit IO_3=P3^5;
  7. sbit IO_4=P2^4;
  8. sbit IO_5=P0^2;
  9. sbit IO_6=P1^3;
  10. sbit IO_7=P3^7;



  11. void bus_out(unsigned char u8BusData); //并口输出一个字节8位数据

  12. unsigned char get_bus(void); //读取IO总线

  13. unsigned char Gu8Test;

  14. void main()
  15. {
  16. bus_out(0x55); //并口输出0x55数据.
  17. Gu8Test=get_bus(); //读取IO总线

  18. while(1);
  19. }


  20. void bus_out(unsigned char u8BusData) //并口输出一个字节8位数据
  21. {

  22. IO_0=u8BusData&0x01;
  23. IO_1=(u8BusData>>1)&0x01;
  24. IO_2=(u8BusData>>2)&0x01;
  25. IO_3=(u8BusData>>3)&0x01;
  26. IO_4=(u8BusData>>4)&0x01;
  27. IO_5=(u8BusData>>5)&0x01;
  28. IO_6=(u8BusData>>6)&0x01;
  29. IO_7=(u8BusData>>7)&0x01;

  30. }



  31. unsigned char get_bus(void) //读取IO总线
  32. {
  33. unsigned char u8GetData;
  34. IO_0=1; //51单片机在读取数据前先置1,其它非准IO口的单片机可以不用
  35. IO_1=1; //51单片机在读取数据前先置1,其它非准IO口的单片机可以不用
  36. IO_2=1; //51单片机在读取数据前先置1,其它非准IO口的单片机可以不用
  37. IO_3=1; //51单片机在读取数据前先置1,其它非准IO口的单片机可以不用
  38. IO_4=1; //51单片机在读取数据前先置1,其它非准IO口的单片机可以不用
  39. IO_5=1; //51单片机在读取数据前先置1,其它非准IO口的单片机可以不用
  40. IO_6=1; //51单片机在读取数据前先置1,其它非准IO口的单片机可以不用
  41. IO_7=1; //51单片机在读取数据前先置1,其它非准IO口的单片机可以不用


  42. u8GetData=u8GetData|IO_7;
  43. u8GetData=u8GetData<<1;

  44. u8GetData=u8GetData|IO_6;
  45. u8GetData=u8GetData<<1;


  46. u8GetData=u8GetData|IO_5;
  47. u8GetData=u8GetData<<1;


  48. u8GetData=u8GetData|IO_4;
  49. u8GetData=u8GetData<<1;


  50. u8GetData=u8GetData|IO_3;
  51. u8GetData=u8GetData<<1;


  52. u8GetData=u8GetData|IO_2;
  53. u8GetData=u8GetData<<1;


  54. u8GetData=u8GetData|IO_1;
  55. u8GetData=u8GetData<<1;


  56. u8GetData=u8GetData|IO_0;

  57. return u8GetData;
  58. }
复制代码


乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-5-7 08:51 , Processed in 0.149142 second(s), 17 queries .

快速回复 返回顶部 返回列表