Машинка на ДУ управлінні своїми руками. Апаратна реалізація. UART. Передавач і приймач на PIC

На цьому уроці ми з Вами портируемо варіант апаратної реалізації передавача і приймача на основі модуля UART мікроконтролера PIC.

Розпочнемо з передавача. Перед початком роботи налаштуємо UART. Для цього використовуємо процедуру initUSART(). Встановимо швидкість обміну 2400 бод, для цього запишемо в регістр генератора швидкості відповідну константу з даташита...

SPBRG = 129; //Швидкість 2400 при тактовій частоті 20кГц

...налаштувати лінії порту RC7 і RC6 як виходи модуля UART...

SPEN = 1;

...включимо передавач...

TXEN = 1;

Передача здійснюється шляхом запису передаваного байта в регістр буфера передавача...

TXREG = txData;

...передача наступного байта може бути розпочата після закінчення передачі попереднього – очищення зміщувального регістра передавача TSR. Контролюємо це шляхом перевірки прапора TRMT...

while(TRMT == 0);

Для передачі байта я використовую процедуру...

//Передача байта...
USART_TransmitByte(unsigned char txData) {

   TXREG = txData;
   while(TRMT == 0);
}

Для передачі рядка...

//Передача рядка...
USART_TransmitString(unsigned char txData[]) {

   for (int i=0; i < strlen(txData);) {

   TXREG = txData[i];
   while(TRMT == 0);
   i++;
   }
}

В іншому логіка програми не змінилася і пояснень не вимагає.

Тепер про приймач... Усі налаштування аналогічні, крім того, що ми вмикаємо приймач замість передавача...

CREN = 1;

Прийом здійснюється шляхом перевірки прапора переривання приймача – буфер приймача повний...

while(!RCIF);

Прийнятий байт зберігається в регістрі буфера приймача RCREG. Обробляємо прийнятий байт. Наприклад, перевіряємо стартові байти...

if (RCREG != 'A')continue;

...читання з регістра буфера скидає прапор RCIF.

В іншому логіка програми не змінилася і пояснень не вимагає.

ПРОЕКТ З ІСХОДНИМ КОДОМ І СИМУЛЯЦІЯ В PROTEUS у вкладенні.

Прикреплені файли:

Top