
- •СведенИя о процессоре pic16. Система команд Архитектура процессоров семейства pic16
- •Распределение областей памяти процессоров pic16
- •Система команд процессоров pic16
- •Программирование на Ассемблере
- •Синтаксис числовых значений в различных системах счисления
- •Практическая часть Процесс подготовки программ для процессоров pic16 Методические указания
- •Ход работы
- •Лабораторная работа № 1
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 2.
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 3.
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 4
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 5
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 6
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 7
- •Теоретические сведения
- •Ход работы
- •Лабораторная работа № 8
- •Теоретические сведения
- •Ход работы
- •Список литературы
Лабораторная работа № 4
Тема работы: «Организация циклических вычислений».
Теоретические сведения
При создании управляющих программ часто возникает необходимость в организации циклических процедур. Эти процедуры могут быть реализованы на языке ассемблер по аналогии с языками высокого уровня, в частности BASIC.
В ассемблере процессоров семейства PIC рациональным является организация цикла, соответствующая форме цикла в BASIC и Assembler следующего рода:
BASIC: FOR n=10 to 1 STEP -1 … NEXT n Эта структура эквивалентна следующим командам: n = 10 LOOP … … … n = n - 1 IF n<>0 THEN GOTO LOOP … |
Assembler: … MOVLW .10 MOVWF c_n LOOP … … … DECFSZ c_n, f GOTO LOOP … |
В ассемблере этот цикл строится на основе команд:
DECFSZ f, d – уменьшение на единицу содержимого регистра f, пропустить следующую строку, если f равен нулю;
GOTO Label – выполняет переход к указанной команде (в приведенных в таблице фрагментах Label=LOOP).
Преимуществом такой записи является то, что количество повторов явно указано перед телом цикла, что более привычно, так как соответствует записям на языках высокого уровня и делает программу более понятной.
Ход работы
Составить две программы, осуществляющие расчет контрольных сумм заданного количества показаний АЦП, получаемых из регистра ADRES:
Однобайтовой суммы N данных, где N – сумма номеров первых трех букв фамилии. Для проверки принять показания АЦП равными N;
Трехбайтовой суммы 1000*N данных.
Составить алгоритм выполнения обработки данных.
На основе составленного алгоритма создать программу обработки данных с пошаговыми комментариями происходящего.
Выполнить компиляцию и проверку программы в симуляторе.
Рассчитать вручную результат циклических вычислений и сравнить его с результатом работы симулятора.
Контрольные вопросы.
Принцип организации циклов в ассемблере.
Принцип работы команды INCF .
Принцип работы команды DECFSZ .
Принцип организации вложенных циклов.
Лабораторная работа № 5
Тема работы: «Обработка массивов данных»
Теоретические сведения
Во всех языках программирования под массивами подразумевают совокупность идентичных элементов, располагаемых в памяти друг за другом. Каждый элемент характеризуется размеров в байтах (size), а весь массив – количеством элементов (длиной, lenght – лент). Под объявлением массива подразумевается резервирование в памяти данных области размером lenght*size. Обработка массивов обычно заключается в выполнении некоторых идентичных операций с каждым элементом. Для того, чтобы эти операции были описаны одинаковыми командами, и программа имела минимальный размер, необходимо организовать доступ к элементам массива с помощью косвенной адресации, а процедуру обработки поместить в цикл.
… CBLOCK d_x:size*len ; резерв массива d_x c … ENDC
m_dim_ini MOVLW d_x MOVWF FSR … m_for_i MOVLW NI MOVWF c_i … m_loop_i
INCF FSR, f DECFSZ c_i, f GOTO m_loop_i |
Объявление массива
Запись в FSR начального адреса массива
Организация цикла
Тело цикла
Окончание цикла |