3. Подпрограмма обслуживания прерывания обязательно завершается командой
выхода из подпрограммы, обслуживающей прерывания, по которой счетчик
команд перезагружается из стека адресом возврата в основную программу и
осуществляет аппаратный сброс запросов прерываний.
Последовательный порт ввода/вывода
В состав ОМЭВМ входит последовательный порт, представляющий собой
асинхронный приемопередатчик. Он осуществляет прием и передачу информации,
представленной последовательным кодом, младшими битами вперед. Для этого в
состав УАПП входят принимающие и передающие сдвиговые регистры,
преобразующие параллельный код в последовательный. Последовательный порт
является дуплексным, то есть одновременно осуществляет прием и передачу.
Передаваемые и принимаемые данные хранятся в регистре специальных функций
SBUF – буферный регистр. Физически регистр SBUF представляет собой 2
раздельных регистра. Один – для передаваемых данных, второй – для
принимаемых. При приеме обеспечивается хранение принятого байта до конца
приема следующего байта. Байт, не прочитанный из SBUF за время приема
следующего байта, теряется. Запись байта в буфер SBUF при передаче приводит
к автоматической перезаписи байта в сдвигающий регистр передатчика и
инициализирует передачу байта. Всего имеется 4 режима работы
последовательного порта:
. 00 – синхронный режим приема/передачи 8-битных данных. Частота передачи –
1/12 частоты процессора. Скорость фиксированная.
. 01 – 8-битный режим передачи с переменной скоростью. Скорость передачи
задается таймером Т1 (600 – 9600 бит/сек). Формат посылки: 1 старт + 8
бит информации + 1 стоп.
. 10 – 9-битный режим передачи информации с фиксированной скоростью.
Скорость передачи – частота резонатора деленная на 64 или на 32. 9-й бит
может использоваться для контроля по четности.
. 11 – 9-битный режим передачи информации с переменной скоростью, величина
которой задается таймером Т1.
Для сопряжения с интерфейсом RS232C, УАПП может работать в режимах 10
и 11, когда скорость определяется таймером Т1. Если устройство
разрабатывается на МК51, оно должно иметь выход на последовательный
интерфейс с RS232C. При этом перед разработчиком встают следующие проблемы:
1. Согласование уровней сигналов RS232C и МК51.
2. Поддержание стандартной скорости передачи.
3. Поддержание стандартных форматов посылок.
4. Поддержание стандартных протоколов обмена – набор символов для того,
чтобы обеспечить нормальный прием/передачу.
Задача преобразования последовательного кода выходного сигнала
частотомера в параллельный несколько усложняется тем, что необходим опрос
38 каналов. Данное обстоятельство приводит к необходимости применения
дополнительных микросхем, позволяющих решить эту задачу. Для этого
использовались микросхемы КР580ВВ55А.
Микросхема КР580ВВ55А предназначена для параллельной передачи
информации между микропроцессором и периферийными устройствами и содержит
три 8-разрядных канала ввода/вывода
А, В, С.
Канал С может быть представлен в виде двух 4-разрядных каналов
ввода/вывода, доступ к которым производится как к отдельным независимым
каналам. Периферийные устройства подключаются к каналам А, В, С, а связь с
микропроцессором осуществляется с помощью шины D через буфер данных.
Структурная схема КР580ВВ55А представлена на рис 10.
[pic]
Рисунок 10 Структурная схема микросхемы КР580ВВ55А
Каждый из каналов А, В, С состоит из 8-разрядного регистра и
двунаправленных формирователей, имеющих на выходе состояние «Выключено»,
Устройство управления содержит регистр управляющего слова (РУС), в который
предварительно производится запись информации, определяющей режим работы
каналов, и формирует сигналы выбора канала и управления каналом С.
Микросхема может работать в одном из трех режимов: режим 0 - простой
ввод/вывод; режим 1 - стробируемый ввод/вывод; режим 2 -двунаправленный
канал. Режим работы каналов можно. изменять как в начале, так и в процессе
выполнения программы, что позволяет обслуживать различные периферийные
устройства в определенном порядке с помощью одной микросхемы КР580ВВ55А.
Каналы А и В могут работать в различных режимах, а работа канала С зависит
от режимов работы каналов А и В, Комбинируя режимы работы каналов, можно
обеспечить работу микросхемы почти с любым периферийным устройством.
В режиме 0 осуществляется простой ввод/вывод данных по трем 8-
разрядным каналам, причем канал С может использоваться как два 4-разрядных
канала. Каждый из каналов может использоваться отдельно для ввода или
вывода информации, В режиме 0 входная информация не запоминается, а
выходная хранится в выходных регистрах до записи новой информации в канал
или до записи нового режима.
В режиме 1 передача данных осуществляется только через каналы А и В, а
линии канала С служат для приема и выдачи сигналов управления. Каждый из
каналов А и В независимо друг от друга может использоваться для ввода или
вывода 8-разрядных данных, причем входные и выходные данные фиксируются в
регистрах каналов,
В режиме 2 для канала А обеспечивается возможность обмена информацией
с периферийными устройствами по 8-разрядному двунаправленному каналу. Для
организации обмена используются пять линий канала С, В режиме 2 входные и
выходные данные фиксируются во входном и выходном регистрах соответственно.
Назначение выводов КР580ВВ55А приведено в табл. 3
|Номер вывода |Обозначение |Назначение |
|9, 8 |А0, А1 |Адрес |
|27 – 34 |D7 – D0 |Шина данных |
|37 - 40, 1 - 4 |РА7 – РА0 |Канал А |
|5 |RD |Чтение |
|6 |CS |Выбор микросхемы |
|7 |GND |Общий |
|10 - 13, 17, 16, |PC7—PCO |Канал С |
|15, 14 | | |
|18 - 25 |PB0 - PB7 |Канал В |
|26 |Ucc |+5В |
|35 |RESET |Установка |
|36 |WR |Запись |
Таблица 3 Назначение выводов микросхемы КР580ВВ55А
Данные микросхемы подключались к микроЭВМ и позволяли увеличить
количество портов ввода/вывода до необходимого количества.
Конечная схема подключения представлена на рис 9.
Разработка программного обеспечения устройства сопряжения
В задачи программного обеспечения, для устройства сопряжения входит:
1. Получение от частотомера сигнала очередного замера информации с датчика;
2. По пришествии этого сигнала последовательно считать информацию о каждой
цифре выходного сигнала;
3. Отметить время прихода сигнала (точнее, время, прошедшее со времени
предыдущего прихода сигнала);
4. Инициализировать порт последовательной передачи информации;
5. Преобразовать данные в последовательный код;
6. Переслать последовательный код на ЭВМ;
7. Получить и обработать данные на ЭВМ, представив их в удобном для
прочтения виде.
Первые шесть задач решаются непосредственно ОМЭВМ на уровне языка
Ассемблер, седьмая задача решается при помощи языка высокого уровня на ЭВМ.
Перед тем, как использовать устройство сопряжения по назначению,
необходимо провести инициализацию необходимых аппаратных ресурсов:
. Источника прерываний INT0;
. Установка необходимого времени отсчета Т0;
. Установка необходимой величины пересчета Т1;
. Программирование альтернативных функций порта ввода/вывода Р3 ОМЭВМ;
. Установка необходимых режимов работы таймеров Т0 и Т1 и последовательного
порта ввода/вывода.
Блок-схема программы устройства сопряжения представлена на рис 12.
Текст программы на языке Ассемблер представлен ниже
0000 0200F7 LJMP 00F7
0003 020200 LJMP 0200
0006 00 NOP
0022 00 NOP
0023 020300 LJMP 0300
0026 00 NOP
00F6 00 NOP
00F7 D2B0 SETB RXD
00F9 D2B1 SETB TXD
00FB D2B2 SETB INT0
00FD D2B6 SETB WR
00FF D2B7 SETB RD
0100 758921 MOV TMOD,#21
0103 758B00 MOV TL1,#00
0106 758DF4 MOV TH1,#F4
0109 D28E SETB TR1
010B D2AF SETB EA
010D 758C3C MOV TH0,#3C
0110 758AB0 MOV TL0,#B0
0113 7582000 MOV DPL,#00
0116 7A00 MOV R2,#00
0118 D28C SETB TR0
011A D2A8 SETB EX0
011C 108D02 JBC TF0,0121
011F 80FB SJMP 011C
0121 0A INC R2
0122 758C3C MOV TH0,#3C
0125 758AB0 MOV TL0,#B0
0128 80F2 SJMP 011C
012A 00 NOP
01FF 00 NOP
0200 75F002 MOV B,#02
0203 EA MOV A,R2
0204 84 DIV AB
0205 F5F0 MOV B,A
0207 7A00 MOV R2,#00
0209 7805 MOV R0,#05
020B 7904 MOV R1,#04
020D C299 CLR TI
020F 85F099 MOV SBUF,B
0212 D2AC SETB ES
0214 32 RETI
0215 00 NOP
02FF 00 NOP
0300 C2AC CLR ES
0302 C299 CLR TI
0304 8983 MOV DPH,R1
0306 E0 MOVX A,@DPTR
0307 F599 MOV SBUF,A
0309 09 INC R1
030A B90701 CJNE R1,#07,030E
030D 09 INC R1
030E D801 DJNZ R0,0311
0310 32 RETI
0311 D2AC SETB ES
0313 32 RETI
Страницы: 1, 2, 3, 4, 5, 6, 7, 8