|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Устранение дребезга контакта путем введения временной задержкиПрограмма, обнаружив замыкание контакта, запрещает опрос его состояния на время, заведомо большее длительности переходного процесса. Программа написана для случая подключения датчика к входу T0 и программной реализации временной задержки:
DBNCDL: JTO DBNCDL;ожидание нуля на входе T0 CALL DELAY;вызов подпрограммы задержки EXIT:...;выход из процедуры
Временная задержка в пределах 1-10 мс подбирается экспериментально для каждого типа датчиков и реализуется подпрограммой DELAY.
Подсчет числа импульсов между двумя событиями. Один из возможных вариантов процедуры подсчёта может быть реализован, если использовать вход T1 как вход счетчика событий. В аккумуляторе фиксируется число импульсов, представленное в двоичном коде (максимальное количество 255).
; Суммирование Z=W+Y ; (R0) – начальный адрес W ; (R1) – начальный адрес Y ; (R2) – длина слагаемых W и Y
CLR C; Сброс флага переноса L: MOV A,@R0; Загрузка текущего байта W ADDC A,@R1; Сложение DAA; Коррекция MOV @R0,A; Размещение текущего байта результата INC R0; Продвижение указателей байт слагаемых INC R1 DJNZ R2,L; Декремент R2, повтор, пока R2 не равно 0
Программа вычитает строку, указанную регистром R1, из строки, указанной регистром R0, с точностью, указанной регистром R2. После выполнения операции проверяется переполнение результата.
SUB: CLR C; 3аем=0 BEG: MOV A,@R0; Загрузка байта уменьшаемого SUBB A,@R1; Вычитание байта MOV @R0,A; Запоминание байта разности INC R0; Установка указателей на следующее INC R1; поле DJNZ R2,BEG; Выполнение цикла до завершения операции ; После завершения цикла проверяется ситуация переполнения в последней итерации. JNB OV,OK ;............. ; Программа восстановления старших разрядов OK: RET
III. Умножение и деление. Команда MUL вычисляет произведение двух целых беззнаковых чисел, хранящихся в регистрах А и В. Младшая часть произведения размещается в А, а старшая – в регистре-расширителе В. Если содержимое В оказывается равным нулю, то флаг OV сбрасывается, иначе – устанавливается. Флаг переноса всегда сбрасывается. Например, если аккумулятор содержал число 200 (0C8H), а расширитель 160 (0A0H), то в результате выполнения команды MUL АВ получится произведение 32000 (7D00H). Аккумулятор будет содержать нуль, а расширитель - 7DH, флаг OV будет установлен, а флаг С – сброшен.
1. Пусть требуется умножить целое двоичное число на константу. Исходное число размещается в резидентной памяти данных (РПД), адрес младшего байта находится в регистре R0. Формат числа в байтах хранится в R0:
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |