14
ЗМІСТ
1. Текст задачі з вихідними даними 3
2. Аналіз вихідного ТЗ та обґрунтування прийнятих рішень 4
2.1. Розбиття загальної задачі на під задачі 4
2.2. Вибір засобу реалізації кожної з підзадач 4
2.3. Обґрунтування вибору ОМК для вирішення задачі 5
3. Функціональна схема пристрою та її короткий опис 5
4. Алгоритм роботи МКП 7
5. Розподіл памяті даних та програм 9
5.1. Розподіл памяті даних 9
5.2. Розподіл памяті програм 9
6. Текст програми 10
7. Налагодження і перевірка працездатності програми 12
Висновок 14
Використана література 15
Варіант 16
Запропонуйте мікроконтролерний пристрій (МКП), на основі МК РІС 16С5х, який дозволяє здійснити опит двійкового датчика та, в залежності від його стану, або організувати процедуру "очікування події", або сформувати та видати керуючий сигнал у вигляді послідовності імпульсних сигналів з параметрами: tі=100tц, tп= 100tц, де tц- тривалість циклу виконання команди МК.
В відповіді привести: функціональну схему МКП (20 балів), алгоритм робочої програми (15 балів),вихідний текст програми (або її фрагмент) на Асемблері (15 балів).
При розробці МКП враховувати наступні додаткові вихідні дані:
1. Рівні вхідних сигналів - ТТЛ.
2. Генератор тактових сигналів - внутрішній RC.
3. Сигнал "Скидання" по ввімкненню живлення - внутрішній.
Рис. 3.1 Функціональна схема МКП
В схемі використано внутрішній RС генератор. Ним треба керувати шляхом підключення зовнішнього, по відношенню до контролера, RC-ланцюга (рис. 3.2).
Рис. 3.2 Підключення RC-ланцюга керування внутрішнім RС генератором
Для значень Rext, нижче 2.2 кОм, генератор може працювати нестабільно або не запускатися. При дуже великих значеннях Rext (наприклад, 1 МОМ), генератор стає чутливим до завад, витоків і вологості. Рекомендований діапазон значень Rext від 3 до 100 кОм. Хоча генератор дієздатний і при відсутності зовнішнього конденсатора (Сext = 0), для збільшення стабільності роботи рекомендується використовувати конденсатор ємністю понад 20 пФ. При малій ємності Сext, чи взагалі без цього конденсатора, частота генератора сильно залежить від монтажних ємностей. Розкид буде тим більший, чим більше величина резистора Rext (бо вплив струмів витоків на частоту RC генератора сильніший при більших значеннях Rext), і чим менша величина ємності Сext (бо в цьому випадку сильніше проявляється вплив монтажних ємностей). Тому ми вибираємо Rext рівним 100 кОм, а Сext рівним 20 пФ.
Згідно із технічним завданням МК має внутрішній сигнал "Скидання" по ввімкненню живлення, для цього достатньо просто обєднати входи Vdd і (рис. 3.1), при поданні напруги на вхід Vdd відбудеться автоматичне скидання мікро контролера.
На виході контролера RA0 формуються послідовності управляючих сигналів, що далі поступають на обєкт керування. Оскільки ТЗ не дає ніяких вимог щодо рівней вихідних сигналів, а необхідна затримка реалізується програмно, вони безпосередньо знімаються з виходу RA0 і поступають на обєкт керування.
4. АЛГОРИТМ РОБОТИ МКП
Згідно із окресленими під задачами загальний алгоритм роботи програми буде складатися із наступних блоків (рис. 4.1):
Рис. 4.1 Загальна схема алгоритму роботи МКП
Блок ініціалізації МК передбачає настроювання відповідних бітів портів А і В на ввід/вивід і інші конфігурування МК.
Блок чекання події означає читання даних з входу RB0, аналізу і переходу до наступного блоку якщо отримано 1, або повернення до читання знов доки не отримано 1. Це можна проілюструвати наступним фрагментом блок-схеми (рис. 4.2):
Рис. 4.2 Блок чекання події
Блок формування керуючої послідовності сигналів реалізує в циклі формування скидання і встановлення в одиницю на виводі RА0, в результаті чого ми отримали послідовність імпульсів необхідної тривалості (рис. 4.3), що задається блоком затримки.
Рис. 4.3 Блок формування керуючої послідовності сигналів
Блок затримки представляє собою цикл із інкрементом спеціальної змінної, що триває 100 тактів(рис 4.4).
Рис. 4.4 Блок затримки.
Таким чином по приходу сигналу «Скидання» контролер починає виконувати свою програму, що містить ініціалізацію МК, обробку вхідних даних і видачу керуючої послідовності сигналів. У безупинному циклі роботи МК зчитує біт RВ0 порту В (значення D), і якщо поступила 1 формує на виході керуючу послідовність сигналів. Потім усе повторюється.
В алгоритм роботи програми також введено блок перевірки ввімкнення живлення, за яким при вимкненому живленні алгоритм закінчується, хоча програмно він не реалізується. Це зроблено, щоб уникнути нескінченого циклу, оскільки дійсно при вимкненні живлення робота МК припиняється.
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 створити проект:
а) вибрати пункт головного меню ProjectNew 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 b11111110 ;0-й біт на вивід
TRІS PORTA ;запис в регистр trіsa значення аккум.
movlw b00000001 ;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 b11111110 ;0-й біт на вивід
0101 0005 00021 TRІS PORTA ;запис в регистр trіsa значення аккум.
0102 0C01 00022 movlw b00000001 ;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с.
Контрольная работа | Концепция информатизации Российской Федерации |
Контрольная работа | Причины агрессивного поведения. Методы работы с агрессивными детьми |
Контрольная работа | Алгоритм выбора и реализации предпринимательской идеи |
Контрольная работа | Системы управления взаимоотношения с клиентами |
Контрольная работа | Учет материальных затрат в бухгалтерском учете |
Контрольная работа | Геополитическое положение России |
Контрольная работа | Особенности вознаграждения работников в организации |
Контрольная работа | Виды запасов |
Контрольная работа | Психоанализ |
Контрольная работа | Экономико-географическая характеристика Печорского угольного бассейна 2 |
Контрольная работа | Государственный земельный контроль |
Контрольная работа | Ресурсная база коммерческого банка |
Контрольная работа | Черная и цветная металлургия мира |
Контрольная работа | Корпоративный имидж |
Контрольная работа | Разработка технологического процесса термообработки детали из стали марки 15Х |