Автор: Пользователь скрыл имя, 15 Марта 2012 в 13:36, контрольная работа
Предложите микроконтроллерное устройство позволяющее ввести от двух независимых датчиков аналоговые сигналы постоянного тока (U1 и U2), сравнить их между собой и по результатам сравнения осуществить.
MOVWF CYCLE
ST BSF PORTB,0
; Последовательность длиной 8 импульсов
NOP ; __
NOP ; / \__
BCF PORTB,0 ;
DECFSZ CYCLE,1
; Занимает 2 цикла, поэтому не нужен NOP
GOTO ST ; если 0 пропускает след ком.
GOTO A2 ; Переход на фрагмент програм-
; Установка флага F0 в "1"
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
A1
A2
ADCON0
ADCON1
ADRES
BEG
CONVERT
CYCLE
F0
INTCON
LOOP2
LOOP3
OPTREG
PORTB
RP0
ST
STATUS
TRISB
U1
U2
Z
__16F874
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(
Флаг результатов сравнения кодов АЦП F0(Ch), переменная для хранения результатов преобразования кодов от первого датчика U1(Eh), переменная для хранения результатов преобразования кодов от второго датчика U2(Fh).
Произведем моделирование работы устройства и отладку программы в интегрированой среде MPLAB IDE (рис.1, рис.2, рис.3).
Рис.1. Отладка программы в интегрированой среде MPLAB.
Рис.3. Вывод управляющих сигналов при неравенстве входных сигналов.
Рис.3 Если входные сигналы равны, импульсы генерироваться не будут.
Заключение:
В результате отладки программы можно сделать вывод о том, что разработанное устройство и его программное обеспечение отвечает требованиям решаемой задачи, а его функционирование соответствует априорным данным.
Задача 3. Предложите микроконтроллерное устройство позволяющее ввести одновременно через порты ввода/вывода байты состояния 2-х независимых датчиков дискретных сигналов, выполнить сравнение введенных байт между собой и по результатам сравнения осуществить:
Eсли уровни входных сигналов ТТЛ
Для решения данной задачи, если нет каких-либо ограничений, более целесообразно использовать МК PIC16C71, так как этот микроконтроллер имеет встроенный 4-х канальный АЦП. Для ввода двух сравниваемых напряжений используются два аналоговых канала (линии AIN0 и AIN1 порта А). Переключение каналов производится с помощью изменения битов CHS0 и CHS1 в регистре ADCON0, который предназначен для управления АЦП.
Структура регистра ADCON (Адрес 08h в памяти данных) следующая:
7 0
ADCS1 |
ADCS0 |
CHS1 |
CHS0 |
GO/DONE |
ADIF |
ADON |
ADON - Включение АЦП:
/вывода.
ADIF - Флаг прерывания по окончанию преобразования:
GO:/DONE -Запуск АЦП (начало преобразования):
CHS1,CHS0 - Выбор аналогового канала:
ADCS1,ADCS0 - Выбор частоты преобразования:.
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
Микроконтроллеры 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).Добавлены следующие регистры:
Информация о работе Проектирование Микроконтролерных устройств