Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Статических сигналов. Рассмотрим пример, в котором необходимо ввести от 2-х независимых датчиков аналоговые сигналы постоянного тока (U1 и U2)



Рассмотрим пример, в котором необходимо ввести от 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...