[PIC®/AVR®/dsPIC®产品] 奇怪的IO

[复制链接]
1935|7
 楼主| 海川先生 发表于 2014-5-13 14:23 | 显示全部楼层 |阅读模式
RB6 = dat[1]?1:0;
RB4 = dat[2]?1:0;
烧到板子里
1这两句话同时只有一个能实现;
2注释掉其中一个,另外一个就OK;
3如果两句中间延时500ms 两句都能实现;
4在protues中仿真一切正常;
用的是PIC16F690  PICC 9.83 的编译器;
怎么解释这个现象呢? 这两个IO通过三极管控制继电器,我判断跟硬件电路没关系;
yklstudent 发表于 2014-5-13 15:42 | 显示全部楼层
read->write
小鱼儿1045 发表于 2014-5-13 16:01 | 显示全部楼层
外面有没有接电容什么的啊?
yewuyi 发表于 2014-5-13 16:31 | 显示全部楼层
IO口读-修改-写 。

在没有单独的IO输出缓冲寄存器的型号中,尽量不要位操作,如果一定要搞位操作,从代码可靠性的角度出发,应当自己定义一个无符号变量,然后把这个变量整体赋值给IO口寄存器。

例如:uchar PORTAbuf=0;
PORTA=PORTAbuf;

在需要操作PORTA某一个位时,可以对PORTAbuf操作,然后整体赋值过去。

如果对于增强型的PIC16来说,例如后来的PIC16F1XXX等型号,则芯片多了LATA寄存器,直接操作它即可。
 楼主| 海川先生 发表于 2014-5-15 21:20 | 显示全部楼层
yewuyi 发表于 2014-5-13 16:31
IO口读-修改-写 。

在没有单独的IO输出缓冲寄存器的型号中,尽量不要位操作,如果一定要搞位操作,从代码 ...

谢谢斑竹指点
 楼主| 海川先生 发表于 2014-5-15 21:22 | 显示全部楼层
yewuyi 发表于 2014-5-13 16:31
IO口读-修改-写 。

在没有单独的IO输出缓冲寄存器的型号中,尽量不要位操作,如果一定要搞位操作,从代码 ...

比如A 端口 有输入管脚 也有输出管脚 对A端口整体赋值会影响到输入管脚吗?
zxlabc 发表于 2014-5-16 08:09 | 显示全部楼层
編譯器優化了不?
yewuyi 发表于 2014-5-16 08:20 | 显示全部楼层
海川先生 发表于 2014-5-15 21:22
比如A 端口 有输入管脚 也有输出管脚 对A端口整体赋值会影响到输入管脚吗? ...

在设置为输入态时,不管输出是1还是0,均不会影响输入状态的读取。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

200

帖子

1

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