Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Рассмотрим пример, в котором необходимо ввести от 2-х независимых датчиков аналоговые сигналы постоянного тока (U1 и U2), выполнить сравнение их между собой и по результатам сравнения осуществить:
1) в случае, если U1<=U2 управление передается фрагменту программы с адресом А1 и устанавливается в "1" признак (флаг) FO;
2) в случае, если U1>U2 управление передается на фрагмент программы с адресом А2, признак FO устанавливается в "0", формируются дискретные управляющие сигналы изменяющиеся от "0" до "1".
Для решения данной задачи, если нет каких-либо ограничений, более целесообразно использовать МК PIC16C71, так как этот микроконтроллер имеет встроенный 4-х канальный АЦП. Для ввода двух сравниваемых напряжений используются два аналоговых канала (линии AIN0 и AIN1 порта А). Переключение каналов производится с помощью изменения битов CHS0 и CHS1 в регистре ADCON0, который предназначен для управления АЦП.
Структура регистра ADCON (Адрес 08h в памяти данных) следующая:
7 0
ADCS1 | ADCS0 | CHS1 | CHS0 | GO/DONE | ADIF | ADON |
ADON - Включение АЦП:
· ADON = 0: АЦП не работает и не потребляет тока;
· ADON = 1: АЦП работает и занял линии ввода
/вывода.
ADIF - Флаг прерывания по окончанию преобразования:
· устанавливается аппаратно, когда преобразование закончено;
· сбрасывается программно.
GO:/DONE -Запуск АЦП (начало преобразования):
· устанавливается программно;
· сбрасывается аппаратно, когда преобразование закончено.
CHS1,CHS0 - Выбор аналогового канала:
· CHS1,CHS0 = 00: канал 0 (AIN0);
· 01: канал 1 (AIN1);
· 10: канал 2 (AIN2);
· 11: канал 3 (AIN3).
ADCS1,ADCS0 - Выбор частоты преобразования:.
· ADCS0,ADCS0 = 00: fosc/2;
· 01: fosc/8;
· 10: fosc/32;
· 11: fRC (частота от собственного
RC генератора).
Сформированный сигнал управления выдается через вывод RB1 порта В. Для сравнения двух восьмиразрядных кодов, представляющих собой результаты преобразования сигналов U1 и U2 можно воспользоваться стандартной процедурой СОМР, рассмотренной ранее.
С целью повышения точности и стабильности работы АЦП в данном случае более целесообразно использовать кварцевый ХТ генератор.
На основании исходного задания и предыдущих рассуждений можно предложить функциональную схему и алгоритм рабочей программы МКУ (см. рис. 8.1 и рис. 8.2 соответственно).
Рис. 8.1. Функциональная схема устройства.
Текст программы в соответствии с данным алгоритмом приведен ниже:
;Текст программы
LIST p=16c71, r=HEX
TITLE "Z8"
; Секция заголовка
; Описание регистров, битов и переменных
STATUS EQU 03H; Регистр STATUS
PORTB EQU 06H; Регистр порта В
ADCON0 EQU 08H; Регистр управления АЦП
ADRES EQU 09H; Регистр результата АЦП
; преобразования
INTCON EQU 0BH; Регистр управления прерыва
; ниями
OPTREG EQU 81H; Регистр OPTION
TRISB EQU 86H; Регистр конфигурации порта В
ADCON1 EQU 88H; Регистр конфигурации АЦП
RP0 EQU 5H; Бит переключения страниц в
; регистре STATUS
C EQU 2H; Флаг переноса/заема в регистре
; STATUS
Рис. 8.2. Алгоритм программы.
F0 EQU 0CH; Просто флаг
; Рабочая секция
ORG 0; Начальный адрес после сброса
GOTO BEG; Переход на начало программы
ORG 100; Начальный адрес программы
; (следующая команда будет
; расположена по адресу 100H)
BEG
; Инициализация микроконтроллера
BSF STATUS,RP0; Включить первую страницу ПД
BCF OPTREG,7; Отключить активную нагрузку
; от выводов порта В
BCF TRISB,0; Установить бит 0 порта В на
; вывод
CLRF ADCON1; Установить входы порта А как
; аналоговые, опорное
; напряжение для АЦП равно Vdd
BCF STATUS,RP0; Включить нулевую страницу ПД
MOVLW B '11000000'; Разрешить прерывания только
MOVWF INTCON; от АЦП (все остальные прерыва-
; ния запрещены!)
MOVLW 0C1H; Синхронизация АЦП от
; собственного генератора.
MOVWF ADCON0; Разрешить работу АЦП
;
; Ввод и преобразование сигналов U1 и U2
BCF ADCON0,3; Установить входной канал AIN0
BSF ADCON0,2; Начать процесс преобразования
; сигнала U1
LOOP2 BTFSS ADCON0,2; Ждать окончания преобразова-
; ния сигнала U1
GOTO LOOP2
MOVF ADRES,0; Результат преобразования
; сигнала U1 записать в W
BCF ADCON0,1; Сбросить флаг окончания пре-
; образования ADIFв регистре
; ADCON0
BSF ADCON0,3; Установить входной канал AIN1
BSF ADCON0,2; Начать процесс преобразования
; сигнала U2
LOOP3 BTFSC ADCON0,2; Ждать окончания
; преобразования сигнала U2
GOTO LOOP3
BCF ADCON0,1; Сбросить флаг окончания пре-
; образования ADIF в регистре
; ADCON0
; Процедура сравнения U1 и U2
SUBWF ADRES,0; U2-U1
BTFSS STATUS, C; Проверка состояния флага пере-
GOTO A1; носа/заема С.Если C=1
; (U1<=U2),то переход на фраг-
; мент программы с адресом А1
; Установка флага F0 в"0"
BCF F0, 0
; Вывод управляющих сигналов
BSF PORTB,0; Установить бит 0 порта В
GOTO A2; Переход на фрагмент програм-
; мы с адресом А2
; Установка флага F0 в "1"
A1 BSF F0, 0
GOTO BEG
A2 GOTO BEG
END
Дата публикования: 2014-11-03; Прочитано: 320 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!