微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > IO口定义成一个变量

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,是不是单片机不能这么操作,

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呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top