Міністерство освіти і науки України
Національний технічний Університет “ХПІ”
“ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ”
Кафедра “Обчислювальної техніки та програмування”
Звіт з лабораторної роботи №4
з курсу “Мікроконтролери та мікро ЕОМ”
Тема: “Організація і використання
пам’яті даних”
Богачов О. С.
Перивірив:
Ліпчанський М. В.
Скородєлов В.В.
Лабораторна робота №4
Тема: “Організація і використання пам’яті даних.”
Мета роботи: Вивчити сторінкову організацію пам’яті даних. Навчитися використовувати режим непрямої адресації комірок пам’яті даних (EEPROM).
Індивідуальні завдання:
1. Використовуючи метод прямої адресації записати в пам’ть даних мікроконтролера PIC16F84 своє прізвище, ім’я та по батькові.
2. Використовуючи метод непрямої адресації переписати анкетні дані з пам’яті даних в енергонезалежну пам’ять (EEPROM).
3. В останню комірку EEPROM записати максимальне значення з всіх інших комірок пам’яті.
4. Визначити час запису одного байта в EEPROM.
5. Визначити можливість читання даних з EEPROM відразу після початку циклу запису.
Хід роботи:
Перед тим як розробити текст програми, яка буде виконувати всі дії які необхідні для виконання індивідуального завдання, розробимо алгоритм виконання цього завдання:
Алгоритм виконання завдання:
1. Використовуючи метод прямої адресації записуємо в пам’ть даних мікроконтролера PIC16F84 своє прізвище, ім’я та по батькові.
Для цього обераємо, наприклад, комірку пам’яті з адресою 10h та за дапомогою регістру W (через нього) записуємо у неї код першої букви призвища, так само робимо і для інших букв, записуючи їх підряд у наступні комірки пам’яті, тобто 11h, 12h і так далі до кінця анкетних даних.
2. Використовуючи метод непрямої адресації переписуємо анкетні дані з пам’яті даних в енергонезалежну пам’ять (EEPROM).
Для цього у регістр FSR через регістр W записуємо початкову адресу з якої починається у пам’ті даних анкетні дані, а саме номер комірки пам’яті з адресою 10h, і далі у циклі, (тривалість якого буде дорівнювати кількості букв у анкетних даних) робимо читання з комірки пам’яті даних (банк 0), а потім запис у енергонезалежну пам’ять (банк 1) відповідно встановлюючи та скидаючи для цього необхідні біти регістрів STATUS(для вибору необхідного банку), INTCON(для заборони преривань) та EECON1(для запису у EEPROM). При цьому запис у енергонезалежну пам’ять виконується обов'язковою послідовністю команд.
3. В останню комірку EEPROM записати максимальне значення з всіх інших комірок пам’яті.
Для цього в циклі (який буде тривати 3Eh раз, а саме k-1, де k - кількість комірок у EEPROM) будемо читати підряд значення всіх комірок пам’яті EEPROM та шляхом зрівння, знайдемо максимальне значення з усіх комірок – за наступним алгоритмом:
1) Оберемо у пам’яті даних, наприклад, комірку пам’яті з намером 0Ch (у якій після пошуку буде знаходитися максимальне значення з усіх комірок) та запишемо у неї число 0FFh.
2) Занесемо у FSR через регістр W значення 1h для того, щоб він вказував на першу комірку пам’яті EEPROM.
3) Заносимо значення FSR через регістр W у регістр EEADR (банк 0) тобто вказуємо з якою коміркою пам’яті EEPROM будемо працювати; обераємо банк 1 та читаємо у EEDATA значення комірки та пересилаємо його звідти у регістр W.
4) Вичитаємо з обраної комірки пам’яті з намером 0Ch значення регістру W та результат записуємо у регістр W. Далі перевіряємо значення біту переносу регістру STATUS: тобто якщо він встановлений то це означає, що числове значення яке ми вичитали з обраної комірки пам’яті більше ніж числове значення самої обраної комірки пам’яті, тому буде зроблено перехід на початок циклу для читання наступної комірки пам’яті EEPROM, але якщо біт переносу скинутий то це свідчить проте, що числове значення яке ми вичитали з обраної комірки пам’яті менше ніж числове значення самої обраної комірки пам’яті (тобто при вичитанні не трапився перенос старшого розряду числа через переповнення розрядної сітки), тому буде зроблено запис значення регістру W у обрану комірку пам’яті з намером 0Ch та далі перехід на початок циклу для читання наступної комірки пам’яті EEPROM. І так до кінця циклу.
5) В результаті після закінчення циклу у обраної комірки пам’яті з намером 0Ch буде знаходитися максимальне значення з усіх комірок пам’яті EEPROM.
4. В останню комірку EEPROM записуемо максимальне значення з всіх інших комірок пам’яті.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.