|
Программа для микропроцессора Z80, обеспечивающая измерение времени дребезга контактов релеVan HarrisФирма Boeing Aerospace Co. (Сиэтл, шт. Вашингтон) Описанная здесь программа для микропроцессора Z80, которая ориентирована на выполнение в автоматических испытательных микропроцессорных системах, измеряет время втягивания сердечника реле и дребезга контактов реле, что позволяет обойтись без сложной аппаратуры, если использовать эту стандартную программу в составе программ тестирования. Предложенная программа также обеспечивает достаточную точность измерений. Полное время замыкания контактов можно найти путем сложения времен втягивания сердечника и дребезга контактов реле. Программа, стостоящая из двух частей, выполняется, когда испытуемое реле соединяется с портом ввода цифровых данных DI, реализующим преобразование логических уровней. Первая часть программы, образующая цикл 1, определяет время втягивания сердечника реле. Вторая часть подсчитывает время дребезга контактов реле.
Блок - схема программы измерения времени дребезжания контактов реле ИЗМЕРЯЮЩАЯ ВРЕМЯ ДРЕБЕЗГА КОНТАКТОВ РЕЛЕ
Строка Адрес B1 B2 В3 B4 1 2 ;Измеритель времени дребезга контактов 3 4 ;Эта программа будет измерять время ;дребезга контактов и время втя 5 ;гивания сердечника. Значение времени ;дребезга будет в регистре HL, 6 ;а время втягивания в регистре DE. 7 8 9 10 ;TITLE "BOUNCE TIMER" 11 LIST В, Х 12 NAME BOUNCE 13 ASEG 14 ORG 3000H 15 16 3000 BOUNCE: 17 3000 F3 DI ;Запрет прерываний 18 19 3001 21 18 FC LD HL,-TIMEOUT ;Вычесть время контакта из ;счетчика времени дребезга 20 3004 01 Е8 03 LD ВС, TIMEOUT ;Установить счетчик времени контакта 21 3007 11 FF FF LD DE, -1 ;Установить счетчик времени втягивания 22 23 3000А ЗЕ 07 LD A, CLOSE ;Замкнуть реле 24 3000С D3 С OUT (PORTST), А 25 26 ;Время втягивания сердечника 27 28 3000Е LOOP1: 29 3000Е 13 INC DE ;Увеличить счетчик 30 31 300F DB 92 IN A, (PORTIM) ;Получить состояние реле 32 3011 FE FF CP TRUE ;Ждать первого неустойчивого ;замыкания контактов 33 3013 20 F9 JR NZ, LOOP1 - $ 34 35 ;Время дребезга контактов 36 37 3015 LOOP2: 38 3015 23 INC HL ;Увеличить счетчик времени дребезга 39 40 3016 DB 92 IN A, (PORTIM) ;Получить состояние реле 41 3018 FE FF CP TRUE ;Состояние реле истинно? 42 301А С2 23 30 JP NZ, RESEIC ;Если нет, восстановить счетчик времени контакта 43 44 301D 0B DEC ВС ;Уменьшить счетчик времени контакта 45 301Е 78 LD А, В ;Установить флажки 46 301F Bl OR С 47 ;Выполнить цикл, пока счетчик време- 48 3020 20 F3 JR NZ, LOOP2- $ ;ни контакта не станет = нулю 49 50 3022 С9 RET ;Возврат, значение времени дребезга ;в регистре HL, а времени втягивания 51 ;в регистре DE 52 53 ;Восстановление счетчика времени контакта 54 55 3023 RESETC: 56 3023 01 Е8 03 LD BC, TIMEOUT ;Восстановление счетчика времени контакта 57 3026 00 NOP ;Сохранение времени выполнения цикла постоянным 58 3027 18 ЕС JR LOOP2-$ 60 61 62 ;DATA 63 64 03ЕВ TIMEOUT EQU 1000 65 00FF TRUE EQU 0FFH 66 0007 CLOSE EQU 07H 67 00C2 PORTST EQU 0C2H 68 0092 PORTIM EQU 92H 69 3029 END Число ошибок ассемблеpa = 0 Прерывания запрещены с целью сохранения точности измерений в каждом цикле. Цикл 1 (счетчик времени втягивания) состоит из процедур наращивания содержимого счетчика и проверки. При каждом прохождении цикла проверяется состояние порта DI на наличие первого неустойчивого замыкания контактов реле. Когда такой эффект обнаружен, программа измеряет время втягивания сердечника и хранит это значение в регистре DE. Однако истинное время втягивания вычисляется умножением содержимого регистра DE на 36 и делением результата на тактовую частоту микропроцессора Z80. Цикл 2 (счетчик времени дребезга контактов реле) представляет собой подпрограмму наращивания содержимого счетчика и проверки, а также содержит дополнительную процедуру, обеспечивающую работу счетчика времени контакта и восстановления. При каждом прохождении цикла увеличивается содержимое регистра HL и проверяется состояние порта DI. Если контакты реле разомкнуты, то в счетчик времени контакта загружается заранее определенное значение этого времени. В случае замыкания контактов реле значение счетчика времени контакта уменьшается до тех пор, пока не достигнет нуля. Когда содержимое регистра счетчика времени контакта равно нулю, программа измеряет время дребезга контактов, и это значение запоминается в регистре HL. Однако для того чтобы получить истинное время дребезга контактов, в регистр HL вначале записывают дополнительный двоичный код значения времени контакта, затем его содержимое умножается на 60, и результат делится на тактовую частоту микропроцессора Z80.
|
|
|