Смекни!
smekni.com

Разработка микропроцессорного устройства цифрового фильтра (стр. 5 из 7)

Таблица 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

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 мкс.