Цель работы: Изучить применение прерываний, использование таймеров-счётчиков и ввод-вывод на микропроцессоре K1816.
Задание: Разработать прерывающую программу измерения длительности положительного импульса 0-99с с погрешностью 1с, поступающего на вход T0. Результат выдать в двоично-десятичном коде в порт P1. Основная программа в это время выполняется.
Текст программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
org 0 jmp start; org 03h jmp error_interrupt; org 0bh jmp timer0; org 13h; jmp error_interrupt; org 23h; jmp error_interrupt; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;Nachalo programmi ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; start: mov TMOD,#1; mov tl0,#low(-16960); mov th0,#high(-16960); mov r2,#16 mov ie,#10000010b; SETB tr0; ;vipolnyat kakie libo deystviya mov r5,#0; loop: inc r5; sjmp loop ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;Konec glavnoy programmi ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; timer0: djnz r2,exit; clr tr0; mov tl0,#low(-16960); mov th0,#high(-16960); mov r2,#16; setb tr0; jb T0, calculate;;Esli signal est, to perehod na calculate mov a,r7; jnz exit_and_send_result;Esli r7<>0 to znachit vichisleniya bili soversheni i resultat ;hranitsya v r7. EGO NELZYA PRTIT!!! mov r7,#(10011001b);Zdes zapishem 99, dalee on uvelichitsya na 1 i stanet=0; calculate: mov a,r7; add a,#1; da a; mov r7,a; ; inc r7; esli est signal, to uvelichivaem r7 exit: setb tr0; reti; exit_and_send_result: clr tr0; Ostanavlivaem prerivaniye tr0; mov p1,r7; resultat vidaem v port p1; reti; Vozvrat. Prerivaniye tr0 bolshe ne budet; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;Oshibocno ustanovleno prerivaniye ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; error_interrupt: jmp loop; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;Konec fayla ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; end |
Проверка работоспособности программы:
Номер опыта | Начало сигнала (сек.) | Конец сигнала (сек) | Результат | |
Ожидаемый | Полученный | |||
1. | 0 | 15 | 15 | 15 |
2. | 15 | 30 | 15 | 15 |
3. | 4 | 24 | 20 | 20 |
Вывод: Написанная программа работает верно.
Скачать ZIP-архив с исходными кодами лабораторной работы № 2 по МПСС