Перейти к содержанию
    

vitallativ

Новичок
  • Постов

    2
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Привет, ребята. Буду признателен за любую помощь. Ситуация в следующем: Мне требуется выполнить миграцию для одного проекта с МК P87C51FB (снятого с производства) на МК AT89C51RB2 (в производстве). Код переехал отлично, за исключением одной вещи. В проекте реализована связь диагностического стенда с моим блоком, инициализирующаяся кодовой посылкой на 5 бодах (ISO 9141), исходя из которой настраивается передача на 4800/9600. Проблема в том, что UART данного МК отказывается работать на этой скорости. P87C51FB это делал легко. ДШ гласит: Т2 у меня занят, Internal_BaudRate_Generator на 5 бод настроить не выйдет. Юзаем Т1 на таймере 1 в режиме 16бит с софтварной перезагрузкой в прерывании (как ДШ завещал). Код (только UART) асемблирую и прошиваю следующий: $DATE ( 30.06.2018 ) $TITLE ( Project3 ) $NOPAGING $NOMOD51 $INCLUDE (AT89C51RB2.inc) org 00H ljmp BEGIN org 23H ljmp serial_IT ORG 001BH JMP TM1INT org 100h BEGIN: clr A mov TCON, A mov T2CON, A mov SCON,#50H MOV PCON,#80H MOV TMOD,#10H MOV TH1,#0CFH MOV TL1,#02CH setb ES setb EA setb ET1 setb TR1 mov A,#55h mov sbuf,A jmp $ TM1INT: clr TR1 MOV TL1,#02CH MOV TH1,#0CFH SETB TR1 RETI serial_IT: jnb RI, _TI clr RI mov A,sbuf mov sbuf,A cpl P3.5 ljmp end_IT _TI: clr TI end_IT: reti END В результате стартовую посылку "55H" МК не отправляет, нога TxD прижимается к лог. 1 и висит, на прием МК также не реагирует. Понимаю, что не показатель, но в протеусе данный код работает прекрасно. Ко всему вышесказанному добавлю, что запустить UART на Т1 (16bit software reload in interrupt) ни на одной из скоростей у меня не вышло. На Т2 и Internal_BaudRate_Generator, да даже на Т1 в режиме 8бит автоперезагрузки (только высокие скорости) UART работает исправно. Ломаю голову... Возможно я что-то делаю не так. Буду признателен за любую помощь.
×
×
  • Создать...