Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Передача данных через 8251
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
na1s
Есть программа передачи массива с одного компа на другой через 8251 в синхронном режиме, препод говорит, что есть две возможности синхронизировать два компа. 1 ждать DSR, вторую я не знаю. А вот моя реализация:
Но он говорит здесь есть ошибка связанная с ложной записью, кто-нибудь может подсказать в чем проблема? Пожалуйста помогите, а то достало уже. Нет ни книг описывающий как писать программы для 8251, ни препод не написал хотя бы методичку как писать.

Передатчик
Код
mvi a, 82h    ; INIT ВВ55
out 83h
mvi a, 36h    ; INIT ВИ53
out 87h         ; CT0, режим 3, 2 байта
mvi a, 0a7h     ; мл. байт коэф. пересчета
out 84h
mvi a, 00h    ; ст. байт  
out 84h
lxi d, 3377h    ; синхросимволы
xra a         ; INIT ВВ51  
out 89h         ; поиск CI
out 89h
out 89h
mvi a, 40h    ; сброс
out 89h
mvi a, 08h    ; синхр.режим, 7 бит, 2 синхр.си
out 89h         ; внутр. синхр., нет контроля
mov a, d     ; первый синхр. символ
out 89h
mov a, e     ; второй синхр. символ
out 89h
in 88h         ; ложное чтение
mvi a, 31h     ; TxEN ER RTS
out 89h
out 88h         ; ложная запись
lxi b, 100h     ; коэф. задержки
w1: in 89h     ; ждем TxRDY (CTS)
ani 01h
jz w1
w2: dcr c     ; задержка
jnz w2
dcr b
jnz w2
w3: in 89h     ; ждем TxRDY
ani 01h
jz w3
mvi a,55h                     ; Тупо выводим 55h
out 88h         ; выводим
dcr b
jnz w3         ; цикл
rst7


Приемник

mvi a, 76h ; INIT ВИ53
out 87h     ; CT1, режим 3, 2 байта
mvi a, 0a7h; мл. байт коэф. пересчета  
out 85h
mvi a, 00h ; ст. байт  
out 85h
lxi d, 3377h ; синхросимволы  
xra a     ; INIT ВВ51  
out 89h     ; поиск CI
out 89h
out 89h
mvi a, 40h ; сброс
out 89h
mvi a, 08h; синхр. режим, 7 бит, 2 синхр.симв.
out 89h     ; внутр. синхр., нет контроля
mov a, d ; первый синхр. символ
out 89h
mov a, e ; второй синхр. символ
out 89h
in 88h     ; ложное чтение
mvi a, 94h; EN ER RxEN
out 89h
lxi h, 0899h ; пишем в память с 0900h
mvi b, 00h ; прием 256 символов
w1: in 89h ; ждем DSR
ani 80h
jz w1
mvi a, 06h ; RxEN DTR
out 89h
w2: in 89h; ждем RxRDY
ani 02h
jz w2
in 88h     ; читаем
cmp d     ; сравниваем с 1-м синхр.симв.
jz w2
cmp e     ; сравниваем со 2-м синхр.симв.
jz w2
inx h                ; HL++
mov m, a ; пишем в память
dcr b     ; B--
jnz w2     ; цикл
rst7
[/code]
NickB
Второй способ - это видимо использование синхробайта (или двух)
Вообще-то надо Вам документацию поискать
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.