打印

pic单片机端口的读修改写问题

[复制链接]
3025|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bobo1957|  楼主 | 2008-7-27 01:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己做了块板子,用IO口模拟I2C通信,实现方式是端口外接上拉电阻,输出寄存器设置为零,然后改变方向寄存器实现0和1的转换,设置为输出则为0,输出设置为1,在上拉电阻作用下将端口拉高,端口其他IO口做控制用,在做I2C通信时候发现I2C总线输出0时结果输出总是为高,用示波器观察最后发现问题是,输出寄存器设置成0后,在写端口其它IO口的时候,是将整个端口值都会来,然后修改写的一位,整个端口写一遍,由于I2C的IO口有上拉电阻,每次读回来的值都是1,写整个端口的时候就把输出寄存器的值改写成1了,导致输出不能为零的问题。解决办法是,设置端口的影子寄存器,每次要修改端口任意IO口值时,都是先修改影子寄存器的相应位,然后再用影子寄存器的值写整个端口,问题得到解决。通过这次问题的解决,对端口的读-修改-写有了更深的认识。
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

248

帖子

0

粉丝