查看: 2240|回复: 2

[其他] 每天解决一个问题20:如何用任意散乱的8个IO组成一个并口

[复制链接]
  • TA的每日心情
    郁闷
    2021-3-10 19:44
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    126

    主题

    525

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2018
    最后登录
    2023-12-25
    发表于 2015-9-13 11:34:35 | 显示全部楼层 |阅读模式
    问:
    如何用任意散乱的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. }
    复制代码


    我知道答案 目前已有2人回答
    很开心
    回复

    使用道具 举报

    该用户从未签到

    61

    主题

    965

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2394
    最后登录
    1970-1-1
    发表于 2015-9-13 15:10:59 | 显示全部楼层
    顶               
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-13 23:39:07 | 显示全部楼层
    学习了,谢谢分享
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 01:59 , Processed in 0.091064 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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