Разработка микропроцессорного устройства цифрового фильтра
| Категория реферата: Рефераты по радиоэлектронике
| Теги реферата: quality assurance design patterns системный анализ, доклад на тему россия
| Добавил(а) на сайт: Конев.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 | Следующая страница реферата
[pic]
Рисунок 5.2 – Организация ОЗУ PIC16C711
Сначала напишем программу обработки прерывания. Занесем программу в таблицу - 1 с адресами ПЗУ и комментариями.
Таблица 5.1
|Адрес|Метка|Мнемонический код |Комментарии |Циклы |
| | |ORG 0x004 |Директива | |
|0004h| |MOVWF W_TEMP |Сохранение содержимого W |1 |
| | | |в W_TEMP | |
|0005h| |MOVF STATUS, 0 |Пересылка содержимого |1 |
| | | |STATUS в W | |
|0006h| |MOVWF STATUS_TEMP |Сохранение W в STATUS |1 |
| | | |_TEMP | |
|Продолжение таблицы 5.1 |
|0007h| |BCF STATUS, RP0 |Выбор банка 0 |1 |
|0008h| |MOVF ADRES, 0 |Пересылка результата АЦП |1 |
| | | |в W | |
|0009h| |MOVWF UM |Пересылка W в UM | |
|000Ah| |MOVF STATUS_TEMP, |Пересылка STATUS_TEMP в W|1 |
| | |0 | | |
|000Bh| |MOVWF STATUS |Пересылка W в STATUS |1 |
|000Ch| |MOVF W_TEMP, 0 |Пересылка W_TEMP в W |1 |
|000Dh| |RETFIE |Возврат прерывания |2 |
Программу, реализующую математическую модель фильтра начнем с адреса
000Eh и разместим в таблицу 5, 2.
Таблица 5.2
|Адрес|Метка|Мнемонический код |Комментарии |Циклы |
| | |ORG 0x00E |Директива | |
|000Eh| |MOVLW 0xFF |Пересылка 0xFF в |1 |
| | | |аккумулятор | |
|000Fh| |BSF STATUS, RP0 |Выбор банка 1 |1 |
|0010h| |MOVWF TRISA |Порт А – Вход |1 |
|0011h| |CLRF TRISB |Порт В – Выход |1 |
|0012h| |MOVLW 0x18 |Организация счетчика |1 |
| | | |СOUNT | |
| | |BCF STATUS, RP0 |Выбор банка 0 |1 |
|0013h| | | | |
|0014h| |MOVWF COUNT |Организация счетчика |1 |
|0015h| |MOVLW 0x0C |Адрес начальной ячейки в |1 |
| | | |ОЗУ | |
|0016h| |MOVWF FSR |Пересылка адреса |1 |
| | | |начальной ячейки в FSR | |
|0017h|M1: |CLRF INDF |Обнуление текущей ячейки |1 |
| | | |памяти | |
|0018h| |INCF FSR, 1 |Адрес + 1 |1 |
|0019h| |DECF COUNT |Счетчик – 1 |1 |
|001Ah| |BTFSS STATUS, Z |Условный переход по 1 |1(2) |
| | | |значению флага нулевого | |
| | | |результата | |
|001Bh| |GOTO M1 | |2 |
|001Ch|M2: |BSF STATUS,RP0 |Выбор банка 1 |1 |
|001Dh| |CLRF ADCON1 |RA0-RA3 Входы АЦП |1 |
|001Eh| |MOVLW 0xC1 | |1 |
|001Fh| |BCF STATUS,RP0 |Выбор банка 0 |1 |
|0020h| |MOVWF ADCON0 |АЦП включен, работает |1 |
| | | |канал0 (RA0), частота | |
| | | |32Tosc. | |
|0021h| |BSF INTCON ADIE |Разрешить прерывание АЦП |1 |
|0022h| |BSF INTCON GIE |Разрешить глобальное |1 |
| | | |прерывание | |
|0023h| |BSF ADCON0, GO |Запустить АЦП |1 |
|0024h| |BCF STATUS, C |Очистка триггера переноса|1 |
|0025h| |RRF UM1, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|0026h| |BCF STATUS, C |Очистка триггера переноса|1 |
|0027h| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|0028h| |MOVWF A11UM1 |W( A11UM1 |1 |
|0029h| |BCF STATUS, C |Очистка триггера переноса|1 |
|002Ah| |RRF YN1, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|002Bh| |BCF STATUS, C |Очистка триггера переноса|1 |
|002Ch| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|002Dh| |BCF STATUS, C |Очистка триггера переноса|1 |
|002Eh| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|Продолжение таблицы 5.2 |
|002Fh| |BCF STATUS, C | |1 |
|0030h| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|0031h| |MOVWF B11YN1 |W( B11YN1 |1 |
|0032h| |BCF STATUS, C |Очистка триггера переноса|1 |
|0033h| |RRF YN1, 0 |Циклический сдвиг вправо | |
| | | |через триггер переноса | |
|0034h| |ADDWF W, 0 |W=W+W |1 |
|0035h| |ADDWF W, 0 |W=W+W |1 |
|0036h| |ADDWF B11YN1 |W=W+ B11YN1 |1 |
|0037h| |SUBWF A11UM1, 0 |W= A11UM1- W |1 |
|0038h| |MOVWF YNN |W( YNN |1 |
|0039h| |BCF STATUS, C |Очистка триггера переноса|1 |
|003Ah| |RRF UM1, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|003Bh| |MOVWF A21UM1 |W( A21UM1 |1 |
|003Ch| |BCF STATUS, C |Очистка триггера переноса|1 |
|003Dh| |RRF YK1, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|003Eh| |BCF STATUS, C |Очистка триггера переноса|1 |
|003Fh| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|0040h| |BCF STATUS, C |Очистка триггера переноса|1 |
|0041h| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|0042h| |SUBWF A21UM1, 0 |W= A21UM1- W |1 |
|0043h| |MOVWF YK |W( YK |1 |
|0044h| |MOVF YN1, 0 |YN1(W |1 |
|0045h| |ADDWF YK1 |W=W+ YK1 |1 |
|0046h| |BCF STATUS, C |Очистка триггера переноса|1 |
|0047h| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|0048h| |BCF STATUS, C |Очистка триггера переноса|1 |
|0049h| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|004Ah| |BCF STATUS, C |Очистка триггера переноса|1 |
|004Bh| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|004Ch| |BCF STATUS, C |Очистка триггера переноса|1 |
|004Dh| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|004Eh| |MOVWF A31YN1YK1 |W( A31YN1YK1 |1 |
|004Fh| |MOVF YN2, 0 |YN2(W |1 |
|0050h| |ADDWF YK2 |W=W+ YK2 |1 |
|0051h| |BCF STATUS, C |Очистка триггера переноса|1 |
|0052h| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|0053h| |BCF STATUS, C |Очистка триггера переноса|1 |
|0054h| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|0055h| |BCF STATUS, C |Очистка триггера переноса|1 |
|0056h| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|0057h| |MOVWF A32YN2YK2 |W( A32YN2YK2 |1 |
|0058h| |BCF STATUS, C |Очистка триггера переноса|1 |
|0059h| |RRF YL1, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|Продолжение таблицы 5.2 |
|005Ah| |ADDWF W, 0 |W=W+W |1 |
|005Bh| |ADDWF W, 0 |W=W+W |1 |
|005Ch| |SUBWF A32YN2YK2, 0|W= A32YN2YK2- W |1 |
|005Dh| |ADDWF A31YN1YK1 |W=W+ A31YN1YK1 |1 |
|005Eh| |MOVWF YLL |W( YLL |1 |
|005Fh| |BCF STATUS, C |Очистка триггера переноса|1 |
|0060h| |NOP |Ничего не выполнять |1 |
|0061h| |NOP | |1 |
|0062h| |NOP | |1 |
|0063h| |NOP | |1 |
|0064h| |NOP | |1 |
|0065h| |NOP | |1 |
|0066h| |NOP | |1 |
|0067h| |NOP | |1 |
|0068h| |NOP | |1 |
|0069h| |NOP | |1 |
|006Ah| |NOP | |1 |
|006Bh| |NOP | |1 |
|006Ch| |NOP | |1 |
|006Dh| |NOP | |1 |
|006Eh| |NOP | |1 |
|006Fh| |NOP | |1 |
|0070h| |NOP | |1 |
|0071h| |NOP | |1 |
|0072h| |NOP | |1 |
|0073h| |NOP | |1 |
|0074h| |MOVF YK1, 0 |YK1(W |1 |
|0075h| |MOVWF YK2 |W( YK2 |1 |
|0076h| |MOVF YK, 0 |YK (W |1 |
|0077h| |MOVWF YK1 |W( YK1 |1 |
|0078h| |RRF UM, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|0079h| |ADDWF YNN |W=W+ YNN |1 |
|007Ah| |MOVWF YN |W( YN |1 |
|007Bh| |ADDWF YK |W=W+ YK |1 |
|007Ch| |BCF STATUS, C |Очистка триггера переноса|1 |
|007Dh| |RRF W, 0 |Циклический сдвиг вправо |1 |
| | | |через триггер переноса | |
|007Eh| |ADDWF W, 0 |W=W+W |1 |
|007Fh| |ADDWF YLL |W=W+ YLL |1 |
|0080h| |MOVWF YL |W( YL |1 |
|0081h| |MOVWF PORTB |W( PORTB |1 |
|0082h| |MOVF YN1, 0 |YN1(W |1 |
|0083h| |MOVWF YN2 |W( YN2 |1 |
|0084h| |MOVF YN, 0 |YN (W |1 |
|0085h| |MOVWF YN1 |W( YN1 |1 |
|0086h| |MOVF YL, 0 |YL (W |1 |
|0087h| |MOVWF YL1 |W( YL1 |1 |
|0088h| |MOVF UM, 0 |UM (W |1 |
|0089h| |MOVWF UM1 |W( UM1 |1 |
|008Ah| |GOTO M2 |Безусловный переход на |1 |
| | | |метку | |
| |END | | |
|Всего вместе с программой обработки прерывания |283 |
Время выполнения программы 56 мкс.
Операции NOP предназначены для синхронизации работы АЦП с программой.
Также для этой цели было добавлено 4 команды перед операциями над текущим
значением отсчета. В составленном алгоритме данные коррекции небыли
предусмотрены. Время выполнения программы, реализующей цифровой фильтр, равно 49 мкс. Интервал дискретизации сигнала равен 24,6 мкс, соответственно
частота дискретизации равна 41000Гц. В программе используются два перехода:
один для обнуления ОЗУ, другой – для возврата программы на место запуска
АЦП. При использовании более современных PIC процессоров возможно
исключение операций NOP.
6 РАЗРАБОТКА И ОПИСАНИЕ ПРИНЦИПИАЛЬНОЙ
СХЕМЫ
Для технической реализации ЦФ необходимы следующие элементы:
- процессор;
- ЦАП;
- Блок питания от сети 220 В, 50 Гц.
Описание процессора:
Основным блоком ЦФ является процессор PIC16C711 (рис.6.1). Приведём
краткую характеристику интересующих для данной задачи выводов процессора.
RA4/RTCC - Вход через триггер Шмита. Ножка порта ввода/вывода с открытым
стоком или вход частоты для таймера/счетчика RTCC. RA0/AIN0 -
Двунаправленная линия ввода/вывода. Аналоговый вход канала 0. Как цифровой
вход имеет уровни ТТЛ.
RA1/AIN1 - Двунаправленная линия ввода/вывода. Аналоговый вход канала 1.
Как цифровой вход имеет уровни ТТЛ.
RA2/AIN2 - Двунаправленная линия ввода/вывода.Аналоговый вход канала 2. Как
цифровой вход имеет уровни ТТЛ.
RA3/AIN3/Vref - Двунаправленная линия ввода/вывода. Аналоговый вход канала
3. Как цифровой вход имеет уровни ТТЛ.
RB0/INT - Двунаправленная линия порта вывода или внешний вход прерывания.
Уровни ТТЛ.
RB1 - RB5 - Двунаправленные линии ввода/ вывода. Уровни ТТЛ.
RB6 - Двунаправленные линии ввода/ вывода. Уровни ТТЛ.
RB7 - Двунаправленные линии ввода/ вывода. Уровни ТТЛ.
/MCLR/Vpp - Низкий уровень на этом входе генерирует сигнал сброса для
контроллера. Активный низкий. Вход через триггер Шмитта.
OSC1 - Для подключения кварца, RC или вход внешней тактовой частоты.
OSC2 /CLKOUT - Генератор, выход тактовой частоты в режиме RC генератора, в
остальных случаях - для подключения кварца.
Vdd - Напряжение питания.
Vss – Общий (земля).
RA2/AIN2 1 18 RA1/AIN1
RA3/AIN3/Vref RA0/AIN0
RA4/RTCC OSC1/CLKIN
/MCLR/Vpp OSC2/CLKOUT
Vss PIC16C711 Vdd
RB0/INT RB7
RB1 RB6
RB2 RB5
RB3 9 10 RB4
Рисунок 6.1 – Выводы процессора PIC16C711
Рекомендуем скачать другие рефераты по теме: шпаргалки по математике, сочинение по русскому, индия реферат.
Категории:
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 | Следующая страница реферата