PIC16F648A编程 - 某些功能不起作用

时间:2014-07-30 20:03:28

标签: c pic microprocessors

我在成功进行PIC编程工作时遇到了问题。由于我是pic编程的新手,我开始逐一点亮8段显示器LED。一切顺利,除了 RB4输出LED没有点亮(它没有坏掉,因为我用5v电阻检查了它)。我认为这是一个问题,但不是那么重要,所以我继续。下一个目标是在使用代码进行stratup后立即点亮所有显示段:

#include <htc.h>
void main()
{
  TRISB=0X00;
  PORTB=0X00;
  TRISA = 1;
  while(1)
  {
  PORTB=0XFF;
  }
}


这不成功 - 只有2段在启动时点亮然后立即消失然后没有LED点亮。

在那个问题之后我更进一步 - 我想在按下开关时打开输出(高输入)而另一次不成功。 RB7 LED一直亮着。开关按下没有做任何事情。代码:

#include <htc.h>
void main()
{
  TRISB=0X00;
  PORTB=0X00;
  TRISA = 1;
  while(1)
  {
      if (RA4 == 1)  //Even tried TRISA4 ==1  //RB0 Dont light up, RB7 do light up all the time
      {
          RB0 = 1;
      }
      else
      {
          RB7 = 1;
      }
  }
}


  

有人可以告诉我为什么会遇到这些问题吗?任何解决方案?


顺便说一下 - 保险丝是:WDT OFF, BODEN ON, MCLRE OFF, Code protect OFF, PWRTE OFF, LVP ON, CPD OFF
我正在使用K150 PIC编程器


1:PIC pins
2:Circuit

2 个答案:

答案 0 :(得分:0)

我不知道第一个片段发生了什么。第二个失败是因为

TRISA = 1

仅将RA0设置为输入。其余的A引脚(包括RA4)仍然输出。你需要像

这样的东西
TRISA = 0x10;

答案 1 :(得分:0)

RB4受LVP影响。在“CONFIG - CONFIGURATION WORD REGISTER”中:

  

LVP:低电压编程使能位

     
    

1 = RB4 / PGM引脚具有PGM功能,启用低电压编程     0 = RB4 / PGM是数字I / O,MCLR上的HV必须用于编程

  

我猜是为什么RB4没有点亮。

阅读RA4,显然你需要设置TRISA4。虽然我认为它处于加电状态。 RA4的全称是RA4 / T0CKI / CMP2。上电时,OPTION寄存器的T0CS位为1,即:

  

T0CS:TMR0时钟源选择位

     
    

1 = RA4 / T0CKI / CMP2引脚上的转换
    0 =内部指令周期时钟(CLKOUT)

  

所以清除可能有所帮助。

比较器的东西似乎在CMCON寄存器全部为零时唤醒,这使得CM2 = CM1 = CM0 = 0,这是“复位”。我不清楚这对RA4有何影响。但是可能值得将比较器设置为“关闭”,即CM2 = CM1 = CM0 = 1.

就你所看到的其他影响而言,我不知道:-(看看代码的小片段编译到什么地方会很有趣。