Настройка USART в режим асинхронного прийомника(PIC16F876)
Помогите пожалуйста!
Мне нужно с СОМ порта компьютера передать в ПИК данные используя модуль UART. Протокол обмена: 1-стартовый, 8-бит данных, 1-стоповый бит, без поверки на четность, скорость 4800. Кварц ПИКа на 10 МГц.
Для этого я:Настоил RC7-как вход, а RXSTA, TXSTA, SPBRG настроил как показано ниже.
bsf STATUS,RP0 ;Bank_1
clrf TRISC ;PortC all Out
bsf TRISC,7 ; RB7 input
movlw b'00000010' ;word initialization for TXSTA
movwf TXSTA ;(низкоскоростной режим,8 bit,)
movlw .32 ;Задать скорость 4800 при 10МГц
movwf SPBRG ;//--
bcf STATUS,RP0 ;Bank_0
movlw b'10010000' ;word initialization for RCSTA
movwf RCSTA ;UART On
Но модуль работает не правильно. получаю не то что передаю с ПК.Что я сделал не так?
Значение для SPBRG я рассчитал по формуле в документации на ПИК.(32) Ето число я изменял вверх и вниз но безрезультатно. Также настраивал UART на высокоскоростной режим, менял кварц и настройки ПИКа на 4МГц. Результат-аналогичный.
В аппараттной части для подключеня ПИКа к СОМ порту компьютера использовал резистор и два последовательно включеных диода средняя точка которых подключена к RC7(RX),а остальные к земле и питанию.
(Заранее исключаю неправильную работу ПК- другое устройство по вышеупомянутому протоколу с ПК работает нормально).
Заранее благодарен за помощь.
|