![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Блок буфера последовательного канала RS-232
Схема подключения блока буфера последовательного канала RS-232 приведена на рис.32. Функции буфера – преобразование ТТЛ-уровней сигнала (с которыми работает микроконтроллер) в сигналы стандарта RS-232(табл.10). Таблица10
Стандарт RS-232 широко используется в телекоммуникационном оборудовании и компьютерной технике. Длина линий связи этого стандарта – до 15 м. Помимо линий входа и выхода данных RS-232 регламентирует ряд необязательных вспомогательных линий для аппаратного управления потоком данных и специальных функций (в данной схеме не используются). Принимаемые данные поступают с контакта разъема RxD на вход IN R1 буфера последовательного канала. C выхода OUT R1 преобразованный сигнал поступает на контакт микроконтроллера Р3.0 (линия приема данных в последовательном коде RxD). Передаваемые данные поступают с контакта микроконтроллера Р3.1 (линия передачи данных в последовательном коде TxD) на вход IN T1 буфера последовательного канала. C выхода OUT T1 преобразованный сигнал поступает на контакт разъема TxD. Соединение между устройствами осуществляется перекрестно. Контакт разъема RxD первого устройства соединяется с контактом TxD второго устройства и наоборот. Обмен данными между устройствами может осуществляться в дуплексном режиме (одновременная передача данных в обе стороны). Задача. Организовать передачу содержимого регистраR0 по последовательному каналу, принять ответ и выдать его для отображения в порт Р0. Содержимое регистраR0 при каждой передаче увеличивается на 1.
Программа, реализующая указанную задачу:
PUBLIC INIT RegKan: Equ 30h rde: Reg p3.7; Только для RS-485 .ORG 0 LJMP INIT .ORG 23H LJMP Serial; Вектор прерывания ; последовательного канала .org 30h INIT: mov SP, #50h; организовать стек в верхних ; адресах ОЗУ mov RegKan, #0; Нет приема/передачи ; Программирование и запуск таймера 1 MOV TMOD, #00100001B; Таймер 1 в режиме 2 MOV TH1, #0fdH; Установить скорость ; передачи данных MOV TL1, #0fdH; 9600 бит/сек ; Программирование последовательного канала mov SCON, #01010000b; 8-битовый ; асинхронный приемо/передатчик setb IE.4; Разрешить прерывания ; последовательного канала SETB IE.7; Общее разрешение прерываний SETB TR1; Запустить таймер 1 Upr_Mod: mov a, RegKan; проверить занят ли канал jnz Upr_Mod; перейти, если занят (нельзя ; передавать) clr rde; Только для RS-485 mov RegKan, #1; Разрешить передачу mov sbuf, R0; Выдать байт из регистра R0 в ; последовательный канал Inc R0 ljmp Upr_Mod
Serial: PUSH A MOV a, RegKan jz EXIT CJNE A, #1, RE2 JBC TI, Pered clr RI; Сбросить флаг приема LJMP EXIT
Pered: ; Передача байта закончена, ожидаем прием Setb rde; Только для RS-485 mov RegKan, #2 LJMP EXIT RE2: CJNE A, #2, EXIT JBC RI, Priem CLR TI; Сбросить флаг передачи LJMP EXIT Priem: mov P0, sbuf; Принимаем байт из канала mov RegKan, #0 ; Завершить работу с каналом EXIT: POP A RETI End
Рис.32Блок буфера последовательного канала RS-232
|