Реферат: Разработка микропроцессорного устройства цифрового фильтра

--PAGE_BREAK--3 СИНТЕЗ ПРОЕКТИРУЕМОГО УСТРОЙСТВА
Структурная схема типа реализации ЦФ приведена на рис.3.1. Параметры звеньев ЦФ следующие :

параметры звена <img width=«48» height=«21» src=«ref-1_448253336-149.coolpic» v:shapes="_x0000_i1029">: <img width=«295» height=«24» src=«ref-1_448253485-457.coolpic» v:shapes="_x0000_i1030">;

параметры звена <img width=«48» height=«21» src=«ref-1_448253942-149.coolpic» v:shapes="_x0000_i1031">: <img width=«148» height=«24» src=«ref-1_448254091-266.coolpic» v:shapes="_x0000_i1032">;

параметры звена <img width=«45» height=«21» src=«ref-1_448254357-142.coolpic» v:shapes="_x0000_i1033">: <img width=«304» height=«25» src=«ref-1_448254499-459.coolpic» v:shapes="_x0000_i1034">.
<img width=«552» height=«204» src=«ref-1_448254958-2627.coolpic» v:shapes="_x0000_s1624 _x0000_s1625 _x0000_s1626 _x0000_s1627 _x0000_s1628 _x0000_s1629 _x0000_s1630 _x0000_s1657 _x0000_s1658 _x0000_s1660 _x0000_s1661 _x0000_s1662 _x0000_s1663 _x0000_s1664 _x0000_s1665 _x0000_s1666 _x0000_s1667 _x0000_s1668 _x0000_s1671 _x0000_s1672 _x0000_s1673">
Рис. 3.1 – Структурная схема цифрового фильтра

         

Исходя из этой структуры, а также коэффициентов, для каждого звена составим разностные уравнения:

1)    первое звено:

<img width=«255» height=«24» src=«ref-1_448257585-405.coolpic» v:shapes="_x0000_i1038">;

2)    второе звено:

<img width=«135» height=«24» src=«ref-1_448257990-257.coolpic» v:shapes="_x0000_i1039">;

3)    третье звено:

<img width=«399» height=«24» src=«ref-1_448258247-579.coolpic» v:shapes="_x0000_i1040">.

Результирующее разностное уравнение для цифрового фильтра будет иметь вид:

          <img width=«53» height=«24» src=«ref-1_448258826-137.coolpic» v:shapes="_x0000_i1041">.
4 РАЗРАБОТКА АЛГОРИТМА ПРОГРАММЫ

 ПРОЕКТИРУЕМОГО УСТРОЙСТВА
Прежде чем приступить к программированию устройства необходимо основательно изучить его внутреннюю структуру и возможности ресурсов. Простейшая блок-схема  проектируемого устройства приведена на рисунке 4.1 В ней учтены конфигурация портов и АЦП, вычисление разностного уравнения фильтра, результат вычислений выдается на порт В.

<img width=«98» height=«66» src=«ref-1_448258963-609.coolpic» v:shapes="_x0000_s1083">

                                                        Начало

<img width=«12» height=«25» src=«ref-1_448259572-106.coolpic» v:shapes="_x0000_s1084">


<img width=«98» height=«66» src=«ref-1_448259678-295.coolpic» v:shapes="_x0000_s1085">

                                      Порт А –

                                                         вход

<img width=«12» height=«24» src=«ref-1_448259973-105.coolpic» v:shapes="_x0000_s1086">


<img width=«98» height=«66» src=«ref-1_448260078-283.coolpic» v:shapes="_x0000_s1087">                                       Порт В –

                                                         выход

<img width=«12» height=«38» src=«ref-1_448260361-115.coolpic» v:shapes="_x0000_s1089">




<img width=«98» height=«66» src=«ref-1_448260476-328.coolpic» v:shapes="_x0000_s1088">                                        Запуск

<img width=«2» height=«287» src=«ref-1_448260804-104.coolpic» v:shapes="_x0000_s1097"><img width=«71» height=«12» src=«ref-1_448260908-109.coolpic» v:shapes="_x0000_s1098">                                                          АЦП

<img width=«12» height=«62» src=«ref-1_448261017-136.coolpic» v:shapes="_x0000_s1091">



<img width=«98» height=«79» src=«ref-1_448261153-398.coolpic» v:shapes="_x0000_s1090">                                                   Вычисление

                                                   разностного

                                                     уравнения

<img width=«12» height=«31» src=«ref-1_448261551-111.coolpic» v:shapes="_x0000_s1094">


<img width=«99» height=«69» src=«ref-1_448261662-727.coolpic» v:shapes="_x0000_s1092">                                                     Выдача

                                                  Результата

<img width=«2» height=«21» src=«ref-1_448262389-76.coolpic» v:shapes="_x0000_s1095">                                               На порт В

<img width=«118» height=«2» src=«ref-1_448262465-91.coolpic» v:shapes="_x0000_s1096">




Рисунок 4.1 – блок-схема работы цифрового фильтра
Опираясь на данную блок схему, начнем более тщательное

<img width=«12» height=«13» src=«ref-1_448262556-94.coolpic» v:shapes="_x0000_s1638">рассмотрение вопроса. Конфигурация портов и АЦП задается исходя из документации предлагаемой производителем. Данная документация содержит примеры программ для настройки портов и АЦП. Оговорим некоторые аспекты этих программ применительно к нашему курсовому проекту. Контакты порта А зададим входами установкой битов в регистре TRISA. Данное условие необходимо для осуществления аналого-цифровой обработки сигнала. Контакты порта В зададим как выходные сбросом битов в регистре TRISB. Для АЦП выберем канал 0, то есть вывод микропроцессора RA0. В PIC16C711 на одно преобразование АЦП необходим минимальный интервал времени 10Тad, где Тad =1,6мкс выбирается программно. Также одной из важных частей программы запуска АЦП является организация разрешения прерываний.

          После конфигурации портов и запуска АЦП необходимо приступить к выполнению программы вычисления разностного уравнения, описывающего фильтр.    

          Просчитаем количество переменных, входящих в уравнения. Это количество будет определять необходимое число байт памяти. В нашем случае оно составляет 17. Нетрудно заметить, что коэффициенты разностных уравнений подобраны таким образом, что умножение переменной на них будет делением на 2,4,8…, а эта операция выполняется путем сдвига регистра вправо. Для хранения промежуточных данных сдвиговых операций и операций сложения нам понадобятся дополнительные ячейки памяти в количестве 17. При начальном запуске программы или при сбросе микропроцессорной системы все ячейки памяти необходимо сбросить в нуль.

          На обработку данных АЦП требуется, как указывалось ранее, время. Чтобы повысить эффективность и качество системы, необходимо во время просчета АЦП, вместо простоя и ожидания системой результата просчета, произвести вычисления без участия текущего значения отсчета. Вычисления с участием текущего значения отсчета должны производиться через время, равное 10Tad.

          Результат вычисления АЦП будет обрабатывать программа прерывания. 

          Исходя из всех вышеприведенных соображений, составим окончательный алгоритм программы:

<img width=«50» height=«50» src=«ref-1_448262650-838.coolpic» v:shapes="_x0000_s1676"><img width=«98» height=«66» src=«ref-1_448263488-386.coolpic» v:shapes="_x0000_s1131">

       Начало                                                                                                          1
<img width=«12» height=«39» src=«ref-1_448263874-114.coolpic» v:shapes="_x0000_s1677">


                                                                   

<img width=«98» height=«66» src=«ref-1_448259678-295.coolpic» v:shapes="_x0000_s1684">                                                                               

   Установка                                                                                        

   порта А на                                                                                                COUNT-1

   ввод                                                   

<img width=«100» height=«94» src=«ref-1_448264283-646.coolpic» v:shapes="_x0000_s1688 _x0000_s1689 _x0000_s1690"><img width=«12» height=«25» src=«ref-1_448264929-105.coolpic» v:shapes="_x0000_s1135">                                                                                                                                                               

                                                               

<img width=«12» height=«26» src=«ref-1_448265034-106.coolpic» v:shapes="_x0000_s1132"><img width=«98» height=«66» src=«ref-1_448260078-283.coolpic» v:shapes="_x0000_s1136"><img width=«98» height=«66» src=«ref-1_448265423-325.coolpic» v:shapes="_x0000_s1134">

   Установка                                                                                   да

<img width=«182» height=«2» src=«ref-1_448265748-84.coolpic» v:shapes="_x0000_s1693"><img width=«7» height=«467» src=«ref-1_448265832-286.coolpic» v:shapes="_x0000_s1194">    порта В на                                                                                                   Z=0            

<img width=«50» height=«50» src=«ref-1_448266118-630.coolpic» v:shapes="_x0000_s1898">    вывод                                                               

<img width=«98» height=«547» src=«ref-1_448266748-1863.coolpic» v:shapes="_x0000_s1713 _x0000_s1695 _x0000_s1696 _x0000_s1697 _x0000_s1698 _x0000_s1699 _x0000_s1700 _x0000_s1701 _x0000_s1702 _x0000_s1703 _x0000_s1704 _x0000_s1705 _x0000_s1706 _x0000_s1707 _x0000_s1708 _x0000_s1709 _x0000_s1710 _x0000_s1711 _x0000_s1712">                                                                                                                                    нет     

<img width=«123» height=«12» src=«ref-1_448268611-122.coolpic» v:shapes="_x0000_s1904">                                                                               6                                                                              
    0x17®W                                                                                              Сброс ADCON1

                                                                                                                           

<img width=«98» height=«92» src=«ref-1_448268733-470.coolpic» v:shapes="_x0000_s1165 _x0000_s1166 _x0000_s1167"><img width=«98» height=«93» src=«ref-1_448269203-417.coolpic» v:shapes="_x0000_s1168 _x0000_s1169 _x0000_s1170"><img width=«98» height=«92» src=«ref-1_448269620-416.coolpic» v:shapes="_x0000_s1171 _x0000_s1172 _x0000_s1173"><img width=«98» height=«92» src=«ref-1_448270036-470.coolpic» v:shapes="_x0000_s1174 _x0000_s1175 _x0000_s1176"><img width=«98» height=«92» src=«ref-1_448270506-470.coolpic» v:shapes="_x0000_s1177 _x0000_s1178 _x0000_s1179"><img width=«79» height=«12» src=«ref-1_448270976-118.coolpic» v:shapes="_x0000_s1195"><img width=«98» height=«92» src=«ref-1_448271094-387.coolpic» v:shapes="_x0000_s1180 _x0000_s1181 _x0000_s1182">                                                                                                               
  W®COUNT                                                                                                 0xC1®W

                                                                                        
 

                                                                                                                     <place w:st=«on»>W®ADCON0

  xC®W      

                                                                                           
                                                                                                                      Разрешить

                                                                                                                      прерывание  

    <place w:st=«on»>W®FSR                                                                                           АЦП                    

                                                                                    

                                                                                                                        
                                                                                                                       Разрешить

                                                                                                                       глобальное

  Сброс INDF                                                                                     прерывание                    

                                                                                                    

                                                                                                                  
      FSR+ 1                                                                                                    Пуск АЦП

                                                                                                           

<img width=«12» height=«51» src=«ref-1_448271481-122.coolpic» v:shapes="_x0000_s1714"><img width=«12» height=«51» src=«ref-1_448271481-122.coolpic» v:shapes="_x0000_s1674">                                                                                              

<img width=«50» height=«50» src=«ref-1_448271725-638.coolpic» v:shapes="_x0000_s1675">

      

<img width=«50» height=«50» src=«ref-1_448272363-624.coolpic» v:shapes="_x0000_s1715">

                                                                                                                  

            1                                                                                                                  2
<img width=«50» height=«50» src=«ref-1_448272987-618.coolpic» v:shapes="_x0000_s1753"><img width=«98» height=«323» src=«ref-1_448273605-1762.coolpic» v:shapes="_x0000_s1751 _x0000_s1716 _x0000_s1719 _x0000_s1720 _x0000_s1721 _x0000_s1722 _x0000_s1723 _x0000_s1724 _x0000_s1725 _x0000_s1726 _x0000_s1727">            2                                                                                                                     3
<img width=«98» height=«122» src=«ref-1_448275367-478.coolpic» v:shapes="_x0000_s1754 _x0000_s1755 _x0000_s1756">               
   Вычисление

  А11UM1с сох-                                                                                         Вычисление

 ранением  зна-                                                                                           A32YN2YK2=

 чения                                                                                                          =A32(YN2+YK2)

                                                                                                                       с сохранением            

<img width=«98» height=«92» src=«ref-1_448275845-406.coolpic» v:shapes="_x0000_s1757 _x0000_s1758 _x0000_s1759">                                                                                                                        значения

  Вычисление

  B11YN1 с сох-

  ранением зна-                                                                                           Вычисление

  чения                                                                                                            B31YL1
<img width=«98» height=«618» src=«ref-1_448276251-1659.coolpic» v:shapes="_x0000_s1783 _x0000_s1760 _x0000_s1761 _x0000_s1762 _x0000_s1765 _x0000_s1766 _x0000_s1767 _x0000_s1768 _x0000_s1769 _x0000_s1770 _x0000_s1771 _x0000_s1772 _x0000_s1773 _x0000_s1774 _x0000_s1775 _x0000_s1776 _x0000_s1777 _x0000_s1778 _x0000_s1779">

  Вычисление

   В12YN2                                                            

                                                                                                                               

<img width=«98» height=«126» src=«ref-1_448277910-577.coolpic» v:shapes="_x0000_s1728 _x0000_s1729 _x0000_s1730">                                                                                                                               

                                                                                                                      ВычислениеYLL         

                                                                                                                      = A31YN1YK1+           

    Вычисление                                                                                          + A32YN2YK2-            

YNN=А11UM1-                                                                                        — B31YL1 с сох-           

— B11YN1-                                                                                                   ранением зна-

— В12YN2 с сох-                                                                                         чения             

ранением зна-

<img width=«98» height=«92» src=«ref-1_448278487-443.coolpic» v:shapes="_x0000_s1731 _x0000_s1732 _x0000_s1733">чения
   Вычисление                                                                                               YK1 ®W

 A21UM1 с сох-

ранением зна-

<img width=«98» height=«93» src=«ref-1_448278930-502.coolpic» v:shapes="_x0000_s1734 _x0000_s1735 _x0000_s1736">чения
   Вычисление                                                                                                W®YK2

   B21YK1
<img width=«98» height=«122» src=«ref-1_448279432-568.coolpic» v:shapes="_x0000_s1738 _x0000_s1739 _x0000_s1740">
                                                                                                                               

Вычисление                                                                                                   YK®W   

YK=А21UM1-

— B21YK1 с сох-

ранением зна-

чения

<img width=«105» height=«122» src=«ref-1_448280000-498.coolpic» v:shapes="_x0000_s1741 _x0000_s1742 _x0000_s1743">                                                                                                                           <place w:st=«on»>W®YK1 

                                                                                                                               
Вычисление

A31YN1YK1 =

=A31(YN1+YK1)                                                                                        Вычисление               

с сохранением                                                                                            A10UM        

значения

<img width=«12» height=«27» src=«ref-1_448280498-104.coolpic» v:shapes="_x0000_s1748"> <img width=«12» height=«15» src=«ref-1_448280602-92.coolpic» v:shapes="_x0000_s1785">


<img width=«50» height=«50» src=«ref-1_448280694-589.coolpic» v:shapes="_x0000_s1784"><img width=«50» height=«50» src=«ref-1_448280694-589.coolpic» v:shapes="_x0000_s1749">




            3                                                                                                                      4   
           4                                                    6                                               5

<img width=«50» height=«50» src=«ref-1_448266118-630.coolpic» v:shapes="_x0000_s1893"><img width=«50» height=«50» src=«ref-1_448282502-837.coolpic» v:shapes="_x0000_s1867"><img width=«50» height=«50» src=«ref-1_448283339-838.coolpic» v:shapes="_x0000_s1853"><img width=«98» height=«146» src=«ref-1_448284177-568.coolpic» v:shapes="_x0000_s1835 _x0000_s1836 _x0000_s1837"> 

<img width=«12» height=«195» src=«ref-1_448284745-207.coolpic» v:shapes="_x0000_s1897"> <img width=«98» height=«92» src=«ref-1_448268733-470.coolpic» v:shapes="_x0000_s1868 _x0000_s1869 _x0000_s1870">




Вычисление

  YN=A10UM+                                                                                                  UM®W   

   +YNN

<img width=«98» height=«92» src=«ref-1_448275845-406.coolpic» v:shapes="_x0000_s1871 _x0000_s1872 _x0000_s1873">   с сохранением

   значения

<img width=«98» height=«122» src=«ref-1_448285828-539.coolpic» v:shapes="_x0000_s1838 _x0000_s1839 _x0000_s1840">
                                                                                                                           <place w:st=«on»>W®UM1

Вычисление

<img width=«98» height=«92» src=«ref-1_448286367-406.coolpic» v:shapes="_x0000_s1881 _x0000_s1882 _x0000_s1883">YL=A30(YN+

<img width=«146» height=«2» src=«ref-1_448286773-83.coolpic» v:shapes="_x0000_s1889">+YK)+YLL

  с сохранением

   значения

<img width=«98» height=«93» src=«ref-1_448269203-417.coolpic» v:shapes="_x0000_s1841 _x0000_s1842 _x0000_s1843">                                                                                                                          ОСТАНОВ
Передача знач-

чения YLна

порт B

<img width=«98» height=«93» src=«ref-1_448269203-417.coolpic» v:shapes="_x0000_s1844 _x0000_s1845 _x0000_s1846">
   YN1 ®W
<img width=«98» height=«92» src=«ref-1_448268733-470.coolpic» v:shapes="_x0000_s1847 _x0000_s1848 _x0000_s1849">
   <place w:st=«on»>W®YN2
<img width=«98» height=«92» src=«ref-1_448270506-470.coolpic» v:shapes="_x0000_s1850 _x0000_s1851 _x0000_s1852">
  YN®W

<img width=«98» height=«92» src=«ref-1_448271094-387.coolpic» v:shapes="_x0000_s1856 _x0000_s1857 _x0000_s1858">
  <place w:st=«on»>W®YN1         
<img width=«98» height=«89» src=«ref-1_448289017-420.coolpic» v:shapes="_x0000_s1859 _x0000_s1860 _x0000_s1861">
  YL®W
<img width=«12» height=«25» src=«ref-1_448289437-102.coolpic» v:shapes="_x0000_s1865">


<img width=«50» height=«50» src=«ref-1_448289539-636.coolpic» v:shapes="_x0000_s1866">
           5
Рисунок 4.2 — Алгоритм программы проектируемого                                                                                                                                                                                             устройства

    продолжение
--PAGE_BREAK--5 РАЗРАБОТКА ПРОГРАММЫ НА ЯЗЫКЕ АССЕМБЛЕР

          Прежде чем приступить к написанию программы необходимо учесть спецификацию ПЗУ микроконтроллера. Организация ПЗУ изображена на рисунке 5.1

                  <img width=«404» height=«537» src=«ref-1_448290175-29550.coolpic» v:shapes="_x0000_i1042"> 

Рисунок 5.1– Организация ПЗУ PIC16C71
Из рисунка видно, что начало программыпользователя может быть расположено ниже адреса 0004h. Адрес 0000h– вектор сброса, 0004h– вектор прерывания. По этим адресам перед началом программирования, как правило, прописывают безусловный переход на программу пользователя и безусловный переход на программу обработки прерывания соответственно. Так как в случае нашей системы устройство, осуществляющее запрос прерывания, одно, то по адресу 0004hможно прописывать начало программы обработки прерывания.

          Также при программировании обязательно нужно учесть спецификацию банков ОЗУ. Структура ОЗУ изображена       на

рисунке 5. При обращении к регистрам ОЗУ каждый раз необходимо программно переключаться между банками ОЗУ, в зависимости от того в каком банке находится регистр. Ассемблер, поставляемый производителем, позволяет вначале всем регистрам присвоить вместо адреса определенное имя. Это удобно для составления программы. 
                                 <img width=«243» height=«504» src=«ref-1_448319725-27556.coolpic» v:shapes="_x0000_i1043">

Рисунок 5.2 – Организация ОЗУ PIC16C711

         

Сначала напишем программу обработки прерывания. Занесем программу в таблицу — 1 с адресами ПЗУ и комментариями.

Таблица 5.1

Адрес

Метка

Мнемонический код

Комментарии

Циклы





ORGx004

Директива



0004h



MOVWFW_TEMP

Сохранение содержимого Wв W_TEMP

1

0005h



MOVF STATUS, 0

Пересылка содержимого STATUSв W

1

0006h



MOVWF STATUS_TEMP

Сохранение Wв STATUS _TEMP

1

Продолжение таблицы 5.1

0007h



BCF STATUS, RP0

Выбор банка 0

1

0008h



MOVFADRES, 0

Пересылка результата АЦП в W

1

0009h



MOVWF UM

Пересылка Wв UM



000Ah



MOVF STATUS_TEMP, 0

ПересылкаSTATUS_TEMP вW

1

000Bh



MOVWF STATUS

Пересылка Wв STATUS

1

000Ch



MOVF W_TEMP, 0

Пересылка W_TEMPв W

1

000Dh



RETFIE

Возврат прерывания

2



          Программу, реализующую математическую модель фильтра начнем с адреса 000Ehи разместим в таблицу 5, 2.

Таблица 5.2

Адрес

Метка

Мнемонический код

Комментарии

Циклы





ORGx00E

Директива



000Eh



MOVLWxFF

Пересылка 0xFFв аккумулятор

1

000Fh



BSF STATUS, RP0

Выбор банка 1

1

0010h



MOVWFTRISA

Порт А – Вход

1

0011h



CLRF TRISB

Порт В – Выход

1

0012h



MOVLW 0x18

Организация счетчика СOUNT

1

 0013h



BCF STATUS, RP0

Выбор банка 0

1

0014h



MOVWFCOUNT

Организация счетчика

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



CLRFADCON1

RA0-RA3 Входы АЦП

1

001Eh



MOVLW 0xC1



1

001Fh



BCF STATUS,RP0

Выбор банка 0

1

0020h



MOVWFADCON

АЦП включен, работает канал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

<place w:st=«on»>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

<place w:st=«on»>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=<place w:st=«on»>W+ B11YN1

1

0037h



SUBWF A11UM1, 0

W= A11UM1- W

1

0038h



MOVWF YNN

<place w:st=«on»>W®YNN

1

0039h



BCF STATUS, C

Очистка триггера переноса

1

003Ah



RRF UM1, 0

Циклический сдвигвправочерез триггер переноса

1

003Bh



MOVWF A21UM1

<place w:st=«on»>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

<place w:st=«on»>W®YK

1

0044h



MOVF YN1, 0

YN1®W

1

0045h



ADDWF YK1

W=<place w:st=«on»>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

<place w:st=«on»>W®A31YN1YK1

1

004Fh



MOVF YN2, 0

YN2®W

1

0050h



ADDWF YK2

W=<place w:st=«on»>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

<place w:st=«on»>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=<place w:st=«on»>W+ A31YN1YK1

1

005Eh



MOVWF YLL

<place w:st=«on»>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

<place w:st=«on»>W®YK2

1

0076h



MOVF YK, 0

YK ®W

1

0077h



MOVWF YK1

<place w:st=«on»>W®YK1

1

0078h



RRF UM, 0

Циклический сдвигвправочерез триггер переноса

1

0079h



ADDWF YNN

W=W+ YNN

1

007Ah



MOVWF YN

<place w:st=«on»>W®YN

1

007Bh



ADDWF YK

W=<place w:st=«on»>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

<place w:st=«on»>W®YL

1

0081h



MOVWF PORTB

<place w:st=«on»>W®PORTB

1

0082h



MOVF YN1, 0

YN1®W

1

0083h



MOVWF YN2

<place w:st=«on»>W®YN2

1

0084h



MOVF YN, 0

YN ®W

1

0085h



MOVWF YN1

<place w:st=«on»>W®YN1

1

0086h



MOVF YL, 0

YL ®W

1

0087h



MOVWF YL1

<place w:st=«on»>W®YL1

1

0088h



MOVF UM, 0

UM ®W

1

0089h



MOVWF UM1

<place w:st=«on»>W®UM1

1

008Ah



GOTO M2

Безусловный переход на метку

1



END





Всего вместе с программой обработки прерывания

283

Время выполнения программы 56 мкс.
          Операции NOPпредназначены для синхронизации работы АЦП с программой. Также для этой цели было добавлено 4 команды перед операциями над текущим значением отсчета. В составленном алгоритме данные коррекции небыли предусмотрены. Время выполнения программы, реализующей цифровой фильтр, равно 49 мкс. Интервал дискретизации сигнала равен 24,6 мкс, соответственно частота дискретизации равна 41000Гц. В программе используются два перехода: один для обнуления ОЗУ, другой – для возврата программы на место запуска АЦП. При использовании более современных PICпроцессоров возможно исключение операций NOP.
    продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по коммуникациям