Смекни!
smekni.com

Программное обеспечение управления автоматизированным комплексом многоканальной связи (стр. 6 из 16)

Регистр Bit
7 6 5 4 3 2 1 0
LI1 0 0 0 0 0 0 0 0 00Н
LI2 0 0 0 1 0 0 0 0 10H
LI3 0 0 1 0 0 0 0 0 20Н
LI4 0 0 1 1 0 0 0 0 30H
LI5 0 1 0 0 0 0 0 0 40Н
LI6 0 1 0 1 0 0 0 0 50H
LI7 0 1 1 0 0 0 0 0 60H
LI8 0 1 1 1 0 0 0 0 70H
LI9 1 0 0 0 0 0 0 0 80H
LI10 1 0 0 1 0 0 0 0 90H
LI11 1 0 1 0 0 0 0 0 A0H
LI12 1 0 1 1 0 0 0 0 В0Н
LI13 1 1 0 0 0 0 0 0 C0H
LI14 1 1 0 1 0 0 0 0 D0Н
LI15 1 1 1 0 0 0 0 0 E0H
LI16 1 1 1 1 0 0 0 0 F0H
Регистр Bit
7 6 5 4 3 2 1 0
CR1 0 0 0 0 0 0 0 0 00H
CR2 0 0 0 0 0 0 1 0 02H
CR3 0 0 0 0 0 1 0 0 04H
CR4 0 0 0 0 1 1 1 0 0EH
ICR 0 0 0 0 0 1 1 0 06H
TSR 0 0 0 0 1 0 0 0 08H
PSR 0 0 0 0 1 0 1 0 0AH
ESR 0 0 0 0 1 1 0 0 0CH

Рис. 1.10. Адреса внутренних регистров линейных интерфейсов.


Затем производится запись в ОЗУ данных состояний части битов внутренних регистров линейных интерфейсов. Данные располагаются в заранее оговоренной техническим заданием области памяти 40Н – 7FН в заданном порядке. Распределение памяти ОЗУ данных процессора показано на рисунке 1.11. Нужные биты выбираются из внутренних регистров линейных интерфейсов, таблица которых приведены на рисунке 1.12. Например, для занесения бита AIS в 1‑й бит ячейки памяти 40Н, его нужно считать из 2‑го бита регистра PSRLI1. Порядок сохраняется для всей карты по возрастанию следующий: PSR, TSR, CR2, CR1.

Линейный интерфейс Адрес регистра в ОЗУ Bit
7 6 5 4 3 2 1 0
L1 1 40 Н DFMO AIS LOS
41 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
42 Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
43 Н ES4 ES3 ES2 ES1
L1 2 44 H DFMO AIS LOS
45 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
46 Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
47 Н ES4 ES3 ES2 ES1
L1 3 48 Н DFMO AIS LOS
49 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
4A Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
4B Н ES4 ES3 ES2 ES1
L1 4 4C Н DFMO AIS LOS
4D Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
4E Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
4F Н ES4 ES3 ES2 ES1
L1 5 50 Н DFMO AIS LOS
51 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
52 Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
53 Н ES4 ES3 ES2 ES1
L1 6 54 Н DFMO AIS LOS
55 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
56 Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
57 Н ES4 ES3 ES2 ES1
L1 7 58 Н DFMO AIS LOS
59 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
5A Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
5B Н ES4 ES3 ES2 ES1
L1 8 5C Н DFMO AIS LOS
5D Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
5E Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
5F Н ES4 ES3 ES2 ES1
L1 9 60 Н DFMO AIS LOS
61 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
62 Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
63 Н ES4 ES3 ES2 ES1
L1 10 64 Н DFMO AIS LOS
65 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
66 Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
67 Н ES4 ES3 ES2 ES1
L1 11 68 Н DFMO AIS LOS
69 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
6A Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
6B Н ES4 ES3 ES2 ES1
L1 12 6C Н DFMO AIS LOS
6D Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
6E Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
6F Н ES4 ES3 ES2 ES1
L1 13 70 Н DFMO AIS LOS
71 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
72 Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
73 Н ES4 ES3 ES2 ES1
L1 14 74 Н DFMO AIS LOS
75 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
76 Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
77 Н ES4 ES3 ES2 ES1
L1 15 78 Н DFMO AIS LOS
79 Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
7A Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
7B Н ES4 ES3 ES2 ES1
L1 16 7C Н DFMO AIS LOS
7D Н FL TQRSS ESOVR ESUNF TDFMO TAIS TLOS
7E Н ЕРАТ1 EPAT0 ETAOS EQZMON ERLOOP ELLOOP EALOOP
7F Н ES4 ES3 ES2 ES1

Рис. 1.11. Распределение памяти ОЗУ данных процессора.

Потом инициализируется последовательный порт Р3 на прием. Инициализируется таймер, выбор 1‑го таймера, перевод его в третий режим работы, загрузка константы скорости в таймер для 9600 Бод, разрешение работы таймера. Инициализация последовательного порта проходит следующим образом: порт устанавливается в режим 9‑бит с программируемой скоростью, устанавливается адрес для записи принятых значений, выбирается номера канала, идет разрешение приёма сообщений с взведённым 9‑м битом, разрешение работы приёмопередатчика, разрешение прерываний от приёмопередатчика, общее разрешение прерываний, сброс бита разрешения приёма. После этого выполняется основной цикл программы: ожидание прерывания либо от любого из линейных интерфейсов с переходом на подпрограмму перезаписи карты памяти части битов внутренних регистров линейных интерфейсов, либо от последовательного порта с переходом на подпрограмму связи с внешней ПЭВМ через последовательный порт.

Подпрограмма перезаписи карты памяти части битов внутренних регистров линейных интерфейсов состоит из четырех последовательных вызовов подпрограмм RDPSR, RDTSR, DRCR2 и RDCR1 с предварительным занесением в регистр R1 соответствующих адресов регистров, используя таблицу, приведенную на рисунке 1.10. Выполнение подпрограммы происходит в режиме маскирования прерываний. После перезаписи карты памяти снимаются все флаги прерываний линейных интерфейсов и происходит выход из подпрограммы.

Подпрограмма связи с внешней ПЭВМ через последовательный порт вызывается при появлении прерывания от последовательного порта. Она также с запрещения всех прерываний. Инициализируется прием и прослушивается порт на приход старт байта. В случае его получения происходит инициализация чтения данных из памяти. Считается контрольная сумма для передачи бита четности и происходит поблочная передача данных. Для передачи всех 64 байт требуется 64 сеанса связи. Такая организация работы выбрана не случайно. В разделе, где упоминалось об основах асинхронной последовательной связи, приводились причины, по которым данный способ взаимодействия внешней ПЭВМ с последовательным портом является оптимальным. При втором сеансе связи приема старт байта не происходит. Это говорит о продолжении уже начатой передачи данных. Смотрится, является ли этот байт признаком передачи последнего кусочка данных. В этом случае считается контрольная сумма и выполнение подпрограммы прекращается. Иначе мы продолжаем поблочно читать данные из памяти и передавать их внешней ПЭВМ через последовательный порт.

1.7.3 Тестирование и отладка программы

После окончания этапа программирования, т.е. собственно процесса написания программы, проводится ее проверка для обнаружения и исправления возможных ошибок. На эмуляторе микропроцессора АТ89С51 проверяется корректность кода программы по содержимому различных регистров процессора. В контрольных точках программы, выбранных для удобства после каждого логически законченного куска кода, мы смотрим содержимое регистра R7. Внесенные в программу отладочные строки для контроля ее пошагового выполнения позволяют своевременно выявлять неточности реализации общего алгоритма изделия ТС16Е1. Применение модульного принципа тестирования программы существенно облегчает этот процесс.