Проектирование Микроконтролерных устройств

Автор: Пользователь скрыл имя, 15 Марта 2012 в 13:36, контрольная работа

Описание работы

Предложите микроконтроллерное устройство позволяющее ввести от двух независимых датчиков аналоговые сигналы постоянного тока (U1 и U2), сравнить их между собой и по результатам сравнения осуществить.

Работа содержит 1 файл

кр.docx

— 216.15 Кб (Скачать)

Задача№ 1

   Предложите микроконтроллерное  устройство позволяющее ввести  от двух независимых датчиков  аналоговые сигналы постоянного  тока (U1 и U2), сравнить их между  собой и по результатам сравнения  осуществить:

    1. В случае равенства управление передается фрагменту программы с адресом A1 и устанавливается в «1» признак (флаг) F0;
    2. В случае неравенства признак F0 устанавливается в «0», в соответствии с вариантом задания формируются управляющие сигналы, а управление передается на фрагмент программы с адресом A2.

Дополнительные условия  задачи (Из таблицы с  вариантами задач):

4. Тип используемого генератора  тактовых импульсов:  XT;

5. Способ формирования  сигнала «Сброс» по выключению  питания:  Внутренний.

6. Выходные (управляющие)  сигналы: 

Импульсные: 

Последовательность импульсов  с параметрами: tи = 2 tц; tп = 2 tц;

Решение

Был выбран ОМК 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 можно воспользоваться стандартной процедурой – вычитание двух кодов и проверка результата.

Был подключен ХТ генератор  тактовых импульсов, при прошивке ОМК  надо записать в байт конфигурации по адресу 2007 тип генератора.

Функциональная  схема устройства


 

 

 

 

 

 

 

 

 

 

 

Алгоритм  работы прогрaммы


 

 

 

 

 

 

 

 


 


 

 

 

 

 

 

Текст программы в соответствии с данным алгоритмом приведен ниже:

 

;Текст программы

p=16c71, r=HEX

TITLE "VIBHU"

; Секция заголовка

; Описание регистров,  битов и переменных

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

Z  EQU 02H  

; Флаг Z – нулевого результата  в регистре STATUS

CYCLE EQU 0DH

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

OPROS:

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 BTFSS  ADCON0,2  

; Ждать окончания преобразования  сигнала U2

GOTO LOOP3

BCF  ADCON0,1  

;Сбросить флаг окончания  преобразования ADIF в регистре ADCON0

; Процедура сравнения  U1 и U2

SUBWF  ADRES,0  ; U2-U1

BTFSC STATUS, Z 

; Проверка состояния флага  нулевого результата 

;  Z.Если Z=1 (U1=U2),

;то переход на фрагмент  программы с адресом А1

GOTO A1

; Установка флага F0 в"0"

BCF F0, 0

; Вывод управляющих сигналов

MOVLW 8 ; 8 импульсов

MOVWF  CYCLE

ST  BSF PORTB,0 

; Последовательность длиной 8 импульсов.

NOP    ;  __       

NOP    ; /  \__

BCF  PORTB,0 ;

DECFSZ CYCLE  

; Занимает 2 цикла, поэтому  не нужны NOP

GOTO ST    ; если 0 пропускает след ком.

GOTO A2 ; Переход на фрагмент программы с адресом А2

; Установка флага F0 в "1"

A1  BSF  F0, 0

GOTO OPROS

A2  GOTO OPROS

END

 

Рассмотрим результаты трансляции программы .

Код программы в ПЗУ (файл 1.нех):

:020000000029D5

:1002000083168113061088018312C0308B00C13021

:10021000880000308E0006308F0088110815081DF8

:100220000F29090803308E07881088150815081D46

:1002300017298810090801308F070E080F020319CB

:100240002B290C1004308D0006140000000006104D

:0C0250008D0B24292D290C140D290D29DB

:00000001FF

Поскольку симулятор MPLAB IDE  не позволяет проводить корректную отладку и моделирование работы встроенного АЦП , для выполнения проверки работоспособности программы необходимо соответствующим образом изменить исходный текст программы, введя принудительную модификацию результатов работы АЦП .

;Текст программы (для  отладки )

;p=16c71, r=HEX

;TITLE "VIBHU"

; Секция заголовка

; Описание регистров,  битов и переменных

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

Z          EQU   02H            

;  Флаг Z - нулевого  результата  в регистре STATUS

CYCLE EQU  0DH

F0  EQU  0CH            ; флаг, который нужно выставлять

U1   EQU 0Eh ;U1

U2   EQU 0Fh ;U2

; Рабочая секция

         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         ; Разрешить работу АЦП

 

 movlw 0

      movwf   U1

 movlw 6

      movwf   U2

 

; Ввод и преобразование  сигналов U1 и U2

CONVERT:

         BCF       ADCON0,3      

; Установить входной канал  AIN0

         BSF       ADCON0,2      

; Начать процесс преобразования

; сигнала U1

LOOP2:

 BTFSS      ADCON0,2      ; Ждать окончания преобразова-

                               ; ния сигнала U1

         GOTO LOOP2

    MOVF U1,0

    MOVWF ADRES

 

         MOVF ADRES,0        ; Результат преобразования

                             ; сигнала U1 записать в W

    MOVWF U1

    MOVLW 3

    ADDWF  U1,1 

 

         BCF       ADCON0,1      

; Сбросить флаг окончания  преобразования ADIF в регистре

                                  ; ADCON0

         BSF       ADCON0,3      

; Установить входной канал  AIN1

         BSF      ADCON0,2      

; Начать процесс преобразования  сигнала U2

LOOP3:

 BTFSS     ADCON0,2       ; Ждать окончания

                                  ; преобразования сигнала U2

         GOTO LOOP3

         BCF       ADCON0,1      

; Сбросить флаг окончания  преобразования ADIF в регистре

                                  ; ADCON0

 

    MOVF U2,0

    MOVWF ADRES,1

 

         MOVF ADRES,0        ; Результат преобразования

                             ; сигнала U2 записать в W

    MOVWF U2

    MOVLW 1

    ADDWF  U2,1 

 

; Процедура сравнения  U1 и U2

 

 MOVF U1,0

 SUBWF U2,0        ; U2-U1 

     

         BTFSC  STATUS,  Z      

;  Проверка  состояния   флага    нулевого результата

;   Z.Если Z=1 (U1=U2),то переход на фрагмент программы с ;адресом А1

          GOTO A1

; Установка флага F0 в"0"

         BCF  F0, 0

; Вывод управляющих сигналов

         MOVLW 8; 8 импульсов

Информация о работе Проектирование Микроконтролерных устройств