2

我最近开始使用 pic 微控制器,而且我在 PIC16F877A 系列上没有遇到太多麻烦。但我发现 PIC16F88 真的很麻烦。我不知道它是否已经是一个有问题的IC(我刚买了它),但是在我写了下面的程序希望让led闪烁之后,IC的所有引脚都产生了高输出。我正在使用 mikroC 编写程序并使用 pickit 3 对设备进行编程。

void main() {

   ANSEL = 0;
   TRISA = 0;           

  do {
    PORTA = 0x00;     
    Delay_ms(1000);    
    PORTA = 0xFF;       
    Delay_ms(1000);    
  } while(1);          
}

从代码中可以理解,连接到 PORT A 的 LED 应该闪烁,而 PORT B 不应该产生和熄灭。是否存在使微控制器的所有引脚都变高的特定场景或错误?

4

1 回答 1

0

当你写

PORTA = 0xFF; 

您实际上打开了 PortA 的所有引脚。一个端口通常是芯片上一组 8 个(或更少)单独的引脚。如果您只想打开端口中的一个引脚,则需要指定哪个引脚。有许多不同的方法可以做到这一点。假设您想打开 PortA 引脚 3。以下是实现此目的的几种方法:

PORTA.B3 = 1;
PORTA = 0x4; //Hex
PORTA = 0b00000100;  //Binary
PORTA = 4; //Decimal

上述每个语句都会打开 PortA 引脚 3,其余的则关闭。我个人更喜欢这种PORTA.B3方法,因为它允许端口上的其他引脚保持不变。

说了这么多,您是说执行时芯片上的所有PORTA = 0xFF引脚都变高了吗?根据数据表,您应该只看到引脚 17、18、1、2、3、4、15 和 16 开启。其余的应该保持不变。如果您看到它们都变高,那么我会尝试使用不同的芯片以确保第一个没有故障。我总是大量购买这些芯片,因为它们很便宜。

于 2013-07-22T11:53:47.783 回答