|
Написание программы
Интерактивная симуляция в программе Proteus VSM
(Написание программы)
Листинг исходного кода
Для целей нашего руководства мы приготовили следующую программу, которая позволит PIC
управлять светофорами. Эта программа предоставлена в файле, названном TL.ASM и может
быть найдена в директории «Samples\Tutorials».
LIST p=16F84 ; PIC16F844 целевой процессор
#include "P16F84.INC" ; Включить файл заголовков
CBLOCK 0x10 ; Временное хранилище
state
l1,l2
ENDC
org 0 ; Начало вектора.
goto setports ; Переход к началу кода.
org 4 ; Вектор прерывания.
halt goto halt ; Задаём бесконечный цикл и ничего не делаем.
setports clrw ; Ноль в W.
movwf PORTA ; Убедимся, что PORTA обнулён, прежде чем использовать.
movwf PORTB ; Убедимся, что PORTB обнулён, прежде чем использовать.
bsf STATUS,RP0 ; Выбираем Bank 1
clrw ; Маскируем все биты для выхода.
movwf TRISB ; Устанавливаем регистр TRISB.
bcf STATUS,RP0 ; Переключаемся к Bank 0.
initialise clrw ; Начальное состояние.
movwf state ; Устанавливаем его.
loop call getmask ; Конвертируем состояние в bitmask.
movwf PORTB ; Записываем его в порт.
incf state,W ; Увеличиваем на единицу состояние в W.
andlw 0x04 ; Оборачиваем его.
movwf state ; Возвращаем в память.
call wait ; Ждем
goto loop ; И цикл
; Функция возвращения bitmask для выхода порта для
; текущего состояния.
; Верхний кусок содержит биты для одной установки
; света и
; нижний кусок биты для другой установки. Бит 1
; красный, 2 жёлтый
; а бит три зелёный. Бит четыре не используется.
getmask movf state,W ; Берём статус в W.
addwf PCL,F ; Добавляем компенсацию в W для PCL для расчета. goto.
retlw 0x41 ; state==0 это зелёный и красный.
retlw 0x23 ; state==1 это жёлтый и красный/жёлтый.
retlw 0x14 ; state==3 это красный и зелёный.
retlw 0x32 ; state==4 это красный/жёлтый и жёлтый.
; Функция, использующая два цикла для реализации паузы.
wait movlw 5
movwf l1
w1 call wait2
decfsz l1
goto w1
return
wait2 clrf l2
w2 decfsz l2
goto w2
return
END
|
Здесь есть, фактически, предумышленная ошибка в коде выше, но об этом чуть позже.
Добавление исходного файла
Следующий этап — добавление программы в проект, чтобы мы могли успешно симулировать
её поведение. Мы сделаем это, используя команды Source основного меню. Перейдите к
разделу Source и выберите команду Add/Remove Source Files. Щёлкните по кнопке New,
переместитесь к директории «Samples\Tutorials» для выбора TL.ASM файла. Щёлкните по
кнопке Открыть и файл появится в выпадающем списке Source Code Filename.
Теперь нам нужно выбрать транслятор для файла. Для нашей цели подходит MPASM. Эта
опция доступна из выпадающего списка, а щелчок левой клавишей мышки выберет её
обычным образом. (Заметьте, что если вы планируете использовать новый ассемблер или
компилятор в этот момент, вы должны зарегистрировать его, используя команду Define Code
Generation в разделе Tools ).
И, наконец, необходимо указать, какой файл процессор должен запускать. В нашем примере
это будет tl.hex (hex-файл производит MPASM при ассемблировании tl.asm). Чтобы добавить
этот файл в процессор, откройте двойным щелчком по компоненту PIC диалоговое окно Edit
Component, в котором есть поле для Program File. Если это уже не задано, как tl.hex, укажите
путь к файлу вручную или перейдите к месту хранения файла с помощью кнопки справа
от поля. Когда вы задали hex-файл, нажмите ОК для выхода из диалога.
Теперь мы прикрепили исходный файл к проекту и указали, какой транслятор использовать.
Больше информации о системе управления исходным кодом вы найдёте далее.
Файлы проекта можно скачать здесь:
|
|
|