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

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

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

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

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

кр.docx

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

         MOVWF CYCLE

ST          BSF         PORTB,0   

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

         NOP                 ;  __

         NOP                 ; /  \__

         BCF       PORTB,0   ;

         DECFSZ    CYCLE,1   

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

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

         GOTO A2             ; Переход на фрагмент програм-

                                  ; мы с адресом А2

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

A1        BSF  F0,   0

         GOTO CONVERT

A2        GOTO CONVERT

END

 

В результате трансляции было получено 3 предупреждения (Warning)  о необходимости точной настройки битов, управляющими выбором банков регистров ( все сообщения об ошибках воспроизвeдены в файле 1.ERR ) :

Message[302] D:\USERS\BANG\SCOR\VIBHU\1.ASM 32 :

Register in operand not in bank 0.  Ensure that bank bits are correct.

Message[302] D:\USERS\BANG\SCOR\VIBHU\1.ASM 34 :

Register in operand not in bank 0.  Ensure that bank bits are correct.

Message[302] D:\USERS\BANG\SCOR\VIBHU\1.ASM 36 :

Register in operand not in bank 0.  Ensure that bank bits are correct.

 

Результаты трансляции находятся  в файле листинга 1.LST, из которого можно определить не только двоичные коды команд, но и карту распределения памяти (команд и данных):

 

SYMBOL TABLE

  LABEL                             VALUE

A1                                0000012B

A2                                0000012D

ADCON0                            00000008

ADCON1                            00000088

ADRES                             00000009

BEG                               00000100

CONVERT                           0000010D

CYCLE                             0000000D

F0                                0000000C

INTCON                            0000000B

LOOP2                             0000010F

LOOP3                             00000117

OPTREG                            00000081

PORTB                             00000006

RP0                               00000005

ST                                00000124

STATUS                            00000003

TRISB                             00000086

U1                                0000000E

U2                                0000000F

Z                                 00000002

__16F874                          00000001

MEMORY USAGE MAP ('X' = Used,  '-' = Unused)

0000 : X--------------- ---------------- ---------------- ----------------

0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXX-- ----------------

 

All other memory blocks unused.

 

Program Memory Words Used:    47

Program Memory Words Free:  4049

Как видно из листинга, программа  использует следующие ячейки памяти и регистры:

Регистры АЦП ADCON0(8h),ADCON1(88h),ADRES(9h), регистр прерываний INTCON(Bh), регистр управления портом В TRISB(86h) и регистр защелки порта В PORTB(6h), регистр статуса STATUS(3h);

Флаг результатов сравнения  кодов АЦП F0(Ch), переменная для хранения результатов преобразования кодов от первого датчика U1(Eh), переменная для хранения результатов преобразования кодов от второго датчика U2(Fh).

Произведем моделирование  работы устройства и отладку программы в интегрированой среде MPLAB IDE (рис.1, рис.2, рис.3).


 

 

 

 

 

 

 

Рис.1. Отладка программы  в интегрированой среде MPLAB.

 

 

 

Рис.3. Вывод управляющих  сигналов при неравенстве входных  сигналов.

Рис.3 Если входные сигналы равны, импульсы генерироваться не будут.

Заключение:

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

 

 

 

 

 

 

 

 

 

 

 

 

Задача 3. Предложите микроконтроллерное устройство позволяющее ввести одновременно через порты ввода/вывода байты состояния 2-х независимых датчиков дискретных сигналов, выполнить сравнение введенных байт между собой и по результатам сравнения осуществить:

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

Eсли уровни входных сигналов ТТЛ

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

С целью повышения точности и стабильности работы АЦП в данном случае более целесообразно использовать кварцевый ХТ генератор.

На основании исходного  задания и предыдущих рассуждений  можно предложить функциональную схему  и алгоритм рабочей программы  МКУ (см. рис. 2.1 и рис.2.2 соответственно).

 


 

 

 

 

 

 

 

Рис. 1.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


 

 

 

 

 

 

 

 

 

 

 

 

Рис. 2.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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                     Вопрос №1

Микроконтроллеры PIC 16С71 относятся к расширенному семейству и имею целый ряд отличий от МК базового семейства PIC 16С5Х главным 0из которого является наличие встроенного четырехканального аналого-цифрового преобразователя (АЦП). Эти отличия приведены на структурной схеме (рис. 1), а также в следующем списке:

1. Количество команд увеличено до 37-и (вместо 33-х в PIC16С5Х).

2. Добавлены 4-е новые команды:

RETFIE —возврат из прерывания;

RETURN —возврат из подпрограммы;

ADDLW —сложение константы с содержимым регистра W;

SUBLW —вычитание константы из содержимого регистра W.

В двух командах TRIS и OPTION отпала необходимость(см. п. 7), однако они сохранены для обеспечения программой совместимости с PIC 16С5Х. Их использовать не рекомендуется.

3. Длина команды увеличена до 14-и бит.

Это позволило увеличить  размер страницы памяти программ (ПЗУ) и данных (ОЗУ), а также разрядность  константы <К> до 11 бит. При этом страница ПЗУ может иметь объем от 512 до 2К слов, а ОЗУ —до 128 байт (вместо 36 байт в PIC 16С5Х).

4. Увеличено до 15-ти количество специальных программно доступных регистров (регистров специальных функций -SFR).Добавлены следующие регистры:

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