Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Використання енергонезалежної пам'яті даних




Мета роботи: засвоїти правила використання енергонезалежної пам'яті даних

 

ТЕОРЕТИЧНІ ВІДОМОСТІ

Досягненням сучасних електронних технологій є EEPROM пам'ять, що зберігає вміст при виключенні живлення. При цьому є можливість не тільки читати вміст EEPROM, а й записувати туди дані як при програмуванні, так і під час роботи контролера. У мікросхемах PIC16F628 вбудовано 128 байтів такого виду пам'яті.

При роботі з EEPROM пам'яттю в мікроконтролерах PIC16FXXX

використовуються регістри оперативної пам'яті:

EEDATA – регістр обміну даними з EEPROM пам'яттю;

EEADR – зберігає адресу комірки EEPROM, до якої здійснюється звертання;

EECON1 – регістр керування обміном з EEPROM пам'яттю;

EECON2 – фізично відсутній регістр, що використовується виключно як службовий регістр при запису в EEPROM.

У регістрі EECON1 розміщені такі біти керування:

               
X X X EEIF WRERR WREN WR RD

Біти 5-7 не використовуються;

біт 4 EEIF – ознака (Flag) переривання після закінчення запису:

1 – запис завершено (скидати програмно),

0 – запис не починався або не закінчено;

біт 3 WRERR – ознака помилки запису в EEPROM:

1 – запис попередньо перервано,

0 – запис здійснено успішно;

біт 2 WREN – дозвіл запису в EEPROM:

1 – запис дозволений,

0 – запис заборонений;

біт 1 WR – біт керування записом в EEPROM:

1 – почати цикл запису (встановлюється програмно, скидається тільки апаратно після завершення запису),

0 – цикл запису закінчено;

біт 0 RD – біт керування читанням з EEPROM:

1 – почати читання (встановлюється програмно, скидається тільки апаратно після завершення читання),

0 – читання завершено.

Перед записом в EEPROM в EEADR слід занести адресу потрібної комірки EEPROM, а в EEDATA – байт даних. Щоб не допустити випадковий запис у EEPROM передбачено здійснювати його після встановлення біта WREN = 1 і послідовного надсилання в EECON2 коду h'55', потім h'AA' (що нагадує пароль, без якого не можна виконати запис). Далі слід встановити WR = 1. Запис в EEPROM триває 4-8 мс. Після завершення запису біт WR автоматично скидається в 0. Не можна починати запис нового байта поки WR = 1.

Читання з EEPROM пам'яті виконується простіше. В EEADR слід занести адресу EEPROM і встановити в EECON1 біт RD в 1. Дані зразу після цього можуть бути отримані з регістра EEDATA.

На рис. 24.1 зображено алгоритм, який передбачає опитування вимикачів RA0, RA4. Якщо включити на мить RA0, виконається підрахунок суми заданої кількості чисел з EEPROM і обчислення середнього з округленням результату до цілого та запис його в EEPROM. Воно буде збережено і при виключеному живленні.

Якщо після включення живлення ввімкнути на мить вимикач RA4, середнє значення, записане в EEPROM, порівнюється з двійковим числом, набраним попередньо на вимикачах порту В. Якщо значення збігаються, засвітиться світлодіод RA3, якщо ні – RA1.

 

ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ

1. У середовищі MPLAB створити у папці D:\ 1Work новий проект з іменем 24ГБ (Г – номер групи, Б – номер бригади), обравши у меню Project-New Project.

2. У вікні Edit Project додати новий файл на асемблері 24ГБ.asm (Add Node – додати вузол). Після повернення до вікна Edit Project нижче hex-файла з'явиться файл з розширенням.asm. Після появи вікна середовища MPLAB IDE створити цей текстовий файл з розширенням.asm (File – New), записавши його у папку D:\1Work (File - Save As …).


3.


3. Зарисувати алгоритм і ввести текст програми на асемблері.

4. Записати програму на диск (File – Save).

5. Виконати компіляцію програми (Project – Make Project або кнопка у вигляді зеленої лійки). Після цього на екрані з'являється вікно результатів компіляції (Build Results). Ознайомитись з повідомленнями про можливі помилки (error) і виправити їх. Потім повернутись до п. 4, 5, поки не буде видано повідомлення "Build completed successfully" (компіляцію завершено успішно).

6. Розрахувати в зошиті середнє значення масиву з округленням до найближчого цілого і перевести його у двійкову систему.

7. Підключити лабораторну установку до LPT1 порту комп'ютера і джерела живлення. Встановити перемикач режимів у положення "Програмування" (при цьому світиться світлодіод Prog), а всі вимикачі, що підключені до портів, вимкнути.

8. Згорнути вікно MPLAB і на робочому столі зробити подвійний клік на синій піктограмі програматора "ProPic2". Перевірити у вікні ProPic2, чи вірно задано тип мікроконтролера (має бути PIC16F628). Стандартним шляхом відкрити створений при компіляції hex файл з ім'ям вашого проекту.

9. Здійснити програмування мікроконтролера, натиснувши на піктограму з червоною блискавкою. Після завершення програмування переключити перемикач на режим роботи. Увімкнути на мить вимикач RA0. При цьому виконається підрахунок середнього, його запам'ятовування в EEPROM і сигналізація про завершення (горить світлодіод RA2).

 

LIST P=16F628

#INCLUDE "P16F628.INC"

;директиву __CONFIG набрати в одному рядку,

;закінчуючи словом _LVP_OFF

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _MCLRE_ON & _LVP_OFF

 

HI EQU h'A0';старший байт суми

LO EQU h'A2';молодший байт суми

FIRST EQU h'12';адреса початку масиву даних

COUNT EQU h'70';лічильник в області рентгенівської пам'яті

_N EQU h'08';кількість даних

org h'2100'+FIRST;область EEPROM пам'яті

radix dec;директива встановлення десяткової

;системи за замовчуванням

; далі у директиві DE (запис в EEPROM при програмуванні);ввести у десятковій системі 8 чисел

;розрахованих за формулами:

;для і=1...7 х(і)=2×і×№бригади - №групи,

;для і=8 х(8)=125 - 10×№бригади

;замінити наведені далі числа даними свого варіанта

DE 5,11,17,23,29,35,41,105

radix hex;далі шістнадцяткова система за

; замовчуванням

org h'000';Після включення живлення і скидання(РС)=0

nop

goto main;Безумовний перехід

intrrpt: org h'4';переривання не використовуються

retfie

 

main: movlw 0x07;Відключити компаратори і включити

movwf CMCON;біти порту А у дискретний режим

 

bsf STATUS, RP0;Обрати банк регістрів 1

movlw b'00010001';\порт А: біти 4, 0 - на введення

movwf TRISA;\інші - на виведення

movlw h'FF';/Усі біти порту В -

movwf TRISB;/на введення

bcf STATUS, RP0;Обрати банк регістрів 0

clrf PORTA;очистити порт A (вимкнути світлодіоди)

 

OPYTTUMB: btfsc PORTA, 4;якщо RA4 = 0, пропустити команду

goto PEREVREZ;інакше перейти на мітку PEREVREZ

btfss PORTA, 0;якщо RA0 = 0, пропустити команду

goto OPYTTUMB;інакше – повторити опитування

 

bsf STATUS, RP0; Обрати банк регістрів 1

clrf LO;очищення

clrf HI;накопичувача суми

movlw _N;кількість елементів масиву -

movwf COUNT;в лічильник COUNT

movlw FIRST;адреса першого

movwf EEADR; доданка - в EEADR

Next: bsf EECON1, RD;команда читання з EEPROM

movf EEDATA, w;отримане число – в W

addwf LO, f;\ Накопичення

clrw

btfsc EEDATA, 7

movlw h'FF'

btfsc STATUS, C;\

incf HI, f;\ суми в HI:LO

addwf HI,f

incf EEADR, f;перейти до наступної комірки EEPROM

decfsz COUNT, f;якщо додано всі дані, пропустити

goto Next;інакше – перейти до наступного доданка

rrf HI, f;/ Зсув суми в HI:LO

rrf LO, f;/

rrf HI, f;/ на 3 розряди вправо

rrf LO, f;/

rrf HI, f;/

rrf LO, f;/ (тобто ділення на 8)

btfsc STATUS, C;округлення

incf LO, f;до цілого

movf LO, W;підготовка

movwf EEDATA;до запису

bsf EECON1, WREN;

bcf INTCON, GIE;середнього

movlw h'55';

movwf EECON2; значення

movlw h'AA';

movwf EECON2;в EEPROM

bsf EECON1, WR;команда запису в EEPROM

bsf INTCON, GIE; глобальний дозвіл переривань

bcf STATUS, RP0; Обрати банк регістрів 0

bsf PORTA,2;сигналізація запису в EEPROM

Stop: goto Stop; зациклення

 

PEREVREZ: bsf STATUS, RP0; Обрати банк регістрів 1

movlw FIRST + _N;/адресу розміщення середнього

movwf EEADR;/в EEPROM занести в EEADR

bsf EECON1, RD;команда читання з EEPROM

movf EEDATA, w;отримане значення – в W

bcf STATUS, RP0; Обрати банк регістрів 0

xorwf PORTB, w;порівняння коду вимикачів з W

btfss STATUS, Z;якщо вони однакові, пропустити

goto false;якщо ні - перейти до сигналізації помилки

true: bsf PORTA, 3;сигнал про вірний результат

goto Stop; зациклення

false: bsf PORTA, 1; сигнал про помилку

goto Stop; зациклення

 

end

 

Виключити живлення (інформація в EEPROM зберігається) і знову ввімкнути. Встановити вимикачами RB7-RB0 двійковий код розрахованого середнього (RB7 – старший розряд). Увімкнути на мить вимикач RA4. Якщо світиться світлодіод RA3, розрахункове значення збіглося з отриманим мікроконтролером. Якщо горить RA1, зроблено помилку, потрібно перевірити власні розрахунки, текст програми, виправити помилки і повторити дії п.п. 4-11.

 

ЗМІСТ ЗВІТУ

Звіт має містити: назву та мету лабораторної роботи, скорочений порядок виконання лабораторної роботи, алгоритм і програму з коментарем, перелік імен регістрів спеціального призначення, що використовуються у дослідженій програмі, формат та опис дії кожного виду команд, що вперше зустрічаються у дослідженій програмі мікроконтролера, розрахунки і результати спостережень.

 

КОНТРОЛЬНІ ЗАПИТАННЯ

1. Які особливості EEPROM пам'яті?

2. Які регістри спеціального призначення необхідно використати при обміні даними з EEPROM?

3. У чому особливості запису даних в EEPROM?

4. Як виконати читання даних з EEPROM?

5. Як організуються цикли?

6. В якому банку знаходяться регістри, що обслуговують обмін з EEPROM пам'яттю?

 

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




Поделиться с друзьями:


Дата добавления: 2015-06-25; Просмотров: 453; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.