at89c52 и uart

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 1
Зарегистрирован: Чт сен 26, 2013 09:32:40

Сообщение wolfenhound »

Доброго времени суток, господа и дамы!

Недавно начал изучать микроконтроллер at89c52 (выбрал его из-за удобств программирования). Пытался реализовать коммуникацию с пк через uart. Стащил с атмеловского сайта следующий код:

Код: Выделить всё

org 000h
ljmp begin
org 23h
ljmp serial_IT

org 0100h
begin:
MOV SCON, #0F0h; /* (0f0h) uart in mode 1 (8 bit), REN=1 */  
ORL TMOD, #21h; /* (21h) Timer 1 in mode 2 */
MOV TH1, #0FFh; /* 9600 Bds, 4.000MHz */
MOV TL1, #0FFh; /* 9600 Bds, 4.000MHz */
SETB ES; /* Enable serial interrupt*/
SETB EA; /* Enable global interrupt */
SETB TR1; /* Timer 1 run */
 
JMP $; /* endless */

serial_IT:
JNB RI,EMIT_IT ; test if it is a reception
CLR RI ; clear reception flag for next reception
CLR A;
MOV A,SBUF ; read data from uart
MOV SBUF,A ; write same data to uart
LJMP END_IT

EMIT_IT:
CLR TI ; clear transmition flag for next transmition
END_IT:
RETI
end 
Смысл данной программы в том, что я с компьютера отправляю число, а мк это число просто мне возвращает.
Так вот когда я отправляю число больше 77, то с мк возвращается тоже число, но стоит мне отправить число меньше 77, то возвращается число увеличенное на 70. Просто сам не могу разобраться в чём дело, а гугл ответа не даёт.

Заранее благодарю за помощь.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Какой-то сомнительный код...
Стек не проинициализирован, UART в 9-битном режиме, да еще и в режиме мультипроцессорной связи... Скорость судя по настройкам TH1:TL1 не очень похожа на 9600...

Да, темку бы перенести из AVR, это 51-й как-никак...
Реклама
Друг Кота
Сообщения: 5410
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий

Сообщение petrenko »

Да. тему треба перенести, это верно.

А что там у Вас с битом чётности происходит ? :roll: Разъясните, пожалуйста.
( Дюже любопытно.. )

А, да, ещё скажите нам, а в каком месте надо размещать "CLR RI" ?
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Контактная информация:
Ответить

Вернуться в «AVR»