
- •Г.И.Загарий, н.О.Ковзель, в.С.Коновалов, в.И.Моисеенко, в.И.Поддубняк, а.И.Стасюк
- •Часть 2. Характеристики микроконтроллеров и плк
- •Рецензенты:
- •Isbn – 5–7763–0384–2
- •Isbn – 966–7561–23–2
- •Isbn – 966-7561-23-2
- •Isbn – 5–7763–0384-2
- •Содержание
- •Введение
- •Раздел 1
- •1 Микроконтроллеры фирмы Atmel
- •1.1 Микроконтроллеры серии ат89, совместимые с mcs-51™
- •1.2 Микроконтроллеры avr серии ат90 с risc-архитектурой
- •2. Микроконтроллер aDμC812 семейства MicroConverter™ фирмы analog devices
- •3 Микроконтроллеры sx18ac/sx28ac фирмы scenix
- •4 Микроконтроллеры фирмы motorola
- •5 Микроконтроллеры семейства z8 фирмы zilog
- •6 Микроконтроллеры фирмы holtek
- •7 Рiс – микроконтроллеры фирмы microchip
- •7.1 Микроконтроллер pic16f84
- •7.1.1 Архитектура микроконтроллера pic16f84
- •7.1.2 Типы корпусов и исполнения
- •7.1.3 Назначение выводов
- •7.1.4 Регистры pic16f84
- •7.1.5 Прямая и косвенная адресация регистров
- •7.1.6 Модуль таймера/счетчика
- •7.1.7 Предварительный делитель
- •7.1.8 Регистр слова состоянияStatus
- •7.1.8.1 Программные флаги регистра слова состояния
- •7.1.8.2 Аппаратные флаги состояния
- •7.1.9 Регистр option
- •7.1.11 Организация встроенного пзу
- •7.1.12 Программный счетчик и адресация пзу
- •7.1.13 Стек и возвраты из подпрограмм
- •7.1.14 Данные в eeprom
- •7.1.15 Управление eeprom Управляющие регистры для eeprom
- •Регистры eecon1 и eecon2
- •7.1.16 Организация прерываний
- •Внешнее прерывание
- •Прерывание от переполнения счетчика/таймера
- •Прерывание от порта rb
- •Прерывание от eeprom
- •7.1.17 Регистры (порты) ввода/вывода
- •7.1.18 Использование портов ввода/вывода ra и rb Организация двунаправленных портов
- •Последовательное обращение к портам ввода/вывода
- •7.1.19 Специальные функции
- •Сторожевой таймер wdt
- •Тактовый генератор
- •Таймер сброса dtr
- •Биты конфигурации
- •Защита программы от считывания
- •Режим пониженного энергопотребления
- •7.2 Обзор команд и обозначения
- •7.2.1 Описание команд
- •7.3Технология разработки и отладки рабочих программ для омк рiс16/17
- •7.3.1 Правила записи программ на языке Ассемблера
- •Операция
- •Операнд
- •Директивы Ассемблера
- •7.3.2 Структура рабочей программы
- •7.3.3 Преобразование исходного текста рабочей программы в объектный модуль
- •7.4 Интегрированная среда разработки рабочих программ mplab для омк pic
- •7.4.1 Назначение и основные функциональные возможности mplab
- •7.4.2 Краткая характеристика основных программ Редактор mplab
- •Ассемблер mpasm
- •Компилятор mplab-c
- •Программный симулятор-отладчик mplab-sim
- •7.4.3 Главное окно средыMplab Главное меню mplab
- •МенюFile
- •МенюProject
- •МенюEdit
- •МенюDebug (отладка)
- •Меню picstart plus (меню программирования)
- •МенюOptions (параметры)
- •МенюTools
- •7.4.4 Инструментальная панельMplab
- •7.4.5 Строка состояния mplab
- •7.5 Пример разработки программы с использованием mplab
- •7.5.1 Постановка задачи и разработка алгоритма ее решения
- •7.5.2 Написание исходного текста программы
- •Раздел 2
- •8. Характеристики программируемых логических контроллеров
- •8.1. Контроллеры семейства модикон
- •8.1.1. Контроллер tsx 07 Nano
- •Варианты конфигураций
- •Импульсные выходы
- •Программное обеспечение
- •Контрольные вопросы:
- •8.1.2. Контроллер tsx Momentum Общая характеристика
- •Концепция построения
- •Архитектура tsx Momentum
- •Подключение tsx Momentum к сети Modbus Plus
- •Коммуникационный адаптер для сети Interbus
- •Коммуникационный адаптер для сети Profibus dp
- •Коммуникационный адаптер для сети fipio
- •Коммуникационный адаптер для сети Ethernet I/o
- •Базовые модули ввода – вывода
- •Заключение
- •Контрольные вопросы
- •8.1.3. Микроконтроллер tsx 37 Micro Общая характеристика
- •Базовое исполнение tsx 37-10
- •Дисплейный блок
- •Базовое исполнение tsx 37-21 и tsx 37-22
- •Источники питания
- •Коммуникационные возможности
- •Заключение
- •Контрольные вопросы
- •8.2. КонтроллерыTsxQuantum Общая характеристика
- •Источники питания
- •Модули ввода-вывода
- •Модули интерфейса Quantum
- •Заключение
- •Контрольные вопросы
- •8.3. Контроллеры Siemens
- •8.3.1. КонтроллерSimaticS7-200
- •Центральные процессоры
- •Входы и выходы контроллеров s7-200
- •Коммуникационный модуль
- •8.3.2.Контроллер Simatic s7-300
- •Центральные процессоры
- •Сигнальные модули
- •Функциональные модули
- •Коммуникационные модули
- •Заключение
- •Контрольные вопросы
- •8.3.3. Контроллер Simatic s7-400
- •Центральные процессоры
- •Модули ввода-вывода
- •Функциональные модули
- •Коммуникационные процессоры
- •Блоки питания
- •Заключение
- •Контрольные вопросы
- •Раздел 3
- •9. Разработка микропроцессорных систем железнодорожной автоматики
- •9.1. Постановка задачи
- •9.2. Характеристика входных и выходных сигналов.
- •9.3. Разработка структуры системы
- •9.4. Конфигурация цепей ввода-вывода
- •9.5. Определение необходимого количества модулей ввода-вывода
- •9.6.Принципиальные и монтажные схемы
- •Индивидуальные задания
- •10. Примеры практической реализации микропроцессорных систем
- •10.1.Микропроцессорная диспетчерская централизация
- •Объекты контроля
- •Объекты управления
- •10.2.Микропроцессорный маршрутный набор электрической централизации
- •10.2.1 Постановка задачи
- •10.2.2 Общая структура системы управления.
- •10.2.3 Расчет количества входных и выходных сигналов.
- •Расчет потребного количества выходов
- •Управление стрелкой
- •Перечень объектов контроля
- •Расчет потребного количества входов
- •Выбор конфигурации программируемого логического контроллера
- •Разработка структуры информационного взаимодействия компонентов системы
- •Программируемые контроллеры для систем управления.
- •Часть 2. Характеристики микроконтроллеров и плк
- •61052, Харьков, ул. Красноармейская, 7, тел. 24-22-98.
- •61052, Харків, вул. Червоноармійська, 7, тел. 24-22-98.
7.5.2 Написание исходного текста программы
Написание исходного текста программы осуществляется с помощью встроенного в MPLAB редактора Fditor. Для того, чтобы войти в оболочку редактора, необходимо выполнить следующие действия:
1. Осуществить запуск интегрированной среды MPLAB, выбрав в среде Windowsпиктограмму с надписью MPLAB;
2. Выбрать в главном меню пункт Option;
3. Выбрать в меню OptionопциюDevelopmentModeи в ней задать режим «MPLAB-SIMSimulator» и тип используемого процессора (например,PIC16F84);
4. Нажать кнопку RESET(запомнить внесенные изменения);
5. Выбрать в основном меню MPLAB пункт File;
6. Выбрав в меню FileопциюNew(CTRL+N), создать новый файл, при этом открывается диалоговое окно с предупреждением об отсутствии проекта и с вопросом о необходимости создания проекта. На этом этапе (до создания исходного файла) можно ответить “NO”.
7. С помощью кнопки смены инструментальной панели (swaptoolbar) MPLAB выбрать окно редактирования – встроке состояния (крайнее правое окно строки состояния) появляется название инструментальной панели –“Edit”. Эта инструментальная панель содержит кнопки, позволяющие создавать и редактировать исходный текст программы, написанной на языке Ассемблера. Возможности редактора аналогичны возможностям текстовых редакторов для WINDOWS.
После этого можно приступить к написанию исходного текста программы. В исходном тексте программы сознательно сделаем некоторые ошибки, которые необходимо будет выявить и устранить на этапах трансляции и отладки программы с помощью среды разработки и отладки MPLAB.
Текст программы, реализующей алгоритм (рис. 7.13), может быть таким:
(EXAMPLE\IZMER.ASM)
;****************************************************
LIST P=16F84 ; задать распечатку процессора
#INCLUDE <p16f84.inc> ; задать спецификации процессора
;задать слово конфигурации
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
;****************************************************
; ИСПОЛЬЗУЕМЫЕ В ПРОГРАММЕ КОНСТАНТЫ
INITA = B'00000010' ;направлени бит порта A
;RA0 - ВЫВОД,
;RA1 - ВВОД
INITB = B'00000000' ;направлени бит порта В
;RB0,...,RB7 - ВЫВОД
;***** ОЗУ ******************************************
CBLOCK 0x20
; ПАМЯТЬ ДАННЫХ
; БАЙТЫ BD0,...,BD4 РАСПОЛОЖЕНЫ В ПОСЛЕДОВАТЕЛЬНЫХ
; ЯЧЕЙКАХ ОЗУ (РЕГИСТРАХ), НАЧИНАЯ С
; ШЕСТНАДЦАТИРИЧНОГО АДРЕСА 20
BD0 ;БАЙТ ДАННЫХ
BD1 ;БАЙТ ДАННЫХ
BD2 ;БАЙТ ДАННЫХ
BD3 ;БАЙТ ДАННЫХ
BD4 ;БАЙТ ДАННЫХ
W_TEMP ; рабочие ячейки для запоминания
S_TEMP ; состояния рабочих
FSR_T ; регистров при
PCLH_T ; обработке прерывания
END
;****************************************************
; Code sections
;****************************************************
ORG 0x000 ; установить начальный адрес
CLRF PCLATH
GOTO START ; передать управление на
; начало программы
ORG 0x004 ; вектор обр. прерывания
MOVWF W_TEMP
SWAPF STATUS,W ; сохранить
MOVWF S_TEMP ; состояние
MOVF FSR,W ; рабочих
MOVWF FSR_T
MOVF PCLATH,W ; регистров
MOVWF PCLH_T
CLRF PCLATH ; процессора
; ПП ОБРАБОТКИ ПРЕРЫВАНИЯ
;
;
;
;ВЫХОД ИЗ ПП ОБРАБОТКИ ПРЕРЫВАНИЯ
MOVF FSR_T,W ; восстановить
MOVWF FSR
MOVF PCLH_T,W ; состояние
MOVWF PCLATH
SWAPF S_TEMP,W ; рабочих
MOVWF STATUS ; регистров
SWAPF W_TEMP,F
SWAPF W_TEMP,W ; процессора
Retfie ; выход из подпр
; обработки прер
;***************************************************
START:
INIT:
BSF STATUS,RP0 ;установить Page 1 ОЗУ
BCF STATUS,RP1
BCF STATUS,IRP
MOVLW INITA ; установить
MOVWF TRISA ; направление
MOVLW INITB ; ввода/вывода
MOVWF TRISB
;УСТАНОВИТЬ TMR0 НА СЧЕТ ОТ ВНУТРЕННЕЙ ЧАСТОТЫ (ЗАПУСК)
BCF OPTION_REG,T0CS
;ПОДКЛЮЧИТЬ ПРЕДДЕЛИТЕЛЬ К WDT (ОТКЛЮЧИТЬ ОТ TMR0)
BSF OPTION_REG,PSA
BCF STATUS,RP0 ;установить Page 0 ОЗУ
BCF STATUS,RP1
BCF STATUS,IRP
BLOCK2:
BTFSC PORTA,1 ;PORTA,1 = 0?
; НЕТ, PORTA,1 = 1
GOTO BLOCK2
; PORTA,1 = 0
; ОЖИДАНИЕ ФРОНТА 0/1
BLOCK3:
BTFSS PORTA,1 ;PORTA,1 = 1?
; НЕТ, PORTA,1 = 0
GOTO BLOCK3
; PORTA,1 = 1
;СБРОСИТЬ СТРОБИРУЮЩИЙ СИГНАЛ НА ВЫХОДЕ RA0
BLOCK4:
BCF PORTA,0
; СБРОСИТЬ ТАЙМЕР TMR0 В СОСТ 0
BLOCK5:
CLRF TMR0
BLOCK6:
BTFSC PORTA,1 ;PORTA,1 = 0?
; НЕТ, PORTA,1 = 1
GOTO BLOCK6
; PORTA,1 = 0
; ОЖИДАНИЕ ФРОНТА 0/1
BLOCK7:
BTFSS PORTA,1 ;PORTA,1 = 1?
; НЕТ, PORTA,1 = 0
GOTO BLOCK7
; PORTA,1 = 1
; ПРОЧИТАТЬ НАКОПЛЕННЫЙ КОД ИЗ TMR0
BLOCK8:
MOVF TMR0,W
; ВЫДАТЬ НАКОПЛЕННЫЙ КОД В ПОРТ В
BLOCK9:
MOVWF PORTB
; УСТАНОВИТЬ СТРОБИР. ИМПУЛЬС НА ВЫХОДЕ RA0
BLOCK10:
BSF PORTA,0
GOTO BLOCK2
END
После набора текста файл необходимо запомнить на жестком диске в некоторой пользовательской папке (директории). Для этого в основном меню MPLAB нужно выбрать пункт File– Save As... и с помощью открывшегося диалогового окна задать имя папки для хранения файла и имя файла (обязательно с расширением.asm!) и сохранить файл.
Рассмотрим, что означают эти ассемблерные строки.
Строка
LIST P=16F877,
расположенная в начале текста, задает тип микроконтроллера, для которого будет производиться ассемблирование и получена распечатка кодов – "листинг" программы.
Следующая строка
#INCLUDE <p16f877.inc>,
включает в исходный текст программы файл p16f877.inc,в котором заданы предопределенные величины для микроконтроллера PIC 16f877.В среде MPLAB для каждого из поддерживаемых микроконтроллеров существует такой файл.
Строка
__CONFIG . . . .,
задает используемую конфигурацию микроконтроллера.
Далее заданы идентификаторы и значения используемых в программе постоянных величин и рабочих ячеек (регистров общего назначения – РОН).
Директивой EQU или = задаются значения определяемых идентификаторов.
Начало области РОН, используемых в программе, задано директивой
CBLOCK 0x20,
это означает, что описанные далее регистры будут расположены, начиная с шестнадцатиричного адреса 20.
Окончание области РОН задано директивой
ENDC
Директива ORG 0x000 задает начальный адрес (0000) расположения программных кодов в программной памяти микроконтроллера.
Директива ENDзавершает текст исходной программы.
Между директивами ORG и END расположен исходный текст программы, описывающей представленный на рис. 7.13 алгоритм. С целью установления соответствия между текстом программы и алгоритмом в тексте программы введены названия меток, соотвествующие номерам блоков алгоритма. Так, например, фрагмент текста расположенный после метки BLOCK7, реализует действия, описываемые блоком 7 алгоритма.
После этого для продолжения работы с программой необходимо создать проект. Проект можно создать, выбрав в главном меню подменю PROJECT и далее опцию New Project.... В открывшемся диалоге выбрать папку для хранения проекта и задать его имя. Для того чтобы избежать возможных осложнений в дальнейшей работе с проектом папка должна быть той же, в которой сохранен ассемблерный файл, а имя проекта должно совпадать с именем ассемблерного файла (с другим расширением –.pjt).
В результате диалога создается проект, в котором указан исходный ассемблерный файл и создается имя файла результата ассемблирования – файл с расширением .hex, который используется для дальнейшей отладки и записи в микроконтроллер с помощью программатора.
После этого можно сменить инструментальную строку (кнопка SwapToolbar) на окно работы с проектом (Projв крайнем правом окошке строки состояния) и выполнить ассемблирование исходного текста программы. Ассемблирование производится нажатием кнопкиBuildFullProjectинструментальной строки.
Результатом ассемблирования является получение файлов с расширением .COD, .LST, .HEX, .ERR,которые используются для дальнейшей отладки и записи в микроконтроллер с помощью программатора.
Кроме того, текст файла сообщений, предупреждений и ошибок (с расширением .ERR)появляется в виде текстового окна с именемBuildResultна экране.
Файл листинга (с расширением.LST) имеет следующий вид:
MPASM 02.30.07 Intermediate IZMER.ASM 8-5-2001 19:01:23 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 ;*******************************************
00002
00003 LIST P=16F84 ; задать распечатку процессора
00004 #INCLUDE <p16f84.inc>; задать спецификац процессора
00001 LIST
00002 ; P16F84.INC Standard Header File, Version 2.00 Microchip Technology, Inc.
00136 LIST
00005 ;задать слово конфигурации
2007 3FF2 00006 __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
00007 ;****************************************
00008 ; ИСПОЛЬЗУЕМЫЕ В ПРОГРАММЕ КОНСТАНТЫ
00000002 00009 INITA = B'00000010' ;направлени бит порта A
00010 ;RA0 - ВЫВОД,
00011 ;RA1 - ВВОД
00000000 00012 INITB = B'00000000' ;направлени бит порта В
00013 ;RB0,...,RB7 - ВЫВОД
00014
00015 ;***** ОЗУ **********************************
00016
00017 CBLOCK 0x20
00018 ; ПАМЯТЬ ДАННЫХ
00019 ; БАЙТЫ BD0,...,BD4 РАСПОЛОЖЕНЫ В ПОСЛЕДОВАТЕЛЬНЫХ
00020 ; ЯЧЕЙКАХ ОЗУ (РЕГИСТРАХ), НАЧИНАЯ С
00021 ; ШЕСТНАДЦАТИРИЧНОГО АДРЕСА 20
00022
00000020 00023 BD0 ;БАЙТ ДАННЫХ
00000021 00024 BD1 ;БАЙТ ДАННЫХ
00000022 00025 BD2 ;БАЙТ ДАННЫХ
00000023 00026 BD3 ;БАЙТ ДАННЫХ
00000024 00027 BD4 ;БАЙТ ДАННЫХ
00028
00000025 00029 W_TEMP ; рабочие ячейки для запоминания
00000026 00030 S_TEMP ; состояния рабочих
00000027 00031 FSR_T ; регистров при
00000028 00032 PCLH_T ; обработке прерывания
00033 ENDC
00034
00035
00036 ******************************************
00037 ; Code sections
00038
00039
0000 00040 ORG 0x000 ; установить начальный адрес
0000 018A 00041 CLRF PCLATH
0001 2815 00042 GOTO START ; передать управление на
00043 ; начало программы
00044
0004 00045 ORG 0x004 ; вектор обр. прерывания
0004 00A5 00046 MOVWF W_TEMP
0005 0E03 00047 SWAPF STATUS,W ; сохранить
0006 00A6 00048 MOVWF S_TEMP ; состояние
0007 0804 00049 MOVF FSR,W ; рабочих
0008 00A7 00050 MOVWF FSR_T
MPASM 02.30.07 Intermediate IZMER.ASM 8-5-2001 19:01:23 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0009 080A 00051 MOVF PCLATH,W ; регистров
000A 00A8 00052 MOVWF PCLH_T
000B 018A 00053 CLRF PCLATH ; процессора
00054 ; ПП ОБРАБОТКИ ПРЕРЫВАНИЯ
00055 ;
00057 ;
00058 ;ВЫХОД ИЗ ПП ОБРАБОТКИ ПРЕРЫВАНИЯ
000C 0827 00059 MOVF FSR_T,W ; восстановить
000D 0084 00060 MOVWF FSR
000E 0828 00061 MOVF PCLH_T,W ; состояние
000F 008A 00062 MOVWF PCLATH
0010 0E26 00063 SWAPF S_TEMP,W ; рабочих
0011 0083 00064 MOVWF STATUS ; регистров
0012 0EA5 00065 SWAPF W_TEMP,F
0013 0E25 00066 SWAPF W_TEMP,W ; процессора
0014 0009 00067 retfie ; выход из подпр обр прер
0015 00070 START:
0015 00071 INIT:
0015 1683 00072 BSF STATUS,RP0 ;установить Page 1 ОЗУ
0016 1303 00073 BCF STATUS,RP1
0017 1383 00074 BCF STATUS,IRP
0018 3002 00075 MOVLW INITA ; установить
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0019 0085 00076 MOVWF TRISA ; направление
001A 3000 00077 MOVLW INITB ; ввода/вывода
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
001B 0086 00078 MOVWF TRISB
00079 ;УСТАНОВИТЬ TMR0 НА СЧЕТ ОТ ВНУТР ЧАСТОТЫ (ЗАПУСК)
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
001C 1281 00080 BCF OPTION_REG,T0CS
00081 ;ПОДКЛЮЧИТЬ ПРЕДДЕЛИТЕЛЬ К WDT (ОТКЛЮЧИТЬ ОТ TMR0)
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
001D 1581 00082 BSF OPTION_REG,PSA
00083
001E 1283 00084 BCF STATUS,RP0 ;установить Page 0 ОЗУ
001F 1303 00085 BCF STATUS,RP1
0020 1383 00086 BCF STATUS,IRP
0021 00087 BLOCK2:
0021 1885 00088 BTFSC PORTA,1 ;PORTA,1 = 0?
00089 ; НЕТ, PORTA,1 = 1
0022 2821 00090 GOTO BLOCK2
00091 ; PORTA,1 = 0
00092 ; ОЖИДАНИЕ ФРОНТА 0/1
0023 00093 BLOCK3:
0023 1C85 00094 BTFSS PORTA,1 ;PORTA,1 = 1?
00095 ; НЕТ, PORTA,1 = 0
0024 2823 00096 GOTO BLOCK3
00097 ; PORTA,1 = 1
00098 ;СБРОСИТЬ СТРОБИРУЮЩИЙ СИГНАЛ НА ВЫХОДЕ RA0
0025 00099 BLOCK4:
MPASM 02.30.07 Intermediate IZMER.ASM 8-5-2001 19:01:23 PAGE 3
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0025 1005 00100 BCF PORTA,0
00101 ; СБРОСИТЬ ТАЙМЕР TMR0 В СОСТ 0
0026 00102 BLOCK5:
0026 0181 00103 CLRF TMR0
0027 00104 BLOCK6:
0027 1885 00105 BTFSC PORTA,1 ;PORTA,1 = 0?
00106 ; НЕТ, PORTA,1 = 1
0028 2827 00107 GOTO BLOCK6
00108 ; PORTA,1 = 0
00109 ; ОЖИДАНИЕ ФРОНТА 0/1
0029 00110 BLOCK7:
0029 1C85 00111 BTFSS PORTA,1 ;PORTA,1 = 1?
00112 ; НЕТ, PORTA,1 = 0
002A 2829 00113 GOTO BLOCK7
00114 ; PORTA,1 = 1
00115 ; ПРОЧИТАТЬ НАКОПЛЕННЫЙ КОД ИЗ TMR0
002B 00116 BLOCK8:
002B 0801 00117 MOVF TMR0,W
00118 ; ВЫДАТЬ НАКОПЛЕННЫЙ КОД В ПОРТ В
002C 00119 BLOCK9:
002C 0086 00120 MOVWF PORTB
00121 ; УСТАНОВИТЬ СТРОБИР. ИМПУЛЬС НА ВЫХОДЕ RA0
002D 00122 BLOCK10:
002D 1405 00123 BSF PORTA,0
002E 2821 00124 GOTO BLOCK2
00125
00126 END
MPASM 02.30.07 Intermediate IZMER.ASM 8-5-2001 19:01:23 PAGE 4
SYMBOL TABLE
LABEL VALUE
BD0 00000020
BD1 00000021
BD2 00000022
BD3 00000023
BD4 00000024
BLOCK10 0000002D
BLOCK2 00000021
BLOCK3 00000023
BLOCK4 00000025
BLOCK5 00000026
BLOCK6 00000027
BLOCK7 00000029
BLOCK8 0000002B
BLOCK9 0000002C
C 00000000
DC 00000001
EEADR 00000009
EECON1 00000088
EECON2 00000089
EEDATA 00000008
EEIE 00000006
EEIF 00000004
F 00000001
FSR 00000004
FSR_T 00000027
GIE 00000007
INDF 00000000
INIT 00000015
INITA 00000002
INITB 00000000
INTCON 0000000B
INTE 00000004
INTEDG 00000006
INTF 00000001
IRP 00000007
NOT_PD 00000003
NOT_RBPU 00000007
NOT_TO 00000004
OPTION_REG 00000081
PCL 00000002
PCLATH 0000000A
PCLH_T 00000028
PORTA 00000005
PORTB 00000006
PS0 00000000
PS1 00000001
PS2 00000002
PSA 00000003
RBIE 00000003
RBIF 00000000
RD 00000000
RP0 00000005
RP1 00000006
MPASM 02.30.07 Intermediate IZMER.ASM 8-5-2001 19:01:23 PAGE 5
SYMBOL TABLE
LABEL VALUE
START 00000015
STATUS 00000003
S_TEMP 00000026
T0CS 00000005
T0IE 00000005
T0IF 00000002
T0SE 00000004
TMR0 00000001
TRISA 00000085
TRISB 00000086
W 00000000
WR 00000001
WREN 00000002
WRERR 00000003
W_TEMP 00000025
Z 00000002
_CP_OFF 00003FFF
_CP_ON 0000000F
_HS_OSC 00003FFE
_LP_OSC 00003FFC
_PWRTE_OFF 00003FFF
_PWRTE_ON 00003FF7
_RC_OSC 00003FFF
_WDT_OFF 00003FFB
_WDT_ON 00003FFF
_XT_OSC 00003FFD
__16F84 00000001
MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : XX--XXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXX- ---------
2000 : -------X------ --------------- --------------- ----------
All other memory blocks unused.
Program Memory Words Used: 45
Program Memory Words Free: 979
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 4 reported, 0 suppressed
В этом тексте первые три страницы (PAGE1,…,PAGE3) содержат машинные и мнемонические коды программы, а последующие страницы (PAGE4,PAGE5) – определения всех идентификаторов, стандартных для специфированного микроконтроллера и введенных программистом.
Формат текста имеет следующий вид:
В первой строке каждой страницы расположены имя программы и версия, дата, время, и номер страницы.
В первом столбце представлен адрес ячейки памяти, в которой размещается код. Во втором столбце отображается 32-разрядное значение символов, созданных директивами Ассемблера SET,EQU,VARIABLE,CONSTANT,CBLOCK.
В третьем столбце размещен исполняемый код машинной команды.
В четвертом столбце представлен номер строки исходного теста.
Остальная часть строки отведена для исходного текста, из которого сгенерирован машинный код.
В тексте листинга между исходными строками размещаются также сообщения об ошибках, предупреждениях и сообщениях. Они относятся к следующей за строкой сообщения исходной строке.
В таблице идентификаторов в алфавитном порядке перечислены все символические именастандартные для специфицированного микроконтроллера и определенные в транслированной программе.
На последней странице листинга приведена карта заполнения программной памяти, количество использованных и свободных слов программной памяти и количество сформированных Ассемблером сообщений об ошибках и предупреждений по типам.
Карта заполнения памяти дает графическое представление использования памяти.
'X' отмечает используемые слова;
'- ' отмечает слова, которые не используются программой.
Карта памяти не создается, если объектный файл не сгенерирован.
Ассемблер по умолчанию генерирует файл ошибок с именем расширением .ERR. Этот файл полезен при отладке программы. Формат сообщений в файле ошибок имеет такой вид:
<type> [<number>] < file > < line > <description>
< тип > [<номер >] < файл > <строка > < описание >
Например:
Message[302] C:\PROGRA~1\MPLAB\EXAMPLE\IZMER.ASM 76 : Register in operand not in bank 0. Ensure that bank bits are correct.
Сообщения об ошибках вписываются также в листинг программы непосредственно после ошибочной строки в сокращенном виде, без указания имени файла и номера строки. Так, например, приведенное сообщение, относящееся к строке 76, в листинге выглядит следующим образом:
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
В рассмотренной программе на период следования импульсов наложены ограничения (7.1), при которых максимальное значение периода составляет не более 255 единиц (емкость регистра таймера/счетчика). Увеличения возможной величины этого кода можно добиться каскадным подключением программных счетчиков.