[讨论] 一个很简单的程序,怎么结果不对呢?

ieewxg   2014-2-19 16:56 楼主
#include

main()
{  
   int i=0;
   TRISA=1;
   TRISC=0;
   
   while(1)           
  {

        if (RA4==1&&RA5==0)
        {
                PORTC=0x01;
        }
    else if (RA4==0&&RA5==1)
        {
                PORTC=0x02;
        }
        else
        {
                PORTC=0x00;
        }                  
  }
}

用protues仿真,结果是当RA4=1且RA5=0时,POTRC的输出结果是0x00,应该是0x01才对。

回复评论 (7)

  1. #include <pic.h>

  2. main()
  3. {  
  4.    int i=0;
  5.    TRISA=1;
  6.    TRISC=0;
  7.    
  8.    while(1)           
  9.   {

  10.         if (RA4==1&&RA5==0)
  11.         {
  12.                 PORTC=0x01;
  13.         }
  14.     else
  15.      { if (RA4==0&&RA5==1)
  16.         {
  17.                 PORTC=0x02;
  18.         }
  19.         else
  20.         {
  21.                 PORTC=0x00;
  22.         }   
  23.      }               
  24.   }
  25. }



点赞  2014-2-19 17:13
哪个型号,你有设置管脚模拟量还是数字量 设置ANSELA寄存器,模拟模式的话读为0 本帖最后由 眼大5子 于 2014-2-19 17:28 编辑
科技改变生活
点赞  2014-2-19 17:27

谢谢,不过还是不对呀
点赞  2014-2-19 17:31
引用: 眼大5子 发表于 2014-2-19 17:27
哪个型号,你有设置管脚模拟量还是数字量 设置ANSELA寄存器,模拟模式的话读为0

PIC16F785,我试试
点赞  2014-2-19 17:34
引用: 眼大5子 发表于 2014-2-19 17:27
哪个型号,你有设置管脚模拟量还是数字量 设置ANSELA寄存器,模拟模式的话读为0

没错,加了句ANSEL=0x00就对了,十分感谢
点赞  2014-2-19 17:45
路过学习~
点赞  2014-2-19 20:56
引用: ieewxg 发表于 2014-2-19 17:45
没错,加了句ANSEL=0x00就对了,十分感谢

解决了就好,
科技改变生活
点赞  2014-2-20 12:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复