IO口定义成一个变量
时间:10-02
整理:3721RD
点击:
追问
#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,是不是单片机不能这么操作,
#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,是不是单片机不能这么操作,
PIC 的单片机的IO口的寄存器和51的不一样,它在用的时候要想定义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 又是对的,
你检测管脚状态时,是单步调试检测的吧,当执行完w=1后,程序循环再执行x=w后,你检测还是零吗?
对呀,我昨天试了好久,好像W=1;虽然能执行,但不能把值送到RA0,是不是不能这样赋值,
没用过PIC,不过为什么要这句#define x RA0
你如果直接用RA0=w呢?