PIC16F88 все контакты Высокий

Недавно я начал работать с микроконтроллерами Pic, и у меня не было особых проблем с серией PIC16F877A. Но я нашел PIC16F88 действительно хлопотно. Я не знаю, является ли это уже неисправной микросхемой (я только что купил ее), но после того, как я написал следующую программу с надеждой на мигание светодиода, все выводы микросхемы выдают высокую отдачу. Я использую mikroC для написания программы и pickit 3 для программирования устройства.

void main() {

   ANSEL = 0;
   TRISA = 0;           

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

Как можно понять из кода, светодиод, подключенный к ПОРТУ A, должен мигать, а ПОРТ B не должен выдавать и гаснуть. Есть ли особый сценарий или ошибка, которая делает все выводы микроконтроллера высокими?

1 ответ

Когда ты пишешь

PORTA = 0xFF; 

По сути, вы включаете все контакты для PortA. Порт обычно представляет собой набор из 8 (или менее) отдельных выводов на чипе. Если вы хотите включить только один из выводов в порту, вам нужно указать, какой именно. Есть несколько разных способов сделать это. Допустим, вы хотели включить вывод PortA 3. Вот несколько способов сделать это:

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

Каждое из приведенных выше утверждений будет включать 3-й контакт PortA, а остальные отключать. Я лично предпочитаю PORTA.B3 метод, поскольку он позволяет другим контактам на порту оставаться неизменными.

Сказав все это, вы говорите, что все контакты на вашем чипе становятся высокими, когда вы выполняете PORTA = 0xFF? Согласно данным таблицы, вы должны видеть только контакты 17, 18, 1, 2, 3, 4, 15 и 16 включенными. Остальное должно остаться без изменений. Если вы видите, что все они идут высоко, я бы попробовал другой чип, чтобы убедиться, что первый не неисправен. Я всегда покупаю эти чипсы оптом, потому что они такие дешевые.

Другие вопросы по тегам