КАТЕГОРИИ: Архитектура-(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 розміщені такі біти керування:
Біти 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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |