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 включенными. Остальное должно остаться без изменений. Если вы видите, что все они идут высоко, я бы попробовал другой чип, чтобы убедиться, что первый не неисправен. Я всегда покупаю эти чипсы оптом, потому что они такие дешевые.