Основы цифровой техники. Отчет по лабораторной работе 6 По дисциплине Основы цифровой техники
Скачать 309.12 Kb.
|
Некоммерческое акционерное общество АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И СВЯЗИ имени Гумарбека Даукеева Кафедра: Электроснабжение промышленных предприятий ОТЧЕТ по лабораторной работе № 6 По дисциплине: Основы цифровой техники На тему: Обработка прерываний от периферийных модулей (TMR1) Специальность: 5В071800 – Электроэнергетика Выполнил: Аманжол И.. Группа: ЭЭ 19-7 Вариант: № 5 Принял: Акименков М. В. _______ ________________ «____» ________________2021г. (оценка) (подпись) Алматы 2021 6 Лабораторная работа № 6. Обработка прерываний от периферий- ных модулей (TMR1) 6.1 Краткие теоретические сведения В соответствии со структурной схемой организации прерываний, прерывания от периферийных модулей (таймеров, АЦП, CCP, MSSP, USART, PSP, BOD) отнесены к группе прерываний от периферийных модулей. В упражнении рассмотрено прерывание от переполнения TMR1. При разрешенных прерываниях, в случае их возникновения, осуществляется переход на регистр 04h в памяти программ , где находится указание о безусловном переходе на подпрограмму обработки прерывания. Сама программа отделяется от основной программы через GOTO $, а заканчивается командой RETFIE. При переходе на подпрограмму бит GIE в регистре INTCON<7> автоматически сбрасывается в 0. В теле этой подпрограммы снимается флаг, сообщающий о возникновении данного прерывания, что исключает повторную обработку прерывания, и выполняются действия, которые необходимо выполнить при появлении данного прерывания. После выполнения инструкции RETFIE восстанавливается автоматически разрешение прерываний и основная программа продолжает выполняться с адреса, перед которым произошло прерывание. Это осуществляется благодаря запоминанию в стеке адреса последней выполненной инструкции. 6.2 Исходные данные и выполнение программы В соответствии с этим заданием по варианту 1 коэффициент предделителя 1:2, по варианту 2 – 1:4 и по варианту 3 – 1:8. Для наблюдения за работой программы в режиме симулятора в окно наблюдения включите туда регистры STATUS, TRISC, Wreg, PORTC, INTCON, PIE1, PIR1, T1CON, TMR1H, TMR1L, PCL. Снимите окна в начальный момент, в момент запуска подпрограммы Timer, программы обработки прерывания PRER и в момент возвращения из программы обработки прерывания в основную программу и вывода на лампы сигнала об окончании процесса. После запуска в программе Timer таймера TMR1 посчитайте за сколько нажатий на F7 при пошаговом исполнении программы заполнится регистр TMR1L и произойдет добавление единицы в регистр TMR1H, что вызовет его переполнение и появление прерывания, а значит и запуск программы обработки прерывания, и вывод на разряды 0-4 PORTC энергии. Нажмите рестарт и возвратитесь в исходное состояние программы в режиме симулятора. При режиме MPLab ICD нажмите Halt, а затем рестарт. Проанализируйте изменения в регистрах, связанных с работой TMR1 и состояние счетчика команд PCL. Текст программы лабораторной работы № 6. Include ORG h'00' GOTO GLAV; при запуске программы сразу происходит переход на ;выполнение основной программы с пропуском инструкции перехода ; на подпрограмму обработки прерывания Prer NOP NOP NOP ORG h'04' GOTO Prer NOP GLAV NOP NOP CLRF STATUS BSF STATUS,5 CLRF TRISC MOVLW b'00000001' MOVWF TRISB; настраиваем разряд 0 на ввод, остальные на вывод MOVLW b'00000001' MOVWF PIE1;разрешаем прерывание от переполнения TMR1 BCF STATUS,5 CLRF PORTC CLRF TMR1H; очищаем старший регистр-счетчик TMR1 CLRF TMR1L; очищаем младший регистр-счетчик TMR1 MOVLW b'11000000' MOVWF INTCON; разрешаем все прерывания и прерывания от периферийных модулей MOVLW b'00010000' MOVWF T1CON;устанавливаем предделитель частоты 1:2 ;в разрядах 4-5 <01> MOVLW B'00001000' MOVWF PORTC; в 3-м разряде появляется единица MOVLW D'255'; при добавлении 1 регистр переполнится, ;появится флаг прерывания в регистре PIR1, оба регистра обнулятся MOVWF TMR1H MOVLW D'254';по заданию MOVWF TMR1L BSF T1CON,TMR1ON; пуск таймера TMR1 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP rr NOP NOP GOTO rr NOP NOP NOP GOTO $; разделитель основной программы и подпрограмм. Prer; имя подпрограммы обработки прерывания, вызванного переполнением ;счетчика TMR1, после ее отработки в разрядах 0-5 PORTC единицы BCF PIR1,TMR1IF; сброс флага переполнения таймера BCF T1CON,TMR1ON; останов таймера TMR1 MOVLW b'00111111' MOVWF PORTC; в PORTC единицы в разрядах 0-5 RETFIE end; конец текста всей программы 6.3 Оформление отчета по лабораторной работе Отчет оформляется на группу. В созданный Word-файл копируется текст программы и окна по ходу выполнения программы в режиме MPLabSim: - после возникновения прерывания и перехода на 4-й адрес программы; - после окончания программы обработки прерывания и возвращения в основную программу. Таблица 6.1 - Задания по изменению времени работы TMR1 Задание для варианта
Таблица результатов
Рисунок 1 - маркер на инструкции запуска TMR1 Рисунок 4 - произошло прерывание и маркер на вызове программы обработки прерывания. Адрес 04h Контрольные вопросы В каком состоянии находятся биты разрешения прерываний в ре- гистрах INTCON и PIE1 после выполнения инструкции RETFIE? В том же, в котором и были до прерывания Где сохраняется значение счетчика регистра, позволяющее при за- вершении подпрограммы вернутся к выполнению следующей инструкции? В стеке Сколько регистров в стеке PIC16F877A? В микросхемах PIC16F877A стеки имеют 8 уровней по 13 разрядов На какой адрес в памяти программ переходит счетчик при появлении разрешенного прерывания? На регистр 04h В каком регистре и в каком разряде запрещаются все прерывания? В 7-ом бите регистра INTCON01>7> |