ВУЗ:
Составители:
(PIR<5>). Прерывания можно разрешить/запретить установкой/сбросом
бита RCIE (PIE1<5>). Флаг RCIF доступен только для чтения, сбрасывается
аппаратно при чтении из регистра RCREG. Регистр RCREG имеет двойную
буферизацию, т.е. представляет собой двухуровневый буфер FIFO (First In –
First Out – пожалуйста, учите английский язык). Поэтому можно принять
два байта данных в FIFO RCREG и третий – в регистр RSR. Если FIFO
заполнен и обнаружен стоповый бит третьего байта, то устанавливается бит
переполнения приемника OERR (RCSTA<1>). Байт, принятый в RSR, будет
потерян. Для извлечения двух байт из FIFO необходимо дважды прочитать
регистр RCREG. Бит OERR в случае переполнения следует программно
очистить сбросом бита CREN, т.е. запрещением приема. В любом случае,
если бит OERR установлен, логика приемника выключена.
Бит ошибки кадра FERR (RCSTA<2>) устанавливается, если не
обнаружен стоповый бит. FERR и девятый бит принятых данных
буферизируются так же, как принятые данные. Рекомендуется сначала
прочитать регистр RCSTA, затем RCREG, чтобы не потерять информацию
RX9D и FERR.
Рекомендуемая последовательность действий при приеме данных:
1) Установить TRISC<6> и TRISC<7> для использования их в качестве
UASRT
2) Установить скорость приема с помощью регистра SPBRG и бита
BRGH
3) Выбрать асинхронный режим сбросом бита SYNC (TXSTA<4>)
4) Разрешить работу модуля USART установкой бита SPEN
(RCSTA<7>)
5) Если необходимо, разрешить прерывания установкой бита RCIE
(PIE1<5>)
6) Если прием 9-разрядный, то установить бит RX9 (RCSTA<6>)
7) Разрешить передачу установкой CREN (RCSTA<4>)
8) Ожидать установку бита RCIF (PIR1<5>), или прерывание, если оно
разрешено битом RCIE (PIE1<5>)
9) Если прием 9-разрядный, считать 9-й бит данных RX9D (RCSTA<0>)
и проверить возникновение ошибки
10) Считать байт данных из регистра RCREG
11) При возникновении ошибки переполнения сбросить бит CREN
Примечание.
Если используются прерывания, то биты GIE и PEIE в регистре
INTCON должны быть установлены.
Регистры и биты, связанные с работой приемника USART в
асинхронном режиме:
Адрес
Имя Бит 7
Бит 6
Бит 5
Бит 4
Бит 3 Бит 2 Бит 1 Бит 0
Сброс
POR, BOR
0Bh,
8Bh,
10Bh,
18Bh
INTCON
GIE PEIE
T0IE
INTE
RBIE T0IF INTF BRIF 0000000x
0Ch PIR1 PSPIF
ADIF
RCIF
TXIF
SSPIF CCP1F TMR2IF
TMR1IF
00000000
8Ch PIE1 PSPIE
ADIE
RCIE
TXIE
SSPIE CCP1E TMR2IE
TMR1IE
00000000
18h RCSTA
SPEN
RX9 SREN
CREN
ADDEN
FERR OERR RX9D 0000000x
19h TXREG
Регистр данных передатчика USART 00000000
98h TXSTA
CSRC
TX9 TXEN
SYNC
- BRGH TRMT
TX9D 0000-010
99h SPBRG
Регистр генератора скорости USART 00000000
Пример настройки приемника USART на скорость обмена 2400 бод с
кварцевым резонатором 3,68 МГц:
BSF STATUS, RP0
BCF STATUS, RP1 ; выбрать 1-й банк памяти
BSF TRISC,7
BSF TRISC,6 ; используем эти выводы как USART
; задание скорости обмена
XTAL_FREQ = D’3680000’
BAUDRATE = D’2400’
SPBRG_VALUE = (XTAL_FREQ/(BAUDRATE*D’64’))-1
MOVLW SPBRG_VALUE
MOVWF SPBRG
BCF TXSTA, SYNC ; выбор асинхронного режима
BCF STATUS, RP0 ; выбор 0-го банка памяти
BSF RCSTA, SPEN ; включить модуль USART
BSF RCSTA, CREN ; разрешить работу приемника
Страницы
- « первая
- ‹ предыдущая
- …
- 15
- 16
- 17
- 18
- 19
- …
- следующая ›
- последняя »