Для цього у регістр W заносимо знайдене максимальне значення з усіх комірок пам’яті EEPROM яке знаходиться у обраної комірки пам’яті з намером 0Ch,(банк 0) та з нього у регістр EEDATA у регістр EEADR заносимо адресу останньої комірки пам’яті EEPROM 3Fh у яку будемо записувати знайдене максимальне значення та вибравши банк 1, виконуючи обов’язкову послідовність команд записуємо це мінімальне значення у останню комірку пам’яті EEPROM.
5. Визначити час запису одного байта в EEPROM можна буде під час покрокового виконання програми шляхом вичитання кільості нарахованих тактів до початку циклу запису одного байта в EEPROM та після його закінчення.
6. Визначити можливість читання даних з EEPROM відразу після початку циклу запису можна буде (також під час покрокового виконання програми) шляхом виконання команд читання даних з EEPROM під час виконання циклу запису даних у EEPROM.
Розобивши алгоритм виконання завдання, напишемо текст програми, яка буде працювати за цим алгоритмом:
Текст програми:
list p=16f84
#include p16f84.inc ;подключение библиотеки
kol EQU .12
name EQU 0x10 ;ячейка памяти с которой начинаются фамилия и имя
adr EQU 0x0c ;ячейка памяти в которой будет храниться минимальное значение
;из всех ячеек памяти EEPROM
org 0 ;адрес сегмента размещения начала программы
main
call init
movlw .12
movwf kol
call proc1
call proc2
goto main ;зацикливание основной программы
init movlw 'B' ;процедура которая выполняет методом прямой адрессации
movwf name ;запись в память данных фамилию и имя
movlw 'o'
movwf name+1
movlw 'g'
movwf name+2
movlw 'a'
movwf name+3
movlw 'c'
movwf name+4
movlw 'h'
movwf name+5
movlw 'e'
movwf name+6
movlw 'v'
movwf name+7
movlw ' '
movwf name+8
movlw 'A'
movwf name+9
movlw ' '
movwf name+0x0a
movlw 'S'
movwf name+0x0b
return
proc1 movlw 0x10 ;процедура которая виполняет методом косвенной адрессации
movwf FSR ;переписсывание анкетних даных из памяти данных в
m1 bcf STATUS,RP0 ;энэргонезависимую память EEPROM
movf INDF,w
movwf EEDATA
movfw FSR
movwf EEADR
bsf STATUS,RP0
bsf EECON1,WREN
bcf EECON1,EEIF
bcf INTCON,GIE
movlw 0x55
movwf EECON2
movlw 0xaa
movwf EECON2
bsf EECON1,WR
m2 btfss EECON1,EEIF
goto m2
bcf STATUS,RP0
incf FSR
decfsz kol,1
goto m1
return
proc2 movlw 0x3e ;процедура которая выполняет поиск минимального значения в памяти
movwf kol ;EEPROM и записывает его в последнюю ячейку памяти.
movlw 0x1
movwf FSR
movlw 0FFh
movwf adr
m3 bcf STATUS,RP0
movfw FSR
movwf EEADR
bsf STATUS,RP0
bsf EECON1,RD
bcf STATUS,RP0
movf EEDATA,w
bcf STATUS,0
subwf adr,0
btfss STATUS,0
goto k
movf EEDATA,w
movwf adr
k incf FSR
decfsz kol,1
goto m3
bcf STATUS,RP0
movf adr,w
movwf EEDATA
movfw FSR
movwf EEADR
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.