打印
[PIC®/AVR®/dsPIC®产品]

关于PIC,IO口取反的问题。。百思不得其解~

[复制链接]
5001|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yyd2630xyq|  楼主 | 2014-6-23 11:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void main(void)
{  
    ANS0 = 0;
    TRISIO0 = 0;       //设置GP0输出
   
    GP0 = 0;
    __delay_ms(500);
    GP0 = 1;
    __delay_ms(500);
    while(1)
    {               
        GP0 = !GP0;
                __delay_ms(500);
    }
}
这是我的测试代码,芯片是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 赞一个!
5
兰天白云| | 2014-6-25 11:43 | 只看该作者
读-改-写出现错误,一般与硬件有关,楼主的硬件设计如果不错也肯定不够合理

使用特权

评论回复
6
ayb_ice| | 2014-6-26 09:18 | 只看该作者
PIC蛋的地方就是,永远是读IO状态,没有读寄存器

使用特权

评论回复
7
yewuyi| | 2014-6-26 12:37 | 只看该作者
ayb_ice 发表于 2014-6-26 09:18
PIC蛋的地方就是,永远是读IO状态,没有读寄存器

老的芯片就那样,新的芯片都有这个寄存器了.

使用特权

评论回复
8
zhaozhij316| | 2014-7-16 22:39 | 只看该作者
学习了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝