Вивчення способів формування часових інтервалів різної тривалості, організації сторінкової пам'яті програм і даних

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

12 страниц (Word-файл)

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

МІНІСТЕРСТВО ОСВІТИ УКРАІНИ

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

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

Лабораторна робота №3

з мікроконтролерів та мікроЕОМ

тема:

«Формування часових інтервалів.

Сторінкова організація пам'яті»

Виконала:

Студентка групи КІТ-11б

Крашеніннікова Вікторія

Перевірили:

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

Даниленко О.Ф.

Харків 2004.

Тема:         Формування часових інтервалів. Сторінкова організація пам'яті

Мета:         Вивчити способи формування часових інтервалів різної тривалості,

організацію сторінкової пам'яті програм і даних.

Індивідуальне завдання:     

На виводі RB1 мікроконтролера сформувати імпульс тривалістю t1, реалізувати часову затримку заданої тривалості, на виводі RB1 мікроконтролера сформувати імпульс заданої тривалості, на виводі RB2 мікроконтролера сформувати імпульс тривалістю t2.

Реалізувати часову затримку заданої тривалості без використання таймера у вигляді підпрограми і розташувати її за адресою 0x123 у пам'яті програм, на виводі RB2 мікроконтролера, сформувати імпульс заданої тривалості. Виклик підпрограм робити явно, на виводі RB3 мікроконтролера сформувати імпульс тривалістю t3.

Реалізувати часову затримку заданої тривалості з використанням таймера у вигляді підпрограми і розташувати її за адресою 0x234 у пам'яті програм, на виводі RB3 мікроконтролера сформувати імпульс заданої тривалості.  Виклик підпрограм робити неявним чином.

Зауваження: Конфігурацію пристроїв мікроконтролера зробити без використання команд TRIS і OPTION, використовуючи спеціальні регістри банку 1.

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

Схема алгоритму головної підпрограми:

 


Рис.1 Схема алгоритму роботи головної підпрограми.

Схема алгоритму підпрограми d_2 :

 


Рис.2 Схема алгоритму роботи підпрограми d_2.

Схема алгоритму підпрограми d_3 :

 


Рис.3 Схема алгоритму роботи підпрограми d_3.

Порядок дій :

1.  Секція заголовку де описуються всі змінні.

2.  Далі йде робоча секція де:

2.1.         Налаштування портів, формування режиму роботи таймеру, вибір банку , настройка преддільника на роботу з таймером

2.2.  Формується „0” на першому розряді порту В.

2.3.  Затримка.

2.4.  Формується „1” на першому розряді порту В.

2.5.  Виклик підпрограми d_2 ( реаліз. Затримки в 32 цикла ):

2.5.1.  Формується „0” на другому розряді порту В.

2.5.2.  Ініціалізація рахівника.

2.5.3.  Цикл до обнуління рахівника.

2.5.4.  Формується „1” на другому розряді порту В.

2.6.  Виклик підпрограми d_3:

2.6.1.  Формування старших розрядів програмного рахівника.

2.6.2.  Формування молодших розрядів програмного рахівника.

2.6.3.  Затримка в 3000 циклів.

2.6.4.  Формується „0” на третьому розряді порту В.

2.6.5.  Скидання флагу переповнення від таймера.

2.6.6.  Формування константи для таймера.

2.6.7.  Аналіз флагу переповнення від таймера.

2.6.8.  Формується „1” на третьому розряді порту В.

3.  Секція завершення. Тут відбувається завершення програми.

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

list p=16f84               ; тип используемого ОМК

 #include <p16f84.inc>    ; подключение описаний регистров ОМК

COUNT  equ 0Ch             ;описание переменной

 org          00h          ; адрес программы в памяти программ

 bsf          STATUS, RP0  ; выбор банка 1

 clrf         TRISB        ; настройка порта В на вывод

 movlw        b'00000110'  ; настройка предделителя

 movwf        OPTION_REG   ;   на работу с таймером 1:128

 bcf          0             ; выбор банка 0

 movlw        0FFh         ; формирование '1'

 movwf        PORTB        ;   на выводах порта В

    d_1                   ; начало рабочей части программы

 bcf          PORTB, 1     ; формирование '0' на первом разряде порта В

 nop                       ; формирование задержки в 1 цикл

 bsf          PORTB, 1     ; формирование '1' на первом разряде порта В

 call         d_2           ; вызов подпрограммы d_2

 call         d_3           ; вызов подпрограммы d_3

 org          123h         ; подпрограмма реализации

    d_2                   ;   задержки в 35 цикла

 bcf          PORTB, 2     ; формирование '0' на втором разряде порта В

 movlw        11h          ; инициализация

 movwf        COUNT        ;   счетчика

repeat              ; цикл до

 decfsz      COUNT, 1     ;   обнуления

 goto         repeat       ;     счетчика

 bsf          PORTB, 2     ; формирование '1' на втором разряде порта В

 return                   ; возврат из подпрограммы

    d_3                   ; неявный вызов подпрограммы

 movlw        02h          ; формирование старших

 movwf        PCLATH       ;   разрядов программного счетчика

 movlw        34h          ; формирование младших

 movwf        PCL          ;   разрядов программного счетчика

 org          234h         ; подпрограмма реализации задержки в 3000 циклов

 bcf          PORTB, 3     ; формирование '0' на третьем разряде порта В

 bcf          INTCON, T0IF ; сброс флага переполнения от таймера

 movlw        0E9h         ; формирование

 movwf        TMR0         ;   константы для таймера

wait                       ; анализ

 btfss        INTCON, T0IF ;   флага

 goto         wait         ;     переполнения от таймера

 bsf          PORTB, 3     ; формирование '1' на третьем разряде порта В

 return                   ; возврат из подпрограммы

 end                       ; конец программы

Скорочений вміст файлу лістінгу програми:

MPASM 02.20 Released           Vika3.ASM   4-1-2004  20:30:46         PAGE  1

LOC  OBJECT CODE     LINE SOURCE TEXT

  VALUE

                      00001  list p=16f84           ; тип используемого ОМК

                      00002  #include <p16f84.inc>  ; подключение описаний регистров ОМК

                      00001         LIST

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

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