Формування сигналів керування й індикації

Страницы работы

Содержание работы

Міністерство освіти і науки України

Національний технічний Університет “ХПІ”

“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”

Кафедра “Обчислювальної техніки та програмування”

Звіт з лабораторної роботи №6

з курсу “Мікроконтролери та мікро ЕОМ”

Тема: “ Формування сигналів керування й індикації ”

Виконав:

студент групи КІТ – 14Б

Богачов О. С.

Перивірив:

Ліпчанський М. В.

Скородєлов В.В.

Харків 2008

МЕТА: Набути навички складання функціональної схеми. Вивчити способи формування сигналів керування й індикації, навчитися формувати звукові та світлові сигнали на прикладі мікроконтролера PIC16F84A, розглянути використання динамічної індикації.

Приклад функціональної схеми пристрою.

 ЗАВДАННЯ ПО ЛАБОРАТОРНІЙ РОБОТІ

1. На виводі RА3 мікроконтролера сформувати сигнал із частотою 600Гц і скважністю Q=2 при натиснутій кнопці.

2. На виводі RB2 мікроконтролера сформувати сигнал із частотою 2,8Гц і скважністю Q=2 при віджатій кнопці.

3. На дев'ятирозрядному семисегментному світлодіодному індикаторі за допомогою динамічної індикації із частотою 190 Гц відновлення всіх розрядів індикатора, відобразити групу й ініціали (14Б Б.A.С.).

Алгоритм програми1:

-  Ініціалізуємо контролер. Настроюємо PORTB на вивід, RA1 – на ввід, дозволяємо переривання від таймера.

-  Для того щоб сформувати частоту 600Гц (Т=77мкс) треба внести до таймеру початкове значення .18

-  Очікуємо тереривання від таймера.

-  Після того, як відбудеться переривання від таймера перевыряэмо чи була натиснута кнопка (RA1 = 1), якщо була натиснена змінюється значення RB3 на протележне.

Текст програми1:

; підключення файлу з описом стандартних констант і значень

#include p16f84.inc

; формування конфігураційного слова

            __CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC

; опис комірок пам'яті даних

            cblock 0x0C   ; починаючи з адреси 0x0C

                        W_TEMP       ; збереження W при виклику переривання

                        STATUS_TEMP        ; збереження STATUS при перериванні

                        endc

; опис констант

init_portа        equ      b'00000010'    ; усі розряди на вивід

init_portb       equ      b'00000000'    ; усі розряди на вивід

init_option      equ      b'00001000'    ; TMR0 рахує CLKOUT/2

init_intcon      equ      b'10100000'    ; переривання від TMR0

; початок програми

            org      0          ; вектор скидання

            bcf       INTCON, GIE ; заборона всіх переривань

            goto     main    ; перехід на початок основної програми

; оброблювач переривання

int_start

            org                  0x04    ; вектор переривання

            movwf             W_TEMP       ; збереження W і STATUS

            swapf              STATUS, W

            movwf             STATUS_TEMP

            btfsc                INTCON,T0IF            ; переривання від таймера?

            goto                 tmr_int           ; перехід на оброблювач переривання

                                   ; при переповненні таймера

            movlw            b'00100000'    ; дозвіл переривань тільки від таймера

            movwf             INTCON

            goto                 int_end           ; перехід на закінчення оброблювача

; оброблювач переривання від таймера

tmr_int

            bcf       INTCON, T0IF           ; очищення прапорця переповнення TMR0

            call      IntFreq            ; відновлення стану індикатора

int_end                       ; закінчення оброблювача переривання

            swapf              STATUS_TEMP, W  ; відновлення значень

            movwf             STATUS                     ; регістрів W і STATUS

            swapf              W_TEMP, F

            swapf              W_TEMP, W

            movlw            .18

            movwf            TMR0

            retfie               ; повернення з переривання

; підпрограма відновлення стану індикатора

IntFreq

            movlw             0x01

            xorwf              PORTА,1

;           movwf             PORTB           ; вивід поточного розряду

            return

; підпрограма ініціалізації мікроконтролера

Init

            bsf                   STATUS, RP0            ; вибір банку 1

            movlw             init_portb       ; ініціалізація регістра TRISB

            movwf             TRISB^0x80

            movlw             init_option      ; ініціалізація регістра OPTION

            movwf             OPTION_REG^80h

            clrf                  STATUS         ; вибір банку 0

            movlw            0x08

            movwf            PORTА

            movlw             init_intcon      ; ініціалізація регістра INTCON,    movwf INTCON            ; дозвіл переривань

            movwf            INTCON

            return

; основна програма

main

            call                  Init      ; ініціалізація мікроконтролера

            movlw            .18

            movwf            TMR0

m1       goto                m1

            end                  ; кінець програми

Алгоритм програми2:

-  Ініціалізуємо контролер. Настроюємо PORTB на вивід, RA3 – на ввід, дозволяємо переривання від таймера.

Похожие материалы

Информация о работе