Знову, не мудруючи лукаво, проведемо компютерний експеримент по відправці символу через USART Ось найпростіша програма:

#include <pic16f887h>

#include &quotdelay_20h&quot

typedef unsigned int wrd

wrd at 0x2007 CONFIG1 = 0x2FF2

void main(void) {

SPBRG = 21 / / Швидкість передачі 57600, 8, NONE, 1 SYNC = 0 / / Асинхронний режим

SPEN = 1 / / Дозволити роботу USART

BRGH = 1 / / Висока швидкість

TXEN = 1 / / Дозволити передачу

for (;) {

TXREG = 1 ; / / Символ одиниці в буфер передачі DELAY_S (1) / / Пауза в 1 секунду

}

}

І можна подивитися на результат:

Рис 527 Компютерна перевірка програми

Аналогічно перевіримо роботу приймача Вона не набагато складніше:

#include <pic16f887h>

#include &quotdelay_20h&quot

typedef unsigned int wrd

wrd at 0x2007 CONFIG1 = 0x2FF2

char rec_dat = 0 / / Змінна для прийому void main (void) {

TRISD = 0 / / Порт для перевірки операції прийому PORTD = 0

SPBRG = 21 / / Швидкість 56700 SYNC = 0 / / Асинхронний прийом

SPEN = 1 / / Дозволити роботу USART

BRGH = 1 / / Висока швидкість

CREN = 1 / / Дозволити прийом

for (;) {

rec_dat = RCREG / / Запишемо в змінну прийнятий символ if (rec_dat == 1 ) RD0 = 1 / / Якщо «1», то включити RD0 else RD0 = 0 / / Якщо ні, то вимкнути RD0

}

}

І аналогічно подивимося на результат:

Рис 528 Перевірка прийому символів

Джерело: Гололобов ВН, – Самовчитель гри на паяльнику (Про електроніці для школярів і не тільки), – Москва 2012