为什么这个PIC代码不会点亮我的LED?

以下代码不会将我的PIC18F14K50上的任何引脚设置为高电平,但它不会更简单!

#include  #include  void main(void) { // Set ALL pins to output: TRISA = 0; TRISB = 0; TRISC = 0; // Set ALL pins to high: LATA = 0b11111111; LATB = 0b11111111; LATC = 0b11111111; // Leave pins high and wait forever: while (1); } 

我正在使用MPLAB v8.43和Hi-Tech ANSI C编译器。

除VUSB和MCLR外,逻辑探头不会显示高电平引脚。

有任何想法吗?

至少一些引脚可以配置为模拟输入。

来自此设备的数据表

通过将ANSEL寄存器中的ANS3位置1(上电复位后的默认设置)来选择RA4引脚作为模拟信号的操作。

如果未设置ANSEL寄存器,则该引脚不能用作输出,因为它被配置为模拟输入。

这适用于所有可能是A / D输入的引脚,它们不会覆盖您拥有的所有引脚。

然后我再次在代码中看不到任何配置位设置。 该设备例如具有2个不同的指令集,您必须至少指定您在配置位中使用的指令集。

您可以尝试在包含之后将其添加到代码顶部:

 // Configuration BITS setup __CONFIG(1, FOSC_INTIO2 & XINST_OFF); __CONFIG(2, WDTEN_OFF & PWRTEN_ON); __CONFIG(3, MCLRE_OFF); 

我想你没有配置MCPU振荡器,试着定义:

 ; Oscillator: config FOSC = INTIO2 ;Internal RC oscillator ; ; PLL x4 Enable bit: config PLLCFG = OFF 

 ;Define oscillator frequency ;{ movlw b'01100000' movwf OSCCON movlw b'01000000' movwf OSCTUNE ;}; 

此指令适用于MPLAB asm而不适用于Hi-Tech,但文件寄存器应具有相同的名称。