Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОМТ (на редактировании).doc
Скачиваний:
31
Добавлен:
17.05.2015
Размер:
3.86 Mб
Скачать

Порядок выполнения работы

В данной лабораторной работе необходимо разработать и отладить программу, формирующую широтно-импульсно модулированный сигнал, имеющий различные значения постоянной составляющей. Конкретное задание выдается преподавателем.

В качестве примера рассмотрим следующее задание: показание микроамперметра PV1 обратно пропорционально углу поворота ручки потенциометра R1.

Постановка задачи

По аналогии с лабораторной работой 6 будем использовать 8-разрядную точность аналого-цифрового преобразования и формирования сигнала ШИМ.

Преобразование результата аналого-цифрового преобразования в обратный код осуществляется путем вычитания его из шестнадцатеричного числа H’FF’:

PWM = H’FF’ – ADRES

где: PWM – длительность импульса ШИМ;

ADRES – результат аналого-цифрового преобразования.

Разработка алгоритма программы

Алгоритм программы приведен на рис. 7.6.

В первом блоке осуществляется настройка портов ввода-вывода, таймера TMR2 и аналого-цифрового преобразователя на соответствующие режимы работы. Схема CCP1 настраивается на режим ШИМ путем записи двоичного числа «00001111» в регистр CCP1CON.

Рис. 7.6. Блок-схема алгоритма программы

Во втором блоке запускается аналого-цифровое преобразование, а в третьем ожидается его завершение.

В блоке 4 считывается результат аналого-цифрового преобразования и вычисляется обратный код.

В блоке 5 задается длительность импульса ШИМ путем записи обратного кода в ведущий регистр CCPR1L.

Далее программа возвращается к запуску следующего аналого-цифрового преобразования

Написание текста программы на языке Ассемблер

Исходный текст программы приведен далее:

;предварительные настройки

#include p16f873a.inc

__CONFIG _HS_OSC ;высокочаятотный кварцевый резонатор

ORG H'000' ;вектор сброса

GOTO BEGIN ;переход на начало основной программы

;начало основной программы

ORG H’005’

BEGIN: BSF STATUS,RP0 ;выбираем банк регистров 1

;задаем режимы работы параллельных портов

MOVLW B'00000001' ;PORTA, 7-1 выходы, PORTA, 0 вход

MOVWF TRISA ;программируем регистр направления PORTA

MOVLW B'11000000' ;PORTC,7-6 вход, PORTC,5-0 выходы

MOVWF TRISC ;программируем регистр направления PORTC

;задаем режим работы таймера TMR2

MOVLW D'255' ;задаем период таймера 2

MOVWF PR2 ;|

BCF STATUS,RP0 ;выбираем банк регистров 0

MOVLW B'00000000' ;коэфф. деления делителей 1:1

MOVWF T2CON ;|

BSF T2CON,TMR2ON;включение таймера 2

;задаем режим работы АЦП

MOVLW B'00001110' ;задаем аналоговый вход AN0, левое выравн.

MOVWF ADCON1 ;программируем регистр АЦП 1

MOVLW B'01000001' ;задаем аналоговый вход PORTA,0 и включаем АЦП

MOVWF ADCON0 ;программируем регистр АЦП 0

NOP ;пауза 4 мкс

NOP ;|

NOP ;|

NOP ;|

;настройка модуля CCP

MOVLW B'00001111' ;задаем режим ШИМ

MOVWF CCP1CON ;|

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

M10: BSF ADCON0,GO ;зепуск преобразования

M20: BTFSC ADCON0,GO ;ожидание окончания преобразования

GOTO M20 ;|

MOVF ADRESH,W ;считываем результат преобразования

SUBLW H'FF' ;вычисляем обратный код

MOVWF CCPR1L ;задаем длительность импульса ШИМ

GOTO M10 ;возврат к началу основной программы

END ;конец программы

Трансляция текста программы в машинные коды

Процесс создания нового проекта и компиляции программы подробно описан в лабораторной работе 1.

Тестирование и отладка

На этапе отладки программы необходимо выявить и устранить все возникшие на предыдущих этапах ошибки. Описание процесса программирования микроконтроллера и запуска программы приведен в лабораторной работе 1.

Сопровождение

Поскольку все программы, разрабатываемые при изучении курса ОМТ носят чисто учебный характер, то их работоспособность необходимо поддерживать лишь до момента защиты лабораторной работы преподавателю.