Машинка на ДУ управлінні своїми руками. Апаратна реалізація. 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 у вкладенні.
Прикреплені файли:
- remote_control_uart.rar (85 Кб)