Обучение : Программирование на Си для PIC


Программа №2. «Продолжение рыбы». Именование портов и линий

Ну что за шутки, скажете вы, прочитав этот заголовок. На самом деле от вас требуется еще немного терпения, чтобы сделать первый практический шаг. Я не стал напрягать вас раньше времени, иначе в вашей голове были бы каша, мёд, гавно и пчелы. Чтобы этого избежать, требуется системность изложения.

 

Создайте проект «test2» и поместите в него программу ниже.

 

#include <pic.h>

//pic16f628a

/* тестовая программа № 2 из самомучителя*/

 

__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);

#define knopka RB4 //
кнопка
#define diod   RA0 // светодиод

void podgot (void); // подготовка МК

void main (void)
{
podgot();

diod = knopka;

}

// === подготовка МК
void podgot (void)
{

TRISA = 0b00000000; // направление работы ножек порта А

TRISB = 0b00010000; // направление работы ножек порта В

CMCON = 0x07; // отключение компараторов

PORTA = 0; // очищаем порт А

PORTB = 0; // очищаем порт Б

RBPU = 0;  // подтягивающие R (0-вкл, 1-выкл)

}

 

Рассмотрим этот текст. Мы подключили заголовочный файл и сконфигурировали МК. Я обычно в самом верху добавляю комментарий о том, под какой кристалл «заточена» конфигурация и проект; при желании пишу еще несколько слов о программе, чтобы потом не чесать репу.

 

#define knopka RB4 // кнопка

#define diod   RA0 // светодиод

 

Каждая из этих строчек дает компилятору указание, что под одной фразой должна пониматься другая фраза. Например, если в тексте программы будет встречена фраза knopka , то это он должен понимать как RB4. Или если в тексте встретится фраза diod , то это RA4.

 

Мы ранее говорили, что RAх и RBх это цифровые линии МК. Под «х» (икс) понимается порядковый номер цифровой линии в МК. Порядковый номер может быть от 0 до 7, т.е. восемь бит. Ножки как и у любого DIP-корпуса микросхемы нумеруются против часовой стрелки, начиная от ключа, если смотреть на корпус сверху (со стороны маркировки). Для чего я говорю очевидные вещи? Будьте внимательны, номера ножек и номера цифровых линий портов разные понятия. Соответствующей цифровой линии порта соответствует определенная физическая ножка. Давайте рассмотрим рисунок со стр. 3 даташита.

 

 

Как видим RB4 соответствует вывод 10, а RA0 – 17й вывод. Так или иначе, по контексту вы будете понимать о чем идет речь – о номере электрического вывода или об имени цифровой линии.

 

На картинке вывод 5 – это минусовая линия питания Vss. Вывод 14 – плюсовая линия питания Vdd. Питаемся мы стабилизированным напряжением 5 вольт, для чего достаточно интегрального стабилизатора 78L05 с обвязкой с двух сторон по 10 мкф (кто не в теме по 78L05 и аналогичных стабилизаторах, по-быстрому читаем документацию нашего сайта).

 

Также на картинке  видим разнонаправленные, стрелки которые нам говорят о том, как может работать ножка – на вход/на выход (понятно, что линии питания только на вход, т.е. входящие сигналы). Большая часть ножек работает и на вход и на выход. RA5 в данном кристалле работает только на вход.

 

Кроме RAx и RBx мы видим и другие обозначения через дробь. Это информация о выводах встроенных аппаратных модулей и специальных выводах, обеспечивающих определенные режимы работы МК. На данном этапе обучения нас интересуют только RAx и RBx.

 

Полагаю, что вы уже получили первичные сведения о цифровых линиях на портах из даташита со стр. 27. Давайте кратко повторим.

 

– цифровые линии МК сгруппированы в так называемые порты;

– порты именуются буквами латинского алфавита (порт А, порт В и т.д.)

– каждый порт имеет до 8 цифровых линий;

– линии нумеруются от 0 до 7 (например, RB0… RB7);

– линии на портах работают в режиме цифрового ввода/вывода;

– линии могут быть программно переключены на встроенные модули МК, выполняющие определенные задачи;

– линии порта В имеют программно подключаемые подтягивающие резисторы (об этом подробнее чуть позже);

– линия RA4 может формировать только НЛУ,

– линия RA5 работает только на вход

(на стр. 30 даташита заголовок рисунка с опечаткой – правильно читать «RA5/MCLR/THV») – ножки RA4 и RA5 я называю «цифровыми костратами», но у них есть офигенные функции.

 

Для чего нужны эти сведения? Благодаря этим знаниям вы наиболее оптимальным образом будете разводить печатные платы, а под имеющиеся электрические соединения писать программу.

 

А теперь глазками снова посмотрим текст нашей программы. Функция майн. В ней первой строчкой вызывается некая функция podgot, а затем идет некое равенство. 

 

void main (void)

{

podgot();

diod = knopka;

}

 

Давайте рассмотрим первую строчку, которой вызывается функция podgot. Перемещаем глазки в функцию podgot и изучаем её содержимое.

 

Мы знаем, что ножки могут работать на вход или на выход. Чтобы четко определить направление работы, необходим ряд манипуляций. За направление работы отвечают регистры TRISx. В даташите они упоминаются. Говоря по-русски, в эти регистры нужно прописать число, где каждый бит этого числа определяет то или иное направление той или иной ножки.


<<< назад далее >>>

Просмотров: 42194

 








 
 
 

В русском Интернете бестолку защищать свои права. Хотите использовать материалы - используйте,
но с письменного согласия авторов. В противном случае будут высланы соответствующие письма
в поисковые системы об ограничении индексации ваших сайтов. Не доводите до греха.