CSDN=>FAQ=>FAQ 展示
  • 问题内容:利用Keil C51循环读入P1.0到P1.7的串行数据
  • 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=4946059
  • 所属论坛:单片机/工控     审核组:硬件/嵌入开发
  • 提问者:suncyxy     解决者:lbing7
  • 感谢:FirerFirerFirer icesnows tyj_3 lbing7 icesnows gniyliu gniyliu flowercity toofree
  • 关键字:硬件/嵌入开发 单片机 个位 循环 寻址 var 单片机/工控 时序 bitpos
  • 答案:

    我现在利用Keil C51来进行单片机系统的开发,需要循环读入P1.0到P1.7的串行数据,但是不能定义位数组和位指针,我就想利用读入P1口的所有数据,再屏蔽掉无关位的办法来读取有效位的串行数据,不知可行否?(我试了一下,没有成功,不知是什么原因?)还有没有其他的解决办法?
    ---------------------------------------------------------------

    这样读法应该没错,不过你的循环速度要够快,不快的话会丢数据。你也可以考虑用中断去读。
    ---------------------------------------------------------------

    P1.0到P1.7的串行数据?怎么个时序啊?
    ---------------------------------------------------------------


    P1口可以位寻址的哈!!!
    ---------------------------------------------------------------


    #define SET_BIT(var,bitPos) ( var|=(1<<bitPos) )
    #define GET_BIT(var,bitPos) ( var&(1<<bitPos) )
    #define CLR_BIT(var,bitPos) ( var&=(0xff-(1<<bitPos)) )

    你定义一个unsigned char,利用上面的GET_BIT宏就可以读每个位啦,用SET_BIT和CLR_BIT宏进行置位或者清零。

    甚至你可以用P0直接读写,都没有问题

    ---------------------------------------------------------------

    甚至你可以用P1直接读写,都没有问题
    ---------------------------------------------------------------

    绝对可以

    你的问题是,P1口又读又写了

    读之前送1。

    我以前就做过串出串入操作

  • 评价: 有价值 给朵鲜花(0) 无价值 扔个鸡蛋(0)
相关FAQ
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo