Читайте также:
|
|
Исходный текст программы приведен далее:
;предварительные настройки
#include p16f873a.inc
CONFIG _HS_OSC;
ORG H'000';вектор сброса
CNT EQU H'A0';определение регистра счетчика с адресом А0 (банк 1)
;запись возрастающих чисел в ОЗУ
BCF STATUS,RP1; ┬ выбираем банк регистров 1
BSF STATUS,RP0; ┘
MOVLW H'20';загрузка в рабочий регистр адреса первого РОН в банке 0
MOVWF FSR;записываем начальный адрес в регистр косв. адресации
CLRF CNT;обнуляем регистр счетчик
M10: MOVF CNT,W;загружаем значение счетчика в рабочий регистр
MOVWF INDF;сохраняем очередной отсчет в косвенно адресуемый РОН
INCF FSR,F;увеличение адреса РОН в регистре косвенной адресации
INCF CNT,F;увеличение счетчика на 1
MOVF CNT,W;загружаем новое значение счетчика в рабочий регистр
XORLW H'60';сравниваем его с последним значением +1
BTFSS STATUS,Z;если совпадают то скачек через одну команду
GOTO M10;если не совпадают, то возврат к записи следующей ячейки
;копирование из ОЗУ в EEPROM
MOVLW H'20';загрузка в рабочий регистр адреса первого РОН в банке 0
MOVWF FSR;записываем начальный адрес в регистр косв. адресации
CLRF CNT;обнуляем регистр счетчик адреса EEPROM
M20: BSF STATUS,RP1; ┬ выбираем банк регистров 3
BSF STATUS,RP0; ┘
BTFSC EECON1,WR; ┬ проверка окончания предыдущей записи в EEPROM
GOTO M20; ┘
BCF STATUS,RP1; ┬ выбираем банк регистров 1
BSF STATUS,RP0; ┘
MOVF CNT,W;загружаем значение счетчика в рабочий регистр
BSF STATUS,RP1; ┬ выбираем банк регистров 2
BCF STATUS,RP0; ┘
MOVWF EEADR;сохраняем адрес очередной ячейки в регистре адреса
MOVF INDF,W;считываем данные из очередного РОН в рабочий регистр
MOVWF EEDATA;и сохраняем их в регистре данных EEPROM
BSF STATUS,RP1; ┬ выбираем банк регистров 3
BSF STATUS,RP0; ┘
BCF EECON1,EEPGD;выбираем EEPROM
BSF EECON1,WREN;разрешаем запись
BCF INTCON,GIE;запрещаем прерывания
MOVLW H'55'; ┐
MOVWF EECON2; │
MOVLW H'AA'; ├ обязательная последовательность из пяти команд
MOVWF EECON2; │
BSF EECON1,WR; ┘
BCF EECON1,WREN;запрещаем запись
BCF STATUS,RP1; ┬ выбираем банк регистров 1
BSF STATUS,RP0; ┘
INCF FSR,F;увеличение адреса РОН в регистре косвенной адресации
INCF CNT,F;увеличение счетчика на 1
MOVF CNT,W;загружаем новое значение счетчика в рабочий регистр
XORLW H'60';сравниваем его с последним значением +1
BTFSS STATUS,Z;если совпадают то скачек через одну команду
GOTO M20;если нет, то переход к копированию очередной ячейки
M30: GOTO M30;зацикливаемся здесь
END;конец программы
Трансляция исходного текста программы в машинные коды
Процесс создания нового проекта и компиляции программы подробно описан в лабораторной работе 1.
Дата добавления: 2015-07-08; просмотров: 190 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Разработка алгоритма программы | | | Тестирование и отладка |