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

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

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

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

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

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

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

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

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

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

Виконав:

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

Богачов О. С.

Перивірив:

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

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

Харків 2008

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

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

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

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

1)  На виході RB1 МК сформувати імпульс тривалістю t1=4.

1.1  Реалізувати часову затримку заданої тривалості.

1.2  Спираючи на знання, отримані в л/р №1 на виході RB1 МК сформувати імпульс заданої тривалості.

2)  На виході RB2 МК сформувати імпульс тривалістю t2=20.

2.1 Реалізувати часову затримку заданої тривалості без використання таймера у виді підпрограми і розмістити її за адресою 0x123 у пам'яті програм.

2.2 Спираючи на знання, отримані в л/р №1 на виході RB2 МК сформувати імпульс заданої тривалості. Виклик підпрограми здійснювати явно.

3)  На виході RB3 МК сформувати імпульс тривалістю t3= 33600.

3.1 Реалізувати часову затримку заданої тривалості з використанням таймера у виді підпрограми і розмістити її за адресою 0x234 у пам'яті програм.

3.2 Спираючи на знання, отримані в л/р №1 на виході RB3 МК сформувати імпульс заданої тривалості. Виклик підпрограми здійснювати не явно.

t1 = [(N mod 5) + 1] · tц, де N – номер студента за списком журналу групи, tц – тривалість командного циклу.

 t2 = (C + I · N) · tц, де C – номер групи, I – індекс групи, N – номер студента за списком журналу групи, tц – тривалість командного циклу.

 t3 = 20 · C · I · N · tц, де C – номер групи, I – індекс групи, N – номер студента за списком журналу групи, tц – тривалість командного циклу.

 Для парних номерів за списком журналу групи формувати позитивний імпульс на виводах мікроконтролера (_éù_), а для непарних номерів – негативний імпульс (ù_é).

Хід виконання роботи:

1.  Запуск пакета MPLAB

2.  File -> New – створення нового вікна

3.  Набір тексту програми (приведений нижче)

4.  Options -> Development mode – вибрати тип Processor – 16F84A

5.  Project -> Build Node – компіляція

6.  Window -> Special Function Register, ... – вибрати необхідні для перегляду результату вікна

7.  Window -> Stopwatch... – для спостереження за тривалістю імпульсу

8.  Скидання (F6)

9.  Трасування програми (F7)

Хід роботи:

Затримку реалізовано за допомогою пустих команд nop але за рахунок  часу потрібного на виконання команди сбросу сигналу на rb1 nop буде на 1 менше ніж час затримки у циклах.

 Одна затримка на декремент лічильника , друга на встановленя константи лічильника таймера(очікування переповнення таймеру та перехід у цикл).

Явний виклик процедури – сall мітка підпрограми.Програма по заданій адресі пишеться за допомогою org<зсув>.

Неявний виклик підпрограми виконується у 4 такта : старша адреса у регістр PC\ATH , молодша адреса в PCL і перехід.Поверненя з підпрограмми – RETURN .

АЛГОРИТМ ВИКОНАННЯ ЗАВДАННЯ


Рис.1. Алгоритм виконання завдання

Текст програми має наступний вигляд:

      list   p=16C84

      #include P16C84.INC

MEM    EQU   0x1F   ; адреса регістру у пам'яті даних

VDEL   EQU   0x0c   ; t2

CDEL   EQU   0x02   ; t2

EDEL   EQU   0x0d   ; t3

DDEL   EQU   0x69   ; t3

FDEL   EQU   0x02   ; t3

main

                    ; вводу/виводу

      movlw  b'11111111' 

      tris   PORTB  ; конфігурування порту B

      movlw  b'00000000' 

      tris   PORTA  ; конфігурування порту A       

;     …            ; продовження програми

      bsf    PORTB, 1    

      nop

      nop

      nop

      nop

      bcf    PORTB, 1

      bsf    PORTB, 1    

      call proc2

      bcf    PORTB, 1

      bsf    PORTB, 1    

      call proc3

      bcf    PORTB, 1

proc2        ; підпрограма proc2

      movlw  0x01   ; запис старших розрядів

      movwf  PCLATH ; у регістр PCLATH

      movlw  0x23   ; запис молодших розрядів

      movwf  PCL    ; у регістр PCL і перехід за адресою 0x123

      ;…

      org    0x123  ; розміщення підпрограми з адреси 0x123

      movlw  CDEL   ;[1] запис константи

      movwf  VDEL   ;[1] у лічильник

m1    decfsz VDEL, 1      ;[1] зменшення значення лічильника

                    ;[2] якщо VDEL = 0 пропуск наступної команди

      goto   m1     ;[2] перехід, якщо VDEL ? 0

      ;…           ;    продовження програми

      return       ; повернення з підпрограми в основну програму

proc3        ; підпрограма proc3

      movlw  0x02   ; запис старших розрядів

      movwf  PCLATH ; у регістр PCLATH

      movlw  0x34   ; запис молодших розрядів

      movwf  PCL    ; у регістр PCL і перехід за адресою 0x234

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

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