Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие МИУС.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
865.51 Кб
Скачать
      1. Общий вид программы и типовые приемы программирования

Общий вид программы представлен ниже.

#include "p16f873a.inc" ; Константы и определения контроллера

; pic16f873a

call system_setup ; Настройка окружения и

; портов ввода/вывода

main:

; Основная программа

goto main

#include "hdw_init.inc"

end

Начинается программа с подключения файла определений специальных регистров для микроконтроллера PIC18F873A p16f873a.inc, который используется в учебной микропроцессорной системе.

Далее следует вызов подпрограммы настройки периферийных устройств микроконтроллера system_setup — именно с него микроконтроллер начинает выполнение программы. После этого управление передается по адресу метки main: которая указывает на основную программу. Основная программа выполняется циклически, о чем говорит инструкция безусловного перехода goto main, расположенная в конце.

В конце исходного текста подключается файл hdw_init.inc, содержащий в себе текст подпрограммы system_setup. Так как при выполнении лабораторных работ всегда используется одна и та же микропроцессорная система, причем используется единообразно (в качестве устройтсв ввода информации используются кнопки, а в качестве устройтсв вывода — светодиоды) то настройка периферийных устройств будет одинаковой для всех.

Заканчивается программа обязательным ключевым словом end.

        1. Битовая арифметика

Некоторые методы имитационного моделирования требуют выполнения операций над переменными, размерностью в один бит, например метод непосредственного вычисления ФАЛ. В то же время набор инструкций PIC16 не содержит специальных инструкций для работы с однобитовыми переменными.

Для того, чтобы получить нужные возможности по работе с битами, вместо них можно использовать байты, у которых все разряды за исключением самого младшего, игнорируются. В этом случае типовые операции по работе с битами будут выглядеть следующим образом:

Чтение бита в регистр W из порта ввода-вывода (PORT A, 1 разряд)

movlw 0

btfsc PORTA, 1

movlw 1 ; в нулевом разряде W бит 1 порта PORTA

Запись бита из регистра F в порт ввода-вывода (PORT С, 2 разряд)

btfss F

bcf PORTC, 2

btfsc F

bsf PORTC, 2

Булева функция И между регистром W и F

andwf F

Булева функция ИЛИ между регистром W и F

iorwf F

Булева функция НЕ над регистром W

xorlw 1

Булева функция И между регистром W и битом 1 порта PORTA

bfss PORTA, 1

andlw 0

Булева функция ИЛИ между регистром W и F

bfsc PORTA, 1

iorlw 1

        1. Ветвление

Ветвление организуется в зависимости от состояния нужного бита. Для организации ветвления следует использовать связку из команд условного и безусловного перехода — btfss/btfsc и goto.

Ветвление в зависимости от состояния бита 4 регистра F (btfss)

btfss F, 4

goto bit_is_null

; Бит в единице

bit_is_null:

; Бит в нуле

Ветвление в зависимости от состояния бита 3 регистра F (btfsc)

btfsc F, 4

goto bit_is_set

; Бит в нуле

bit_is_set:

; Бит в единице