Разработка системы медицинской диагностики, позволяющей производить обследование 3 больных за время, не превышающее 1 минуту, страница 3

        Программируемый таймер К1810ВИ54 относится к классу функционально ориентированных программно управляемых интерфейсных БИС, поэтому перед началом работы в него необходимо загрузить управляющее слово (УС) и константу пересчета. УС задает режим работы, тип счета (двоичный или двоично-десятичный), порядок загрузки и размерность (один или два байта) константы пересчёта.

Проектируемой системой используются только один (нулевой) канал таймера, функционирующий во втором режиме, генерируя сигналы запуска на АЦП с определённой периодичностью.

Управляющее слово нулевого канала (24h), загружаемое по адресу 13h, содержит в себе следующую информацию:

Рис.3  Содержание регистра управляющего слова нулевого канала таймера

В режиме 2 – импульсного генератора частоты – канал работает как делитель входной частоты PCLK на N, где N- константа пересчета. Режим 2 является режимом с автозагрузкой, т.е. после окончания цикла счета счетчик автоматически перезагружается и счет повторяется.

7. Текст программы

0000h:             mov ax, 4FFFh              ; инициализация указателя стека

mov sp, ax      

                        mov ax, 0000h                         ; инициализация сегмента данных

mov ds, ax                  

mov al, 24h                  ; инициализация таймера

                        out 5003h, al              

mov al, N                    ; загружается константа пересчёта

out 5000h, al               ; в нулевой канал

                        xor dl, dl                      ;обнуляем dl   

sti                                ; разрешение прерывания

                        hlt                               ; ожидание прерывания

0060h:            

CIKL:              

                        mov cx,3                     ;в CX загружаем 3

inc si                           ;увеличиваем si на 1

mov al,dl

out 3000h, al

 in  al,  6000h  ; считывание информации с АЦП

                        cmp al, 25h                ; сравниваем показания датчика температуры 

                                                   ; с верхним допустимым пределом 37˚

                        ja M1                         ; переход на M1, если al>25h

cmp al, 24h                ; сравниваем показания датчика с...

                                                  ; ...нижним допустимым пределом 36˚

                       ja M2                           ; переход на M2, если al>24h

                        mov [bx],si                  ; записать в ОЗУ номер больного

M1:                 mov [bx+1], al                       ; пересылка al в ячейку памяти

M2:                 inc bx                          ;увеличиваем bx на 1

inc dl                           ;увеличиваем dl на 1

mov al,dl

out 3000h, al

             in  al,  6000h               ; коммутация АЦП на следующий канал

 cmp al, 82h                 ; сравниваем показания датчика ВАД с...

                                                 ; ...верхним допустимым пределом 120

 ja M3                           ; переход на M3, если al>120

                         cmp al, 6Eh                 ; сравниваем показания датчика с...

                                                 ;... нижним допустимым пределом 110

 ja M4                           ; переход на M4, если al>100

mov [bx], si                  ; записать в ОЗУ номер больного 

M3:                 mov [bx+1], al             ; пересылка al в ячейку памяти

M4:                 inc bx                           ;увеличиваем bx на 1

inc dl                            ; увеличиваем dl на 1

mov al,dl

out 3000h, al

             in  al,  6000h              ; коммутация АЦП на следующий канал

cmp al, 50h                  ; сравниваем показания датчика НАД с...

                                               ; ...верхним допустимым пределом 80

ja M5                            ; переход на M5, если al>80

                        cmp al, 3Ch                 ; сравниваем показания датчика с...

                                               ; ...нижним допустимым пределом 60

                        ja M6                            ; переход на M6, если al>60

                        mov [bx], si                 ; записать в ОЗУ номер больного

M5:                 mov [bx+1], al             ; пересылка al в ячейку памяти

M6:                 inc bx                           ;увеличиваем bx на 1

                        inc dl                            ;увеличиваем dl на 1

                        loop CIKL                   ; вернуться на метку CIKL

                        xor dl, dl                      ;обнуляем dl

                        cmp si, FAh                  ; сколько пациентов было всего обследовано

                         je VIXOD                   ;переход на метку VIXOD, если были...

                                             ; ...обследованы  все пациенты

jmp  CIKL                     ;безусловный переход на метку CIKL

VIXOD:          xor bx,bx                      ;обнуляем bx

xor si,si                         ;обнуляем si

                         hlt                                 ; ожидание прерывания

                        cli                                  ; запрещение прерывания

3FCh:              60h,00h,00h,00h

7FF0h:             jmp 00000000h            ; и переход на основную программу

7. Список использованных источников

1.  Ю.М. Казаринов – «Микропроцессорный комплект К1810», “Высшая школа”, Москва, 1990г.

2.  Ю.М. Казаринов – «Применение микропроцессоров и микроЭВМ в радиотехнических системах», “Высшая школа”, Москва, 1988г.

3.  М.М. Мичурина, И.Н. Сушкин – «Использование АЦП и ЦАП в цифровых системах. Метод. указания», КГТУ, Красноярск,1996г.

4.  М.М. Мичурина, И.Н. Сушкин – «Цифровые устройства и микропроцессоры: Прогр. и метод. указания.», КГТУ, Красноярск, 1999г.

5.  В. Юров учебник “ASSEMBLER”  «Питер, 2002».

6.  Б. Г. Федорков Микроэлектронные цифро-аналоговые и аналого-цифровые преобразователи.