Вивчення режимів роботи портів вводу/виводу на прикладі мікроконтролера PIC16C56. Робота з пакетом MPLAB, страница 2

            movwf             PORTA                                  ; Вивід старшої частини у порт А з регістру W

            nop

;  Секція завершення:

 End

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

MPASM 02.20 Released                1.INC   2-11-2004  15:59:58         PAGE  1

LOC  OBJECT CODE     LINE SOURCE TEXT

  VALUE

  00000005          00001 PORTA EQU 0x05

  00000006          00002 PORTB EQU 0X06

  00000025          00003 MEM EQU 0x9

                      ...

Warning[203]: Found opcode in column 1. (movlw)

0000 0C0F           00007 movlw b'0000'

Warning[203]: Found opcode in column 1. (tris)

0001 0006           00008 tris PORTА

                      ...

Warning[203]: Found opcode in column 1. (movlw)

0002 0C03           00011 movlw b'1011001'

Warning[203]: Found opcode in column 1. (tris)

0003 0005           00012 tris PORTВ

                      ...

Warning[203]: Found opcode in column 1. (movf)

0004 0206           00015 movf PORTB, 0

Warning[203]: Found opcode in column 1. (movwf)

Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.

0005 0025           000161 movwf MEM

                      ...

Warning[203]: Found opcode in column 1. (movwf)

0006 0025           00019 movwf PORTA

                      ...

Warning[203]: Found opcode in column 1. (swapf)

Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.

0007 0385           00022 swapf MEM, 0

Warning[203]: Found opcode in column 1. (movwf)

0008 0025           00023 movwf PORTA

                    00024  end

MPASM 02.20 Released                1.INC   2-11-2004  15:59:58         PAGE  2

SYMBOL TABLE

  LABEL                             VALUE

MEM                               00000009

PORTA                             00000005

PORTB                             00000006

__16C56                           00000001

MEMORY USAGE MAP ('X' = Used,  '-' = Unused)

0000 : XXXXXXXXX------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used:     9

Program Memory Words Free:  1015

Errors   :     0

Warnings :     9 reported,     0 suppressed

Messages :     2 reported,     0 suppressed

Послідовність дій при тестуванні:

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

2.Створюю нове вікно, набираю текст програми, зберігаю його.(Vika2.asm, Vika2_2.asm).

3. Захожу в опції та обираю тип мікро контролера: Options –> Development Mode – вибір типу мікроконтролера (PIC16F84) і режиму (Simulator).

4. Компілюю мою програму: Project –> Build Node.

5. Якщо є помилки , то вони зберігаються у файлі лістінгу або у файлі помилок (lst, err). Виправляю помилки.

6. Debug –> Simulator Stimulus –> Clock Stimulus ... – задаю зовнішні сигнали на входи портів вводу/виводу.

7. Window –> Special Function Registers – відкриття вікна регістрів спеціального призначення.

В ході програми я можу спостерігати за станом регістрів спеціального призначення за допомогою цього вікна.

8. Debug –> Run –> Reset – скидання мікроконтролера.

9. Debug –> Run –> Step – покрокове виконання програми.

10. File –> Exit – вихід із програми.

Методика тестування:

В ході лабораторної роботи я повинна увести через порт В число М = 89, записати його в комірку пам`яті , потім вивести це число через порт А.

          Після написання тексту програми та його компіляції я можу спостерігати покроково за роботою програми за допомогою вікна Special Function Registers:

Рис. 3 Вікно Special Function Registers.

Після декількох кроків виконання (Debug –> Run –> Step) я можу побачити наступне:

тобто: порт А сконфігуровано на вивід, а в потр В введено число 89.

Після чергового кроку ми можемо спостерігати як інформація з порту В переписується в регістр W:

В кінці роботи програми вікно Special Function Registers має наступний вигляд:

Рис. 4 Вікно Special Function Registers після виконання програми.

Результати виконання програми:

          В результаті виконання програми відбувся запис поданого числа у порт В. Потім це число було переписане у задану комірку пам`яті (№ 9). Потім в ході програми це ж число потетрадно (спочатку - молодша, потім - старша) через робочий регістр W було надіслане у порт А (на вивід).

Висновки: В результаті лабораторної роботи я ознайомилася зі структурою портів

вводу/виводу, навчилася програмувати порти на ввод, вивід, також навчилася

 записувати у порт подане число.

Також у ході лабораторної роботи я навчилася деяким навичка програмування мікро контролерів серії microchip. Я вивчила такі операції : конфігурування, пересилання, обміну.

В результаті роботи я дізналася, що пересилання виконується не напряму, а через робочий регістр W.