Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
knigaEMTmikroprotsesori.doc
Скачиваний:
16
Добавлен:
10.03.2016
Размер:
1.33 Mб
Скачать

24.1. Блок-схема алгоритму обміну з eeprom

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

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

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

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

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

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

          6. Здійснити програмування мікроконтролера, натиснувши на піктограму з червоною блискавкою. Після завершення програмування переключити перемикач на режим роботи. Увімкнути на мить вимикач 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]