Регистры eecon1 и eecon2

ПАМЯТЬ

В микроконтроллере PIC16F84A существует два блока памяти -память программ и память данных. Каждый блок имеет собствен­ную шину, таким образом, доступ к блокам может происходить одновременно.

Память данных, в свою очередь, разделена на специальные регистры и регистры общего применения (ОЗУ пользователя). Специ­альные регистры применяются для хранения битов состояния, опре­деляющих работу портов ввода/вывода, таймеров и других перифе­рийных модулей контроллера. Подробно каждый специальный ре­гистр описан при рассмотрении соответствующего модуля. Кроме специальных регистров и ОЗУ, пространство памяти дан­ных содержит ячейки ЕЕРКОМ. Эта область памяти не может быть адресована непосредственно, и доступ к ней получают через специ­альный регистр косвенной адресации ЕЕАЕЖ, в который записы­вают порядковый номер ячейки. 64 байта ЕЕРКОМ имеют номера с ООН по ЗРН. Обычно ЕЕРКОМ используется для хранения констант, значения которых не должны пропадать при отключении питания, например кодов управления, индивидуальных номеров и т.п. Важ­ным достоинством ЕЕРКОМ является то, что данные в ней могут быть изменены даже после занесения программы в однократно про­граммируемый кристалл.

Память программ:

Микроконтроллер PIC16F84A имеют 13-битный про­граммный счетчик, позволяющий адресовать до 8Кx14 памяти про­грамм. В PIC16F84A доступны первые 1024 (0000h-03FFh) ячеек

МПиМПС.230101.02.ВМ10.08 Лист 8 Изм Лист № докум. Подпись Дата
  памяти. Обращение к старшим адресам, лежащим за пределами ука­занного диапазона физически равносильно обращению к соответст­вующим адресам внутри диапазона, например, для PIC16F84A адреса 30h, 430h, 830h, C30h, 1030h, 1430h, 1830h и 1C30h равносильны и адресуют одну и ту же команду. Старт по сбросу происходит с адреса 0000h, вектор прерывания один и расположен по адресу 0004h. Обычно по адресу 0004h распо­лагают подпрограмма распознавания и обработки прерываний, а по адресу 000h команду перехода на метку, расположенную за под­программой обработки прерывания. Память данных: В микроконтроллере PIC16F84A память данных разбита на две части - специальные регистры и регистры общего назначения (ОЗУ). Кроме этого, память данных разделена на два банка. Организация памяти данных графически показана ниже: Таблица №3
Адрес     00h     01h     02h   03h   04h   05h 06h 07h 08h 09h 0Ah 0Bh 0Ch         Адрес     80h   81h   82h   83h   84h   85h 86h 87h 88h 89h 8Ah 8Bh 8Ch      
Косвенный адрес Косвенный адрес команда, которая исполь­зует (адрес 00) в качестве регистра фактически обращается к указа­телю, который хранится в FSR  
TMR0 OPTION содер­жит управляющие биты, которые определяют конфигурацию делителя, куда он подключен: к RTCC или WDT, знак фронта внеш­него прерывания INT и внешнего сигнала для RTCC, подключение ак­тивной нагрузки на порту RB
PCL PCL Младшие 8 бит п ограммного счетчика
STATUS STATUS содержит арифметические флаги АЛУ, состояние кон­троллера при сбросе и биты выбора страниц для памяти данных
FSR FSR Указатель косвенной адресации памяти данных
PORTA TRISA Направление данных через порт А
PORTB TRISB Направление данных через порт В
Недоступен Недоступен  
EEDATA EECON    
EEADR EECON2  
PCLATH PCLATH Старший байт программного счетчика
INTCON INTCON Управляющий регистр прерываний
68 регистров обще­го применения (SRAM) Отображается на пространство банка 0    


МПиМПС.230101.02.ВМ10.08 Лист
9
Изм Лист № докум. Подпись Дата
  Переключение банков происходит при помощи задания 5-го бита в регистре STATUS Если бит установлен в 0, адресуется нулевой банк, если в 1, соответственно, первый. Некоторые специальные регистры адресуют­ся независимо от включенного банка. Например, обращение по адресу 03h при включенном банке 0 или по адресу 83h при включенном банке 1 равнозначно дает доступ к специальному регистру STATUS. Регистры общего применения представляют собой статическое ОЗУ и могут быть адресованы непосредственно или косвенно, с применением регистра кос­венной адресации FSR. 1.3 РЕГИСТР STATUS Регистр STATUS хранит арифметические флаги АЛУ, информа­цию о сбросе и бит выбора банка памяти данных. Как и любой дру­гой регистр, STATUS может являться регистром назначения для лю­бой операции. регистры eecon1 и eecon2 - student2.ru В данном проекте используется только флаг PR0.     RP1, RPO - биты выбора страницы памяти данных при прямой адре­сации. Страница памяти выбирается в соответствии с таблицей. Таблица №4
RP1 RPO № страницы Адреса
(OOh-7Fh)
(80h- Fh)
(100h-l7Fh)
(180h-lFFh)

На каждой странице расположено 128 байт. Однако в кристалле PIC16F84A используется только RPO, поэтому RP1 может использоваться, как бит общего назначения чтения/записи.

СТЕК

Микроконтроллер PIC16F84A имеет 8-уровневый 13-битный ап­паратный стек. Стек не является частью памяти данных или программ и указатель стека не доступен для чтения или записи.

Содержимое 13-битного программного счетчика загружается в стек при выполнении команды CALL или переходе в подпрограмму прерывания. При выполнении команд RETURN, RETLW и RETFIE содержимое программного счетчика восстанавливается.

МПиМПС.230101.02.ВМ10.08 Лист
10
Изм Лист № докум. Подпись Дата
  Стек организован как циклический буфер. Это означает, что после того, как в стек записано восьмое значение, вновь поступившее девя­тое значение будет записано на место первого, десятое на место вто­рого и т.д. И наоборот, если происходило восстановление программ­ного счетчика восемь раз, то в девятый раз в него будет выгружено первое значение Стек не имеет флаг-бита, показывающего переполнение или избы­точную выгрузку, поэтому пользователь должен самостоятельно сле­дить, чтобы уровень вложения подпрограмм в любой ситуации не превышал восьми. 1.5 ПРОГРАММНЫЙ СЧЁТЧИК
Адрес Назначение
0000H Вектор сброса
   
0004Н Вектор прерывания
Программа пользователя
03FFH
0400Н Отсутствует на кристалле
1FFFH

Программный счетчик микроконтроллера (PC) содержит 13 разрядов. Младший байт счетчика является полностью доступным для чтения и записи регистром PCL (адрес 02h,82h). Старшие пять байтов счетчика непосредственно не доступны для чтения и записи. Обраще­ние к ним происходит через регистр PCLATCH (адрес 0Ah, 0Ah) яв­ляющийся буфером-защелкой для старших битов счетчика. Содержи­мое PCLATCH переносится в старшие биты РС, когда происходит запись нового значения в программный счетчик. Это случается, когда выполняются команды CALL, GOTO или регистр PCL является реги­стром назначения для результата арифметической операции.

Таблица №5

 
  регистры eecon1 и eecon2 - student2.ru

Возможность выполнять арифметические операции непосредст­венно над программным счетчиком позволяет очень просто и эффек­тивно, всего двумя командами, выполнять табличную перекодировку значений. Следует только контролировать исходное значение, чтобы программный счетчик не вышел за пределы таблицы, если в ней при­менено менее 256 записей, PIC16F84A имеют 1К программной памяти. Команды CALL и GOTO используют 11 бит для указания адреса, что позволяет использовать 2К адресного пространства. Для предстоящего расширения программной памяти PIC16F84A понадо­бятся еще два бита, определяющие ее страницы.

МПиМПС.230101.02.ВМ10.08 Лист
11
Изм Лист № докум. Подпись Дата
1.6 УПРАВЛЯЮЩИЕ РЕГИСТРЫ ДЛЯ EEPROM Таблица №6
Название функция Адрес Значение после включения
EEDATA EEPROM регистр данных 08h хххххххх
EEADR EEPROM регистр ад­реса 09h хххххххх
EECONI EEPROM I управля­ющий регистр S8h 0000 X000
EECON2 EEPROM 2 управля­ющий регистр 89h  

РЕГИСТРЫ EECON1 И EECON2

Регистр EECON1 (адрес 88h) — это управляющий регистр шириной пять бит.

Младшие пять бит физически существуют, а старшие три бита читаются всегда как '0'.

Регистр EECON1 Адрес 88h

Сброс при вкл. - 0000X000

Таблица №7

  - - EEIF WRERR WREN WR RD

Управляющие биты RD и WR запускают соответственно чтение и запись. Они могут быть установлены только программно. Сбрасываются — аппаратно по завершении операций чтения/записи. Запрет программного сброса бита WR предотвращает преждевременное окончание записи.

RD - бит чтения.

RD =1: запускает чтение памяти данных EEPROM. Чтение занимает один цикл. Устанавливается программно. Обнуляется аппаратно.

WR - бит записи.

WR = 1: запускает запись в память данных EEPROM.

Устанавливается программно. Обнуляется аппаратно.

WREN - бит разрешения записи в память данных EEPROM.

WREN = 1: разрешена запись.

WREN = 0: запрещена запись.

После включения питания WREN обнуляется.

Флаг ошибки WRERR устанавливается, когда процесс записи прерывается сигналом сброса MCLR или сигналом сброса от WDT-таймера.

МПиМПС.230101.02.ВМ10.08 Лист
12
Изм Лист № докум. Подпись Дата
  WRERR - флаг ошибки записи. WRERR = 1: флаг устанавливается, когда операция записи преждевременно прерывается сигналом сброса /MCLR (во время обычного режима или режима SLEEP) или сигналом сброса WDT во время обычного режима. Флаг EEIF устанавливается, когда встроенный автомат завершает запись в память данных. Он должен быть сброшен программно. EEIF - флаг завершения записи. EEIF = 1: флаг устанавливается, когда завершена запись Соответствующий бит разрешения прерывания — EEIE в регистре INTCON. Регистр EECON2 не реализован физически и не допускает чтения. Возмож­на запись в регистр кодов 0х055/0х0АА для контроля правильности выполне­ния операции записи. Регистр используется только в обязательной последова­тельности при записи в память. Регистры EEADR и EEDATA необходимы для формирования и ввода адреса и данных в EEPROM. К ним применимы команды обычных регистров.   1.8 НАЗНАЧЕНИЕ РАЗРЯДОВ РЕГИСТРА ПРЕРЫВАНИЙ И ФЛАГОВ INTCON Таблица №8
Бит   Назначение
  GIE-0/1   общее разрешение/запрещения
EEIE-0/1 разрешение прерывания по завершению записи во Rash-ПЗУ прерывание запрещено/пре ы ание разрешено
Т01Е-0/1 разрешение прерывания по переполнению TMR0 прерывание запрещено/прерывание разрешено
INTE 0 = 1 = разрешения внешнего прерывания с входа RB0/INT запрещено прерывание разрешено прерывание
RBIE 0/ 1 разрешения прерывания по изменению входного сигнала PORTB прерывание запрещено/прерывание ра решено
T01F-0/1 флаг прерывания по переполнению TMR0 переполнение не происходило, произошло переполнение TMR0

Назначение:

1NTF — флаг внешнего прерывания с входа RB0/1NT (подлежит программной очистке)

0 - внешнее прерывание не происходило

1 - произошло внешнее прерывание

МПиМПС.230101.02.ВМ10.08 Лист
13
Изм Лист № докум. Подпись Дата
RBIF — флаг прерывания по изменению входного сигнала PORTB (подлежит програм­мной очистке) 1- сигнал на входах RB4—RB7 не изменялся 0- изменился сигнал на одном из входов RB4—RB7   1.9 СЛОВО КОНФИГУРАЦИИ Таблица №9
0 и 1 бит FOSC0 и FOSCI — определяют выбор типа генератора.
2 бит WDT=0 - разрешает работу сторожевого таймера. WDT выключен
    1=WDT включен
З б т PWRTE - включение PWRT 0 - PWRT выключен PWRT 1- включен
4-13 биты СР-0=биты защиты содержимого Flash-ПЗУ данных защита включена 1 = зашита выключена.

ПОРТЫ ВВОДА/ВЫВОДА.

Контроллер PIC16F84A имеет два порта ввода-вывода, PORT A и PORT B. Каждый вывод порта может быть запрограммирован на ввод или на вывод установкой соответствующего бита в регистрах TRISA и TRISB. Выводимые значения фиксируются в регистрах-защелках PORTA и PORTB. Направление ввода-вывода может быть изменено в произвольный момент времени. Кроме этого, некоторым выводам присвоены дополнительные функции.

PORTА:

Регистр PORTA представляет собой 5-битную защелку. Линия RA4 имеет триггер Шмитта на входе в режиме ввода и открытый сток в режиме вывода. Остальные линии порта А по входу работают со стандартными уровнями TTL. Линия RA4 используется также как вход внешних тактовых импульсов для таймера TMR0.

Направление передачи данных для каждой линии программирует­ся отдельно, установкой или сбросом битов bit0…bit4 регистра TRISA. Установка бита в 1 настраивает соответствующую линию на ввод. Выходной драйвер при этом переходит в высокоимпедансное состояние. Установка бита в 0 настраивает линию порта на вывод и выводит на нее содержимое соответствующего бита защелки PORTA. По умолчанию при включении питания все линии настроены на ввод. При чтении порта А всегда считываются действительные логические уровни на выводах, независимо от того, запрограммированы отдель­ные разряды как входы или как выходы.

Все операции записи в порт внутренне исполняются как чтение-модификация-запись.

МПиМПС.230101.02.ВМ10.08 Лист
14
Изм Лист № докум. Подпись Дата
PORTB: Порт В представляет собой 8-битный двунаправленный порт. Выходные значения записываются в регистр-защелку PORTB. Направление вво­да-вывода определяется установкой или сбросом битов регистра TRISB. Установка бита в 1 настраивает соответствующую линию на ввод, переводя выходной драйвер в высокоимпедансное состояние на вывод. При включении питания все линии по умолчанию настро­ены на ввод. Как и для порта А, чтение порта В всегда возвращает действительные значения на выводах, независимо от направления пе­редачи данных для каждого вывода. Все выводы порта В имеют встроенную отключаемую нагрузку в виде резисторов, подключенных к шине питания. Нагрузка включается и отключается одновременно для всех выводов при помощи бита 7 RBPU регистра OPTION_REG. При включении питания RBPU=1 и нагрузка отключена. Программное обнуление бита RBPU подключает нагрузку, но для линий, настроен­ных на вывод нагрузка автоматически отключается. Линии RB4…RB7 могут использоваться как входы прерывания по изменению уровня. В этом качестве используются только линии, наст­роенные на ввод. В каждом командном цикле происходит сравнение текущих значений на выводах с предыдущими, зафиксированными в специальной защелке. Если хотя бы на одном из этих выводов про­изошло изменение уровня, формируется прерывание. Длительность импульса, который распознается как изменение уровня, должна быть не менее 4-х периодов тактовой частоты. Программно распознать, по какой из линий RB4…RB7 произошло прерывание, невозможно. 1.11 РЕГИСТР TMR0 И МОДУЛЬ TIMER0. TIME0 является программируемым модулем таймера/счетчика. Он имеет в своем составе: -8-битный таймер/счетчик TMR0, доступный для чтения и записи как регистр. -программируемый предварительный делитель (предделитель) мультиплексор входного сигнала. Режим таймера задается сбросом бита T0CS регистра OPTION_REG. Если не подключен предделитель, инкрементирование происходит каждый командный цикл. Если производилась запись в регистр TMR0, его инкрементиро­вание начнется спустя два командных цикла, поэтому записываемая переменная должна быть соответственно скорректирована. Режим счетчика задается установкой в 1 бита T0CS. В этом случае инкрементирование TMR0 происходит от внешнего источника, под­ключенного к выводу RA4/T0CK. Активный фронт входных импуль­сов можно задавать программно. Если бит T0SE регистра OPTION_REG сброшен, активным является нарастание сигнала.  
МПиМПС.230101.02.ВМ10.08 Лист
15
Изм Лист № докум. Подпись Дата
  1.12 КОМАНДЫ МИКРОКОНТРОЛЛЕРА Таблица №10
  Мнемокод команды   Название
MOVLW k Пересылка константы в W
MOVWF f Пересылка W в f
DECFSZ f,w Декремент f, пропустить следующую команду, если 0
CLRF f Очистка регистра
SWAPF f,w Обмен местами тетрад в f
DECF f,w Уменьшить на 1 f
INCF f,w Инкремент f
Бит-ориентированные команды
BCF f,b Сброс бита в регистре f
BSF f,b Установка бита в регистре f
BTFSC f,b Пропустить следующую команду, если бит равен 1
Операции с константами и команды передачи управления
CALL adr Вызов подпрограммы
GOTO adr Переход по адресу
ADDWF сложение
RETFIE Возврат из подпрограммы

Каждая команда PIC16F84 — это 14-битовое слово, которое разделено по смыслу на следующие части: — 1 поле операции, -2 поле для одного и более операндов, которые могут участвовать или нет в этой команде. Система команд PICI6F84 включает в себя байт-ориентированные команды, бит-ориентирован­ные, операции с константами и команды передачи управления.

Для байт-ориентированных команд f обозначает собой регистр, с которым производится действие; "w" — бит определяет, куда положить результат. Если "w" = 0, то результат будет помещен в W-регистр, при "w" = I результат будет помещен в f, упомянутым в команде. Для бит-ориентированных команд "b" обозначает номер бита, участвующего в команде, а f это регистр, в котором этот бит расположен. Для команд передачи управления и операций с константами, "к" обозначает восьми или одиннадцатибитную константу.

МПиМПС.230101.02.ВМ10.08 Лист
16
Изм Лист № докум. Подпись Дата
  Все команды выполняются в течение одного командного цикла. В двух слу­чаях исполнение команды занимает два командных цикла: 1. - проверка условия и переход 2. - изменение программного счетчика как результат вы­полнения команды. При выборе МК для решения задачи следует учитывать следующие параметры: 1. Производительность МК. Помимо разрядности и архитектуры МК, здесь важную роль играет тактовая частота, объемы памяти данных и команд на кристалле. 2. Состав периферийных устройств на кристалле МК. Помимо традиционных для МК таймер-счетчиков и параллельных портов вво­да-вывода, это могут быть АЦП, последовательные порты ввода-вы­вода, ШИМ, процессоры событий и т.д. 3. Система прерываний. Во многих приложениях использование системы прерываний необходимо для работы в реальном времени.  
МПиМПС.230101.02.ВМ10.08 Лист
17
Изм Лист № докум. Подпись Дата
  2.ФУНКЦИОНАЛЬНАЯ СХЕМА УСТРОЙСТВА регистры eecon1 и eecon2 - student2.ru Блок питания предполагает разъем для подключения источника питания на 12В. регистры eecon1 и eecon2 - student2.ru Блок управления – сам микроконтроллер PIC16F84A, который прошит программой «Индикаторная мигалка» и, собственно управляет его работой. регистры eecon1 и eecon2 - student2.ru Блок индикации – 8 светодиодов (можно использовать разного цвета для лучшего эффекта), так же присутствуют 8 одинаковый резисторов R6-13, которые подбираются по току (в данном случае 5 mA, т.к. все 8 диодов имеют такой рабочий ток). регистры eecon1 и eecon2 - student2.ru Блок синхронизации – включает в себя кварцевый резонатор на 10МГц, и 2 конденсатора (C1, C2) по 33 pf. С их помощью происходит стабилизация частоты мигания светодиодов в определенные промежутки времени. регистры eecon1 и eecon2 - student2.ru    
МПиМПС.230101.02.ВМ10.08 Лист
18
Изм Лист № докум. Подпись Дата
3. ПРИНЦИПИАЛЬНАЯ СХЕМА УСТРОЙСТВА Принципиальная схема устройства и перечень элементов приведены в приложении А. 4. АЛГОРИТМ ПРОГРАММЫ ФУНКЦИОНИРОВАНИЯ УСТРОЙСТВА Алгоритм программы функционирования устройства приведен в приложение Б.  
МПиМПС.230101.02.ВМ10.08 Лист
19
Изм Лист № докум. Подпись Дата
5. ПРОГРАММА НА ЯЗЫКЕ АССЕМБЛЕРА ;******************************************************** ; ; Обработка управления светодиодной мигалкой ; ; Автор : Seiichi Inoue ;********************************************************   list p=pic16f84a include p16f84a.inc __config _hs_osc & _wdt_off & _pwrte_on & _cp_off errorlevel -302 ;   ;**************** Определение метки ******************** ra0 equ 00 ;RA0 бит ra1 equ 01 ;RA1 бит ra2 equ 02 ;RA2 бит ra3 equ 03 ;RA3 бит ra4 equ 04 ;RA4 бит cnt500u equ 0c ;500 мс счетчик адрес cnt1m equ 0d ;1 мс счетчик адрес cnt100m equ 0e ;100 мс счетчик адрес cnt500m equ 0f ;500 мс счетчик адрес cnt1s equ 10 ;1 сек счетчик адрес   ;************* Определение данных образцов **************** ; '1':выкл '0':вкл   ;****** Образец 0 ****** p00 equ b'11111110' p01 equ b'11111101' p02 equ b'11111011' p03 equ b'11110111' p04 equ b'11101111' p05 equ b'11011111' p06 equ b'10111111' p07 equ b'01111111'   ;****** Образец 1 ****** p10 equ b'01111111' p11 equ b'10111111' p12 equ b'11011111' p13 equ b'11101111' p14 equ b'11110111' p15 equ b'11111011' p16 equ b'11111101' p17 equ b'11111110'   ;****** Образец 2 ****** p20 equ b'01111110' p21 equ b'10111101' p22 equ b'11011011' p23 equ b'11100111' p24 equ b'11011011' p25 equ b'10111101' p26 equ b'01111110' ;****** Образец 3 ****** p30 equ b'11111110' p31 equ b'11111101' p32 equ b'11111010' p33 equ b'11110101' p34 equ b'11101010' p35 equ b'11010101' p36 equ b'10101010' p37 equ b'01010101' p38 equ b'10101011' p39 equ b'01010111' p3a equ b'10101111' p3b equ b'01011111' p3c equ b'10111111' p3d equ b'01111111' ;****** Образец 4 ****** p40 equ b'00000000' p41 equ b'11111111' p42 equ b'00000000' p43 equ b'11111111' p44 equ b'00000000' p45 equ b'11111111' p46 equ b'00000000' p47 equ b'11111111' p48 equ b'00000000'  
МПиМПС.230101.02.ВМ10.08 Лист
20
Изм Лист № докум. Подпись Дата
;**************** Начало программы ********************** org 0 ;Вектор сброса goto init org 4 ;Вектор прерывания goto init   ;**************** Процесс инициализации ********************* org 5 init bsf status,rp0 ;Выбор первого банка ОЗУ movlw h'ff' ;Установка режима ввода данных movwf trisa ;Установка порта А в режим ввода clrf trisb ;Установка порта B в режим вывода bcf status,rp0 ;Выбор 0 банка ОЗУ movlw h'ff' ;Установка данных светодиодов movwf portb ;Выходные данные   ;**************** Процесс проверки переключателей ******************** keyscan btfss porta,ra0 ;RA0 включен? call ptn0 ;Да. Вызов подпрограммы 0 btfss porta,ra1 ;RA1 включен? call ptn1 ;Да. Вызов подпрограммы 1 btfss porta,ra2 ;RA2 включен? call ptn2 ;Да. Вызов подпрограммы 2 btfss porta,ra3 ;RA3 включен? call ptn3 ;Да. Вызов подпрограммы 3 btfss porta,ra4 ;RA4 включен? call ptn4 ;Да. Вызов подпрограммы 4 goto keyscan ;Повтор   ;*********** Подпрограмма образца 0 *************** ptn0 movlw p00 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p01 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p02 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p03 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p04 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p05 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p06 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p07 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw h'ff' ; Установка данных светодиодов movwf portb ; Выходные данные call t100m ; Ожидание 100 мс return ; Возврат из подпрограммы     ;*********** Подпрограмма образца 1 *************** ptn1 movlw p10 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p11 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p12 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p13 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p14 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p15 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p16 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p17 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw h'ff' ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс return ; Возврат из подпрограммы
МПиМПС.230101.02.ВМ10.08 Лист
21
Изм Лист № докум. Подпись Дата

  ;*********** Подпрограмма образца 2 *************** ptn2 movlw p20 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p21 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p22 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p23 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p24 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p25 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p26 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw h'ff' ; Установка данных светодиодов movwf portb ; Выходные данные call t100m ; Ожидание 100 мс return ; Возврат из подпрограммы   ;*********** Подпрограмма образца 3 *************** ptn3 movlw p30 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p31 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p32 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p33 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p34 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p35 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p36 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p37 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p38 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p39 ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p3a ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p3b ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p3c ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw p3d ; Установка данных подпрограммы movwf portb ; Выходные данные call t100m ; Ожидание 100 мс movlw h'ff' ; Установка данных светодиодов movwf portb ; Выходные данные call t100m ; Ожидание 100 мс return ; Возврат из подпрограммы    
МПиМПС.230101.02.ВМ10.08 Лист
22
Изм Лист № докум. Подпись Дата
  ;*********** Подпрограмма образца 4 *************** ptn4 movlw p40 ; Установка данных подпрограммы movwf portb ; Выходные данные call t1s ;Ожидание 1 сек movlw p41 ; Установка данных подпрограммы movwf portb ; Выходные данные call t1s ; Ожидание 1 сек movlw p42 ; Установка данных подпрограммы movwf portb ; Выходные данные call t1s ; Ожидание 1 сек movlw p43 ; Установка данных подпрограммы movwf portb ; Выходные данные call t1s ; Ожидание 1 сек movlw p44 ; Установка данных подпрограммы movwf portb ; Выходные данные call t1s ; Ожидание 1 сек movlw p45 ; Установка данных подпрограммы movwf portb ; Выходные данные call t1s ; Ожидание 1 сек movlw p46 ; Установка данных подпрограммы movwf portb ; Выходные данные call t1s ; Ожидание 1 сек movlw p47 ; Установка данных подпрограммы movwf portb ; Выходные данные call t1s ; Ожидание 1 сек movlw p48 ; Установка данных подпрограммы movwf portb ; Выходные данные call t1s ; Ожидание 1 сек movlw h'ff' ; Установка данных светодиодов movwf portb ; Выходные данные call t1s ; Ожидание 1 сек return   ;******************************************************** ; Подпрограмма таймера синхронизации на 10 МГц ;********************************************************   ;************* Подпрограмма таймера 1 мс ***************** t1m movlw d'2' ;(1) Установка цикла cnt1 movwf cnt1m ;(1) Сохранение цикла cnt1 tm1lp1 movlw d'249' ;(1)*2 Установка цикла cnt2 movwf cnt500u ;(1)*2 Сохранение цикла cnt2 tm1lp2 nop ;(1)*249*2 nop ;(1)*249*2 decfsz cnt500u,f ;(1)*249*2 cnt500u-1=0 ? goto tm1lp2 ;(2)*248*2 Нет, продолжить decfsz cnt1m,f ;(1)*2 cnt1m-1=0 ? goto tm1lp1 ;(2) Нет. Продолжить return ;(2) Да. Конец сnt ;Общее 2501*0.4usec=1msec   ;************* Подрограмма таймера 100 мс *************** t100m movlw d'100' ;Установка цикла в счетчик movwf cnt100m ;Сохранение цикла в счетчике tm2lp call t1m ;Подпрограмма 1 мс decfsz cnt100m,f ;cnt100m - 1 = 0 ? goto tm2lp ;Нет. Продолжить return ;Да. Конец счета     ;************* Подпрограмма таймера 500 мс *************** t500m movlw d'5' ;Установка цикла в счетчик movwf cnt500m ;Сохранение цикла в счетчике tm3lp call t100m ;Подпрограмма 500 мс decfsz cnt500m,f ;cnt500m - 1 = 0 ? goto tm3lp ;Нет. Продолжить return ;Да. Конец счета   ;************** Подпрограмма таймера 1 сек ***************** t1s movlw d'2' ;Установка цикла в счетчик movwf cnt1s ;Сохранение цикла в счетчике tm4lp call t500m ;Подпрограмма 500 мс decfsz cnt1s,f ;cnt1s - 1 = 0 ? goto tm4lp ;Нет. Продолжить return ;Да. Конец счета     ;******************************************************** ; Конец обработки управления светодиодной мигалкой ;********************************************************   End.    
МПиМПС.230101.02.ВМ10.08 Лист
23
Изм Лист № докум. Подпись Дата
  6. ПРОВЕРКА ПРАВИЛЬНОСТИ ФУНКЦИОНИРОВАНИЯ ПРОГРАММЫ  
RA0 Теоретическое значение выходного RB Реальное значение выходного RB
0 (обычный режим работы светофора)        
    1 (мигающий жёлтый)          
       
         
         
МПиМПС.230101.02.ВМ10.08 Лист
24
Изм Лист № докум. Подпись Дата
    7. ОЦЕНКА БЫСТРОДЕЙСТВИЯ     Для оценки быстродействия программы проводился замер количества программных циклов, затраченных на выполнение каждого режима работы. Затем было высчитано время, за которое выполнялся один программный цикл.
 
  регистры eecon1 и eecon2 - student2.ru

Период высчитывается по формуле , что для генератора с частотой 10 МГц составляет регистры eecon1 и eecon2 - student2.ru

Один программный цикл выполняется за 4 такта, т.е. за время равное 1 мс.

Умножая время одного программного цикла на их количество (128), получим время, затрачиваемое для выполнения программы.

Время на выполнение программы 128 мс.

Наши рекомендации