[PIC®/AVR®/dsPIC®产品] 关于PIC,IO口取反的问题。。百思不得其解~

[复制链接]
5402|7
 楼主| yyd2630xyq 发表于 2014-6-23 11:07 | 显示全部楼层 |阅读模式
  1. void main(void)
  2. {  
  3.     ANS0 = 0;
  4.     TRISIO0 = 0;       //设置GP0输出
  5.    
  6.     GP0 = 0;
  7.     __delay_ms(500);
  8.     GP0 = 1;
  9.     __delay_ms(500);
  10.     while(1)
  11.     {               
  12.         GP0 = !GP0;
  13.                 __delay_ms(500);
  14.     }
  15. }
这是我的测试代码,芯片是PIC12F675,现在的疑问就是GPIO口无法通过位变量的方式取反,单独控制是没有问题的,我看了网上说可能是读改写的问题,请大神明示。。。
lanmp 发表于 2014-6-23 12:03 | 显示全部楼层
bit变量不能运算吧
yklstudent 发表于 2014-6-23 12:21 | 显示全部楼层
看看编译后的汇编代码就可以知道原因了
yewuyi 发表于 2014-6-23 12:28 | 显示全部楼层
1、PIC位取反应该是~把!
2、另外,PIC12F675没有LATx寄存器,所以不恰当的IO处理可能会产生读-修改-写现象,从代码移植和防止出错等角度出发,一般都是设置一个变量作为该IO口的映射,操作这个变量,然后把这个变量整体赋值给IO口寄存器。

评分

参与人数 1威望 +2 收起 理由
shuiketu + 2 赞一个!

查看全部评分

兰天白云 发表于 2014-6-25 11:43 | 显示全部楼层
读-改-写出现错误,一般与硬件有关,楼主的硬件设计如果不错也肯定不够合理
ayb_ice 发表于 2014-6-26 09:18 | 显示全部楼层
PIC蛋的地方就是,永远是读IO状态,没有读寄存器
yewuyi 发表于 2014-6-26 12:37 | 显示全部楼层
ayb_ice 发表于 2014-6-26 09:18
PIC蛋的地方就是,永远是读IO状态,没有读寄存器

老的芯片就那样,新的芯片都有这个寄存器了.
zhaozhij316 发表于 2014-7-16 22:39 | 显示全部楼层
学习了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部