我在成功进行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编程器
答案 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.
就你所看到的其他影响而言,我不知道:-(看看代码的小片段编译到什么地方会很有趣。