入门PIC16F877A简单程序,各位前辈请指教一下,搞了好久了

2020-02-09 09:22发布

#include<pic.h>
woid main()
{
  TRISA=0;//A口为输出口
  while(1)
  {
   RA0=1;   //输出高电平
   RA1=1;
   RA2=1;
   RA3=1;
   RA4=1;
   RA4=1;
   }
}

上面程序很奇快,在proteus上仿真时,A口有时显示1,有时显示0;如果写为下面程序就都输出1了。
#include<pic.h>
woid main()
{
  TRISA=0;//A口为输出口
  while(1)
  {
  PORTA=0XFF;
   }
}
各位前辈,多多指教!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
ataol
1楼-- · 2020-02-09 12:10
可能仿真软件没有那么可靠;在写程序时建议应该初始化好I/O口。然后再让其端口做相应的动作。
youjingya
2楼-- · 2020-02-09 15:53
 精彩回答 2  元偷偷看……
zhq448
3楼-- · 2020-02-09 16:40
A口要初始化的
void init()      //I/O口初始化函数
{
    ADCON1=7;              //设置A口为普通I/O口
    TRISA=0;               //设置A口为输出
    TRISD=0;               //设置D口为输出
    TRISC=0;            //C口为输出。
    TRISB=0XFF;
    OPTION=3;              //设置TMROD        定时器为1/16
    PORTD=0;                       
    PORTB=0XF0;             //B口高入低出   上拉电阻有效
    INTCON=0XA0;           //开放全局。TMR0,B口中断。
    TMR0=0XE;              //启动TMR0
    PORTC=0XFF;
    PORTA=0XFF;
    VA=1;  
   z=1;
}
millwood0
4楼-- · 2020-02-09 19:30
"各位前辈,多多指教!! "

you need to read the datasheet section on IO Port. and understand it.
youjingya
5楼-- · 2020-02-09 23:44
回复【3楼】zhq448
-----------------------------------------------------------------------

把你的初始化程序添加到我的程序里,在proteus里仿真时为什么还是一样呢?求助
youjingya
6楼-- · 2020-02-10 02:01
回复【3楼】zhq448
-----------------------------------------------------------------------

可以了,谢谢了,就是初始化的原因,不过还是一点不解为什么用
#include<pic.h>
woid main()
{
  TRISA=0;//A口为输出口
  while(1)
  {
  PORTA=0XFF;
   }
}
没有初始化就可以了?

一周热门 更多>