|
Программу, реализующую математическую модель фильтра начнем с адреса 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
Организация счетчика СOUNT
1
0013h
BCF STATUS, RP0
Выбор банка 0
1
0014h
MOVWF COUNT
Организация счетчика
1
0015h
MOVLW 0x0C
Адрес начальной ячейки в ОЗУ
1
0016h
MOVWF FSR
Пересылка адреса начальной ячейки в FSR
1
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
АЦП включен, работает канал0 (RA0), частота 32Tosc.
1
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
При использовании материалов активная ссылка на источник обязательна.