IO口定义成一个变量

2019-07-16 02:33发布

追问
#include <pic.h>
#define x  RA0
void main()
{
uchar unsigned y,w;
w=0;  
while(1)
{  
x=w;  //此时RA0输出状态为0   
y=1;  
if(y==1)  
  {   
w=1;     //此时RA0输出状态出错   
}
}
}我是一个初学者,可能对单片机还有很多不理解,上面程序中为什么当W=1时,RA0口的输出状态不是为1,是不是单片机不能这么操作,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
zhlndsq-484
1楼-- · 2019-07-16 08:01
hobbye501
2楼-- · 2019-07-16 13:24
PIC 的单片机的IO口的寄存器和51的不一样,它在用的时候要想定义IO口的方向,就是说 是做输入用 还是输出用 然后才能去想51那样的   你这个明显没有定义IO口的方向
wangwenzhao0052
3楼-- · 2019-07-16 14:22
hobbye501 发表于 2013-2-1 20:30
PIC 的单片机的IO口的寄存器和51的不一样,它在用的时候要想定义IO口的方向,就是说 是做输入用 还是输出用 ...

#include <pic.h>
#define x  RA0
void main()
{
uchar unsigned y,w;
    TRISA=0x00;      
    PORTA=0x00;  
    ANSELH=0x00;
    ANSEL=0x00;
    w=0;  
while(1)
{  
x=w;  //此时RA0输出状态为0   
y=1;  
if(y==1)  
  {   
   w=1;     //此时RA0输出状态出错   
}
}
}
前面的方向寄存器是我写漏了,其实此贴我最想问的就是在单片机C语言W能不能这样赋值,为什么最后W=1时RA0输出状态出错,前面x=w; 时RA0输出状态为0 又是对的,
popeye0451
4楼-- · 2019-07-16 15:57
本帖最后由 popeye0451 于 2013-2-2 10:32 编辑
wangwenzhao0052 发表于 2013-2-2 08:53
#include
#define x  RA0
void main()

你检测管脚状态时,是单步调试检测的吧,当执行完w=1后,程序循环再执行x=w后,你检测还是零吗?
wangwenzhao0052
5楼-- · 2019-07-16 19:17
 精彩回答 2  元偷偷看……
popeye0451
6楼-- · 2019-07-16 23:05
wangwenzhao0052 发表于 2013-2-2 11:28
对呀,我昨天试了好久,好像W=1;虽然能执行,但不能把值送到RA0,是不是不能这样赋值,
...

没用过PIC,不过为什么要这句#define x  RA0

你如果直接用RA0=w呢?

一周热门 更多>