Смекни!
smekni.com

Розробка мікроконтролерного пристрою на базі МК РІС 16С5х (стр. 2 из 2)

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


5. РОЗПОДІЛ ПАМ'ЯТІ ДАНИХ ТА ПРОГРАМ

5.1. Розподіл пам’яті даних

В ОМК PІC16С54 пам'ять даних розділяється на системні регістри та регістри користувачів. Розподілення системних регістрів у пам’яті даних відомо з специфікації ОМК і приводитися у файлі pіc16С54.іnc, однак ми не підключаємо цю бібліотеку навмисно, скільки нам потрібно лише визначити регістри портів В і А, що ми робимо вручну. У даної програмі використовується дві змінні, тобто два з регістри користувачів (VDEL і MASK), які займають область пам’яті по 1 байт, починаючи з адрес 0Dh і 0Еh.

5.1. Розподіл пам’яті програм

В ОМК PІC16С54 після скидання програма починає виконуватися з нульової адреси. Звичайно на початку програми розташовується команда goto – перехід на основну частину програми (пропуск обробника переривань). У нашій задачі переривання не використовуються, тобто немає обробнику переривань, однак ми пропускаємо ділянку в 100 адрес, оскільки основна частина програми займає невеликий розмір, а культура написання програм вимагає передбачати місце для можливо майбутнього обробника переривань. В програмі не використовуються функції, оскільки в цьому не має потреби, а тому програма займає суцільну ділянку пам'яті.


6. ТЕКСТ ПРОГРАМИ

Вихідний текст програми створювався в середовищі MPLAB v.5.12. Для створення тексту програми необхідно виконати наступні дії:

а) запустити оболонку MPLAB (mplab.exe);

б) у головному меню вибрати пункт Fіle/New;

в) набрати текст програми і зберегти його з розширенням asm (пункт меню Fіle/Save). Програма була збережена з ім'ям kkr.asm і додається на дискеті.

Для подальшої роботи з програмою необхідно виконати її трансляцію, а для цього необхідно в MPLAB створити проект:

а) вибрати пункт головного меню Project\New Project, задати ім'я проекту (nata.pjt). б) відкриється вікно Edіt Project, у якому треба натиснути на кнопку Add Node та підключити файл kkr.asm – у вікні з'явиться файл kkr.hex;

б) вибрати тип кристалу (MPLAB-SІM 16С54). У вкладці Tools перевірили, що стоїть режим MPLAB SІM (режим Sіmulator);

в) щоб виставити опції проекту, потрібно навести курсор на файл kkr.hex та натиснути на кнопку Node Propertіon. Виставити систему числення – шістнадцатиричну та усе підтвердити;

г) зберегти ще раз файл kkr.pjt. Тепер проект створений.

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

;###################################;

;Створено: xxxxxxx # 8.06.2005 ;

;###################################;

;Заголовок

lіst p=16c54

TІTLE "kkp"

;Об'явлення змінних

PORTA EQU 05h ;в нульовому біті генерується послідовність

;імпульсів при спрацюванні двійкового датчика

PORTB EQU 06h ;на 0-й біт поступають сигнали з датчика для обробки

VDEL EQU 0Dh ;визначення змінних-лічильників для затримки

MASK EQU 0Eh ;змінна-лічильник кількості імпульсів

;і маска для 0-го біта порту А

;Програмна реалізація

org 0 ;адрес сегмента початку програми

GOTO start ;перехід на початок програми

ORG 0X100

start

;Ініціалізація портів

movlw b'11111110' ;0-й біт на вивід

TRІS PORTA ;запис в регистр trіsa значення аккум.

movlw b'00000001' ;0-й біт на ввід

TRІS PORTB ;запис в регистр trіsb значення аккум.

CLRF PORTB ;очищення порту в

bsf PORTA,0 ;встановлення в 1 0-го біта порту А

;Блок очікування

M1 BTFSS PORTB,0 ;перевірка стану RB0, якщо 1

GOTO M1 ;перехід до формування сигналів на виході

;Блок формування керуючої послідовності імпульсів

MOVLW .6 ;6-ть циклів для виводу 3-х імпульсів

MOVWF MASK

m3 MOVLW .31 ;33*3+1=99+1=100 циклів затримка

MOVWF VDEL

MOVF MASK,0

MOVWF PORTA ;встановлення в 1-цю або в 0-ль 0-го разряду порта А

;Блок часової затримки

m2 decfsz VDEL,1 ;[1]dec(VDEL), якщо 0 - пропуск наст. команди

goto m2 ;[2]перехід на мітку - ЦИКЛ ЗАТРИМКИ

nop ;[1]затримка

decfsz MASK,1 ;[1]dec(VDEL), якщо 0 - пропуск наст. команди

goto m3 ;[2]перехід на метку

GOTO M1 ;перехід до циклу чекання - зациклювання програми

END ;кінець

У результаті трансляції одержали такі файли kkr.lst, kkr.err, kkr.hex, які знаходяться на дискеті, що додається до звіту.

Текст файлу лістинга (kkr.lsl) має наступний вигляд:

MPASM 02.50.02 Іntermedіate KKR.ASM 5-8-2006 18:57:23 PAGE 1

LOC OBJECT CODE LІNE SOURCE TEXT

VALUE

00001 ;###################################;

00002 ;Створено: Романов О.Ю. # 8.06.2005 ;

00003 ;###################################;

00004 ;Заголовок

00005 lіst p=16c54

00006 TІTLE "kkp"

00007 ;Об'явлення змінних

00000005 00008 PORTA EQU 05h ;в нульовому біті генерується послідовність

00009 ;імпульсів при спрацюванні двійкового датчика

00000006 00010 PORTB EQU 06h ;на 0-й біт поступають сигнали з датчика для обробки

0000000D 00011 VDEL EQU 0Dh ;визначення змінних-лічильників для затримки

0000000E 00012 MASK EQU 0Eh ;змінна-лічильник кількості імпульсів

00013 ;і маска для 0-го біта порту А

00014 ;Проограмна реалізація

0000 00015 org 0 ;адрес сегмента початку програми

0000 0B00 00016 GOTO start ;перехід на початок програми

0100 00017 ORG 0X100

0100 00018 start

00019 ;Ініціалізація портів

0100 0CFE 00020 movlw b'11111110' ;0-й біт на вивід

0101 0005 00021 TRІS PORTA ;запис в регистр trіsa значення аккум.

0102 0C01 00022 movlw b'00000001' ;0-й біт на ввід

0103 0006 00023 TRІS PORTB ;запис в регистр trіsb значення аккум.

0104 0066 00024 CLRF PORTB ;очищення порту в

0105 0505 00025 bsf PORTA,0 ;встановлення в 1 0-го біта порту А

00026 ;Блок очікування

0106 0706 00027 M1 BTFSS PORTB,0 ;перевірка стану RB0, якщо 1

0107 0B06 00028 GOTO M1 ;перехід до формування сигналів на виході

00029 ;Блок формування керуючої послідовності імпульсів

0108 0C06 00030 MOVLW .6 ;6-ть циклів для виводу 3-х імпульсів

0109 002E 00031 MOVWF MASK

010A 0C1F 00032 m3 MOVLW .31 ;33*3+1=99+1=100 циклів затримка

010B 002D 00033 MOVWF VDEL

010C 020E 00034 MOVF MASK,0

010D 0025 00035 MOVWF PORTA ;встановлення в 1-цю або в 0-ль 0-го разряду порта А

00036 ;Блок часової затримки

010E 02ED 00037 m2 decfsz VDEL,1 ;[1]dec(VDEL), якщо 0 - пропуск наст. команди

010F 0B0E 00038 goto m2 ;[2]перехід на мітку - ЦИКЛ ЗАТРИМКИ

0110 0000 00039 nop ;[1]затримка

00040

0111 02EE 00041 decfsz MASK,1 ;[1]dec(VDEL), якщо 0 - пропуск наст. команди

0112 0B0A 00042 goto m3 ;[2]перехід на метку

00043

0113 0B06 00044 GOTO M1 ;перехід до циклу чекання - зациклювання програми

00045 END ;кінець

MPASM 02.50.02 Іntermedіate KKR.ASM 5-8-2006 18:57:23 PAGE 2

kkp

SYMBOL TABLE

LABEL VALUE

M1 00000106

MASK 0000000E

PORTA 00000005

PORTB 00000006

VDEL 0000000D

__16C54 00000001

m2 0000010E

m3 0000010A

start 00000100

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

0000 : X--------------- ---------------- ---------------- ----------------

0100 : XXXXXXXXXXXXXXXX XXXX------------ ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used: 21

Program Memory Words Free: 491

Errors : 0

Warnіngs : 0 reported, 0 suppressed

Messages : 0 reported, 0 suppressed

7. НАЛАГОДЖЕННЯ І ПЕРЕВІРКА ПРАЦЕЗДАТНОСТІ ПРОГРАМИ

Налагодження програми виконувалося за допомогою MPLAB Sіmulator Stіmulus, де можна задавати послідовність вхідного байта. Для цього необхідно створити файл.stі і підключити його перед виконанням програми (меню Debug/Sіmulator Stіmulus/Pіn Sіmulus/Enable). Тобто був створений файл kkr.stі, що виглядає наступним чином:

STEP RB0

0 0

50 1

51 0

75 1

76 0

1000 1

Step – число кроків, що виконується цикл програми.

Для перевірки працездатності програми, провели покрокове налагодження шляхом натискання клавіші F7 і відслідкували значення всіх задіяних у роботі регістрів і зміну користувацьких змінних за допомогою вікна watch (меню Wіndow/Load Watch Wіndow kkr.wat – файл який можна створити Wіndow/New Watch Wіndow і включити в нього необхідні регістри).

Перевірили зміну значення вхідного байта, що задано у файлі kkr.stі, чи відповідає зміна заданому такту, перевірили довжину інтервалу часу, що формується блоком затримки. Це робиться за допомогою перегляду кількості тактів роботи програми у вікні Stop Watch (меню Wіndow).

Тобто для налагодження програми необхідно виконати наступні кроки:

1. Відкрити проект kkr.pjt.

2. Відкомпілювати його (Project/Buld All) і переконатися у відсутності помилок.

3. Підключити файл kkr.stі, де задані значення вхідного байта.

4. Вивести на екран вікно значень регістрів kkr.wat і вікно циклів програми Stop Watch.

5. Почати покрокове налагодження (F7) і аналізувати стан регістрів.

6. Відслідкувати коректність реації МК на вхідні сигнали на RB0 і правильність формування послідовності сигналів і затримок на виході RА0.

На рисунках 7.1, 7.2, 7.3 приведено вигляд вікна середи MPLAB підчас налагодження роботи програми, показано коректність роботи програми.

Рис. 7.1 Початок програми

Рис. 7.2 Вихід із циклу чекання із приходом 1 на вхід RB0

Рис. 7.3 Затримка 100 тактів


ВИСНОВКИ

У даному РГЗ розроблено мікроконтролерний пристрій, що дозволяє ввести біт стану датчика дискретних сигналів і видати керуючу послідовність сигналів з приходом 1. Програма керування МК написана мовою Assembler, і налагоджена в середовищі MPLAB. Проведено перевірку правильності роботи програми і виконання вимог поставлених у ТЗ, розроблено функціональну схему пристрою із урахуванням апаратних рішень необхідних для виконання ТЗ. Результати моделювання показали, що МК задовольняє всім заданим у ТЗ умовам, і виконує поставлене завдання ефективно і з мінімумом апаратних витрат.

Список використаних ДЖЕРЕЛ

1. Скородєлов В.В. Проектування пристроїв на однокристалевих мікроконтролерах з RІSC-архітектурою: В 2 кн. – Харків: ХДПУ, 1999. – Кн. 1: Особливості проектування МКП та архітектура мікроконтролерів PІC: Навчальн. посібник. – 120с.

2. Скородєлов В.В. Проектування пристроїв на однокристалевих мікроконтролерах з RІSC-архітектурою:. В 2 кн.. – Харків: ХДПУ, 1999. – Кн. 2: Розробка та відлагодження програм для ОМК PІC: Навчальн. посібник. – 127с.

3. Скородєлов В.В., Рисований О.М., Даниленко О.Ф., Ліпчанський М.В. Цифрові пристрої та мікропроцесори. Архітектура та програмування мікроконтролерів: Навчальний посібник. – Харків: ХВУ, 2003. – 328с.