Блок буфера последовательного канала RS-232
Блок цифро-аналогового преобразователя
Схема подключения цифро-аналоговогопреобразователя приведена на рис.31. В данном случае использован десятиразрядный преобразователь К572ПА1, не требующий управляющих сигналов. Допустимый диапазон изменения входного сигнала составляет 0÷15В. Для подключения может быть использован любой порт (в данном случае Р0). Неиспользованные контакты D1, D0 подключены на корпус. Выданный в порт цифровой код поступает в преобразователь и преобразованный в напряжение выдается как разность потенциалов на выходах ЦАП Va и Vb.
Задача. Выдать на ЦАП код из аккумулятора.
Фрагмент программы, реализующей указанную задачу:
;запись кода на ЦАП
MOV P0, A
Рис.31Блок цифро-аналогового преобразователя
Схема подключения блока буфера последовательного канала RS-232 приведена на рис.32. Функции буфера – преобразование ТТЛ-уровней сигнала (с которыми работает микроконтроллер) в сигналы стандарта RS-232(табл.10 ).
Таблица10
Сигналы | Микроконтроллер | RS-232 |
Логический 0 | <0,4B | +(5-15)B |
Логическая 1 | >2,4B | -(5-15)B |
Стандарт 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