Главная Гальваническое покрытие Обработка поверхности Радиотехника
Бессточные операции Гальвано- химическое производство Достижения

Самые новые
Основы организации современных гальвано-химических производств
Взаимная адаптация технологий гальванического производства и очистки сточных вод
Импульсная металлизация печатных плат
Создание высокоэффективных систем промывки деталей
Утилизация гальванических отходов как гигиеническая проблема
Получение химико-механических цинковых покрытий на высокопрочных термообработанных сталях
Переработка металлургических отходов
Последние достижения в гальванопластике
Обработка промывных вод травильных агрегатов
Экологические перспективные технологии цинкования, кадмирования и меднения
Об утилизации гальванических шламов
Технологии изготовления технологической оснастки и продуктов методом гальванопластики
Россия экспортировала продукции химической промышленности и каучука на 11,3 млн долларов
В октябре экспорт ферросплавов уменьшился на 0,03% до 108,9 тыс. тонн
Мировое производство стали за 10 месяцев 2006 года выросло на 9,2%
Производство алюминия продолжает расти
Химическое производство в России выросло на 1,2%
Китай за 10 месяцев увеличил выпуск медной продукции на 6,6% до 4,6 млн. т
"Антон" - "Северсталь"
Чистая прибыль ОАО "Ульяновский автомобильный завод"
Оценка эфф. подготовки поверхности полистирола перед химической металлизацией
"Российские металлургические компании и ЕС - особые отношения"
Аналитики расходятся во мнениях по прогнозу цен на железную руду
Evraz увеличивает выплаты
Китай вышел на ежемесячный объем экспорта стали
Чистая прибыль Borealis в III квартале выросла в 2,6 раза
"Цинк среди драгоценных металлов"
Росбанк стал держателем 29,33% "Норникеля"
"Северсталь" подорожала на 2.7 миллиарда долларов после вчерашнего IPO
Новая волна слухов на тему консолидации в мировой металлургии
Итоги деятельности химического комплекса за 9 месяцев
Стратегия развития металлургической промышленности
Инженеры в почете
Информационное обеспечение химического комплекса
Дефицит кадров
Спрос на оцинкованную сталь растет
Карта: 1 2 3 4 5 6 7 8 9
10 11 12 13 14
Главная Радиотехника


Описание работы в PIC Simulator


>>> Примечание переводчика:

Я не являюсь ни профессиональным переводчиком, ни большим специалистом с электронике и программировании.

Я старался максимально точно донести смысл описания иногда опуская дословный перевод исходного текста.

Прошу прошения у читателей за отсутствие литературной правки перевода - у меня нет такого количества времени!

Если Вы переведёте выше указанный текст более качественно я буду только рад и попрошу переслать этот перевод. Я выложу его на мою страничку: aleksandr-zh.narod.ru

Так как я не имею никакой финансовой прибыли от перевода и автор Vladimir Soso явно не противился переводу данного описания на русский язык я считаю, что его авторских прав я ни коем образом не нарушил.

С уважением ко всем Вам,

Александр xpeh-bcem-bam@bk.ru в теме письма добавьте слово "письмо"

Извините за странный E-Mail - спам достал


Описаны одиннадцать примеров для работы в PIC Simulator. Все они расположены в этой же папке. Написано весьма просто, шаг за шагом, для новичков. Исследуют самые важные особенности работы в PIC Simulator

Пример 1: Работа с Timer0, прерывание TMR0

Пример 2: Обработка внешних прерываний RB0/INT

Пример 3: Работа с памятью данных EEPROM

Пример 4: Математика, подпрограмма умножение, демонстрация компилятора, ассемблера и отладчика

Пример 5: Работа модуля A/D

Пример 6: Работа модуля Компаратора

Пример 7: Работа модуля LCD

Пример 8: Работа интерфейса аппаратного (hardware) UART

Пример 9: Работа интерфейса программного (software ) UART

Пример 10: Отображение данных на 7-сегментных дисплеях

Пример 11: Работа с генератором Сигнала и осциллографом

ПРИМЕР 1



- Просмотреть timer0.bas файл из используемой папки. Эта программа использует Timer0 прерывания, чтобы периодически изменить значение на PORTB выводах. Файл timer0.asm был сгенерирован, используя, встроенный компилятор Basic. Файл timer0.hex был сгенерирован, используя встроенный ассемблер.



TRISB = 0x00 'устанавливает все ножки PORTB как выходы

PORTB = %111111 'Переводит все ножки PORTB в высокое состояние

INTCON.T0IE = 1 'Включает прерыванию Timer0

INTCON.GIE = True 'Включает все прерывания

OPTION_REG.T0CS = False 'устанавливает Timer0, синхронизируют источник на внутренние часы

End



On Interrupt 'подпрограмма прерывания

PORTB = PORTB - 1 'декремент значение на PORTB

INTCON.T0IF = 0 'Включает заново прерывание TMR0

Resume



- Запустить PIC Simulator.

- Нажать на OptionsSelect Microcontroller.

- Выбери 'PIC16F84' и щелчок на кнопке Select.

- Нажать на FileLoad Program.

- Выбери timer0.hex файл и щелчок на Open. Программа загружена.

- Нажать на ToolsMicrocontroller View. Это откроет окно Microcontroller View.

- Снова установить окна на экране, чтобы получить лучшее представление.

- Выбери RateExtremely Fast simulation rate.

- Нажать на SimulationStart. Начнется моделирование.

- Эта программа использует модуль прерывания Timer0, чтобы периодически изменить значение на выводах PORTB.

- Моделирование можно остановить в любое время, нажав на SimulationStop.

- Вид экрана: представление

*



ПРИМЕР 2



- Просмотреть rb0int.bas файл из используемой папки. Эта программа использует вывод RB0/INT для создания прерывания, чтобы изменить значение на PORTA. Файл rb0int.asm был сгенерирован, используя, встроенный компилятор Basic. Файл rb0int.hex был сгенерирован, используя встроенный ассемблер.



TRISA = 0x00 'устанавливают все ножки PORTA как выводы

PORTA = 0xff 'Переводит все ножки PORTA в высокое состояние

INTCON.INTE = 1 'Включает прерывания RB0/INT

INTCON.GIE = 1 'Включает все прерывания

End



On Interrupt 'подпрограмма прерывания

PORTA = PORTA - 1 'декремент значение на PORTA

INTCON.INTF = 0 'Включает заново прерывание RB0/INT

Resume



- Запустить PIC Simulator.

- Нажать на OptionsSelect Microcontroller.

- Выбери 'PIC16F84' и щелчок на кнопке Select.

- Нажать на FileLoad Program.

- Выбери rb0int.hex файл и щелчок на Open. Программа загружена.

- Нажать на ToolsMicrocontroller View. Это откроет окно Microcontroller View.

- Снова установить окна на экране, чтобы получить лучшее представление.

- Выбери RateExtremely Fast simulation rate.

- Нажать на SimulationStart. Начнется моделирование.

- Эта программа Basic использует вывод RB0/INT и прерывания, чтобы изменить значение на PORTA.

- Щелчок на кнопку "T", связанную с ножкой RB0/INT, переключит логическое состояние этого вывода. Прерывания будут вызваны на переднем фронте импульсов. Каждый раз значение на PORTA будет изменено.

- Моделирование можно остановить в любое время, нажав на SimulationStop..

- Вид экрана: представление

*



ПРИМЕР 3



- Просмотреть eeprom.bas файл из используемой папки. Этот пример заполняет всю память EEPROM и организует бесконечный цикл. Файл eeprom.asm был сгенерирован, используя встроенный компилятор Basic. Файл eeprom.hex был сгенерирован, используя встроенный ассемблер.



Dim a As Byte 'адрес eeprom

Dim b As Byte 'данные eeprom

For a = 0 To 63 'Цикл для всей памяти eeprom

b = 255 - a 'установите значение данных для записи

Write a, b 'Запишет значение переменной "а" в ячейку "b" eeprom

Next a









- Запустить PIC Simulator.

- Нажать на OptionsSelect Microcontroller.

- Выбери 'PIC16F84' и щелчок на кнопке Select.

- Нажать на FileLoad Program.

- Выбери eeprom.hex файл и щелчок на Open. Программа загружена.

- Нажать на ToolsEEPROM Редактора Памяти. Это откроет окно Memory Editor EEPROM.

- Снова установить окна на экране, чтобы получить лучшее представление.

- Нажать на OptionsChange Время записи EEPROM. Введите 100 для нового значения и щелчка на OK. Вы должны быть весьма осторожны при выборе этого значения, потому что реалистическое значение - приблизительно 20000 тактовых циклов в 4 МГЦ. В этом простом примере мы будем использовать короткое значение, потому что это не может затронуть функциональные возможности программы, но может значительно уменьшить время выполнения моделирования.

- Выбери RateExtremely Fast simulation rate.

- Нажать на OptionsInfinite Loop Stops Simulation, чтобы выбрать ту опцию.

- Нажать на SimulationStart. Начнется моделирование.

- Этот пример заполняет данные, память EEPROM и вводит бесконечный цикл.

- После обнаружения бесконечного цикла PIC Simulator автоматически остановит моделирование.

- Вид экрана: представление

*



ПРИМЕР 4



- Просмотреть multiply.bas файл из используемой папки. Этот пример умножит два числа 123 (шестнадцатеричный 7B) и 234 (шестнадцатеричный EA) и получит результат 28782 (шестнадцатеричный 706E). Файл multiply.asm был сгенерирован, используя, встроенный компилятор Basic. Файл multiply.hex был сгенерирован, используя встроенный ассемблер.



Dim a As Word 'первое число

Dim b As Word 'второе число

Dim x As Word 'результат

a = 123 'устанавливают первое значение

b = 234 'устанавливают второе значение

x = * b 'вычисляют результат



- Запустить PIC Simulator.

- Нажать на OptionsSelect Microcontroller.

- Выбери 'PIC16F84' и щелчок на кнопке Select.

- Нажать на ToolsBASIC Compiler

- Нажать на FileOpen

- Выбери multiply.bas файл и щелчок на Open. Основная исходная программа будет отображена в редакторе.

- Нажать на ToolsCompile. Компилятор генерирует multiply.asm файл с исходным текстом на ассемблере.

- Закрой окно BASIC Compiler.

- Нажать на ToolsAssembler

- Нажать на FileOpen

- Выбери multiply.asm файл и щелчок на Open. Исходная программа ассемблера будет отображена в редакторе.

- Нажать на ToolsAssemble. После того, как операция закончена, ассемблер генерирует два файла: multiply.lst и multiply.hex. Выходной файл multiply.lst будет отображен.

- Закрой окно Assembler.

- Нажать на FileLoad Program.

- Выбери multiply.hex файл и щелчок на Open. Программа загружена.

- Нажать на ToolsBreakpoints Manager. Это откроет окно Breakpoints Manager.

- Нажать на Да, чтобы использовать существующий ассемблер, выдавший файл.

- Снова установить окна на экране, чтобы получить лучшее представление.

- Нажать на строку, соответствующую адресу 0018, чтобы определить контрольную точку на этой команде.

- Выбери Hold PC In Focus option

- Выбери RateExtremely Fast simulation rate.

- Нажать на SimulationStart. Начнется моделирование.

- Когда эта математическая подпрограмма закончена, программа вводит бесконечный цикл в адрес 0018, но из-за контрольной точки, PIC Simulator автоматически переключит к режиму моделирования Шаг за шагом (Step by step).

- Вы можете остановить моделирование теперь, нажимая на SimulationStop или продолжить выполнение, очищая определенную контрольную точку и нажимая на RateExtremely.

- Универсальная пара регистра (19-ый, 18-ый) будет держать первый параметр 007B.

- Пара регистра общего назначения (1BH-1AH) будет держать второй параметр 00EA.

- Результат 706E постоянно найдется в регистрирующую пару (1DH-1CH).

- Вид экрана: представление

*



ПРИМЕР 5



- Просмотреть adc.bas файл из используемой папки. Эта программа читает аналоговое значение на аналоговом вводе AN0 и отображает преобразованный результат как 8 битов на PORTB. Файл adc.asm был сгенерирован, используя, встроенный компилятор Basic. Файл adc.hex был сгенерирован, используя встроенный ассемблер.


Symbol ad_action = ADCON0.GO_DONE 'установка новое название для бита начала A/D

Symbol display = PORTB 'новое название для PORTB отображать результат



TRISB = %00000000 'установка ножек PORTB как выходы

TRISA = %111111 'установка ножек PORTA как входы

ADCON0 = 0xc0 'установка A/D, синхронизирует к внутреннему источнику

ADCON1 = 0 'установка ножек PORTA как аналоговые входы

High ADCON0.ADON 'включите модуль конвертера A/D



main:

Gosub getadresult 'идем в подпрограмму преобразования

display = ADRESH 'отобразите результат преобразования

Goto main 'бесконечное повторение

End



getadresult: 'подпрограмма преобразования

High ad_action 'запустите преобразование

While ad_action 'ждите, пока преобразование не закончится

Wend

Return



- Запустить PIC Simulator.

- Нажать на OptionsSelect Microcontroller.

- Выбери'PIC16F877' и щелчок на кнопке Select.

- Нажать на FileLoad Program.

- Выбериadc.hex файл и щелчок на Open. Программа загружена.

- Нажать на ToolsMicrocontroller View. Это откроет окно Microcontroller View.

- Снова установить окна на экране, чтобы получить лучшее представление.

- ВыбериRateExtremely Fast simulation rate.

- Нажать на SimulationStart. Начнется моделирование.

- Нажать на кнопку, связанную с RA0/AN0 штырьком.

- Использование "прокрутки" изменяет аналоговое значение на этом штырьке и щелчек на кнопке Accept.

- Ждите, как это изменение затрагивает состояние на выводах PORTB.

- Последние три шага могут быть повторены.

- Моделирование можно остановить в любое время, нажав на SimulationStop..

- Вид экрана: представление

*



ПРИМЕР 6



- Просмотреть comp.bas файл из используемой папки. Этот пример использует аналоговый модуль компаратора, чтобы обнаружить состояние AN0 и AN1 аналоговых вводов в отношении 2.5V напряжение, сгенерированное внутренним модулем. Файл comp.asm был сгенерирован, используя, встроенный компилятор Basic. Файл comp.hex был сгенерирован, используя встроенный ассемблер.



Symbol comp_change = PIR1.CMIF 'флаг прерывания компаратора

CMCON = 0x06 'установленный режим с выводами компаратора на два общих компаратора

TRISA = 0x07 'установка RA0, RA1 и RA2 как вводы, другие ножки PORTA как выходы

VRCON = 0xec 'включите, конфигурируйте модуль ссылки напряжения для 2.5V и подключите это с RA2

TRISB = 0x00 'установите ножки PORTB как выходы



loop1:

While Not comp_change 'ждите изменения вывода компаратора

Wend

PORTB = CMCON 'отобразите регистр CMCON на выводах PORTB, RB6 и RB7 - выводы компаратора

comp_change = 0 'сбросьте флаг прерывания компаратора

Goto loop1 'бесконечное повторение



- Запустить PIC Simulator.

- Нажать на OptionsSelect Microcontroller.

- Выбери'PIC16F628' и щелчок на кнопке Select.

- Нажать на FileLoad Program.

- Выбери comp.hex файл и щелчок на Open. Программа загружена.

- Нажать на ToolsMicrocontroller View. Это откроет окно Microcontroller View.

- Снова установить окна на экране, чтобы получить лучшее представление.

- ВыбериRateExtremely Fast simulation rate.

- Нажать на SimulationStart. Начнется моделирование.

- Нажать на кнопку, связанную с AN0 или AN1 штырьком.

- Использование "прокрутки" изменяет аналоговое значение на том штырьке и щелчке на кнопке Accept.

- Ждите, как это изменение затрагивает состояние на выводах PORTA и PORTB.

- Последние три шага могут быть повторены.

- Моделирование можно остановить в любое время, нажав на SimulationStop..

- Вид экрана: представление

*



ПРИМЕР 7



- Просмотреть lcd.bas файл из используемой папки. Эта программа читает аналоговое значение на AN0 аналоговом вводе и отображает отформатированный вывод на модуле LCD 2x16. Файл lcd.asm был сгенерирован, используя встроенный компилятор Basic. Файл lcd.hex был сгенерирован, используя встроенный ассемблер.



Define ADC_CLOCK = 3 'значение по умолчанию - 3

Define ADC_SAMPLEUS = 10 'значение по умолчанию - 20

Define LCD_BITS = 8 'позволенны значения 4 и 8 - количество линий интерфейса данных

Define LCD_DREG = PORTB

Define LCD_DBIT = 0 '0 или 4 для интерфейса на 4 бита, игнорируется для интерфейса на 8 битов


Define LCD_RSREG = PORTD

Define LCD_RSBIT = 1

Define LCD_EREG = PORTD

Define LCD_EBIT = 3

Define LCD_RWREG = PORTD 'установленный на 0, если не используемый, 0 задан по умолчанию

Define LCD_RWBIT = 2 'установленный на 0, если не используемый, 0 задан по умолчанию


Define LCD_COMMANDUS = 100 'задержка после LCDCMDOUT, значение по умолчанию - 5000

Define LCD_DATAUS = 10 'задержка после LCDOUT, значение по умолчанию - 50

Define LCD_INITMS = 1 'задержка, используемая LCDINIT, значение по умолчанию - 100

'последние три директивы Define устанавливают значения, подходящие для моделирования; они должны быть опущены для реального устройства



Dim an0 As Word



TRISA = 0xff 'все ножки PORTA как входы

ADCON1 = 0 'все ножки PORTA как аналоговые входы

Lcdinit 'инициализация модуля LCD; курсор выключен


loop:

Adcin 0, an0

Lcdcmdout LcdClear 'очистите дисплей LCD

Lcdout "Analog input AN0" 'текст для строки 1

Lcdcmdout LcdLine2Home 'курсор в начале строки 2

Lcdout "Value: ", #an0 'форматированный текст для строки 2

WaitMs 1 'большее значение должно использоваться в реальном устройстве

Goto loop 'бесконечный цикл


- Запустить PIC Simulator.

- Нажать на OptionsSelect Microcontroller.

- Выбери 'PIC16F877' и щелчок на кнопке Select.

- Нажать на FileLoad Program.

- Выбериlcd.hex файл и щелчок на Open. Программа загружена.

- Нажать на ToolsMicrocontroller View. Это откроет окно Microcontroller View.

- Нажать на ToolsLCD Модуль. Это откроет окно имитатора Модуля LCD.

- Снова установить окна на экране, чтобы получить лучшее представление.

- Нажать на кнопку Setup на окне Module LCD.

- Нажать на 'поле Data Lines' и установить PORTB.

- Нажать на поле 'Interface' и установить 8 битов.

- Нажать на поле 'RS Line' и установить PORTD, 1.

- Нажать на поле 'E Line' и установить PORTD, 3.

- Нажать на поле 'R/W Line' и установить PORTD, 2.

- Нажать на, 'Apply!', чтобы закрыть диалог установки LCD inteface.

- ВыбериRateExtremely Fast simulation rate.

- Нажать на SimulationStart. Начнется моделирование.

- Нажать на кнопку, связанную с RA0/AN0 штырьком.

- Использование "прокрутки" изменяет аналоговое значение на этом штырьке и щелчке на кнопке Accept.

- Ждите, как это изменение затрагивает Модуль LCD.

- Последние три шага могут быть повторены.

- Моделирование можно остановить в любое время, нажав на SimulationStop..

- Вид экрана: представление

*



ПРИМЕР 8



- Просмотреть uart.bas файл из используемой папки. Эта программа сначала посылает 6 строк отформатированного вывода hardware UART в serial порт и затем отвечает на байты, полученные на порт serial, посылая одну строку форматированного текста для каждого полученного байта. Файл uart.asm был сгенерирован, используя, встроенный компилятор Basic. Файл uart.hex был сгенерирован, используя встроенный ассемблер.



Dim i As Byte 'объявите переменную

Hseropen 9600 'откройте порт hardware UART для скорости в 9600 бод

'WaitMs 1000 'эта задержка должна использоваться в быть устройстве



For i = 10 To 5 Step -1 'цикл с уменьшением

Hserout "Number: ", #i, CrLf 'пошлите отформатированное значение serial порту

'WaitMs 500 'эта задержка должна быть в реальном устройстве

Next i



loop:

Hserin i 'ждите, чтобы получить байт на serial порте

Hserout "Number: ", #i, CrLf 'пошлите отформатированное значение serial порту

Goto loop 'бесконечный цикл



- Запустить PIC Simulator.

- Нажать на OptionsSelect Microcontroller.

- Выбери'PIC16F877' и щелчок на кнопке Select.

- Нажать на OptionsChange Clock Frequency.

- Ввести '4' и щелчок на кнопке OK.

- Нажать на OptionsChange UART Transmit/Receive Time.

- Ввести '100' и щелчок на кнопке OK.

- Нажать на FileLoad Program.

- Выбериuart.hex файл и щелчок на Open. Программа загружена.

- Нажать на ToolsHardware UART Simulation Interface. Это откроет окно для того, чтобы связать с помощью интерфейса hardware UART в течение моделирования.

- Снова установить окна на экране, чтобы получить лучшее представление.

- ВыбериRateExtremely Fast simulation rate.

- Нажать на SimulationStart. Начнется моделирование.

- Ждать, пока программа не закончила посылать 6 строк форматированного текста к порту serial.

- Использование одной из трех доступных кнопок в секции Ввода UART интерфейса UART посылает байт порту serial.

- Ждите, как программа отвечает, посылая одну строку отформатированного вывода.

- Последние два шага могут быть повторены.

- Моделирование можно остановить в любое время, нажав на SimulationStop..

- Вид экрана: представление

*



ПРИМЕР 9



- Просмотреть softuart.bas файл из используемой папки. Эта программа сначала посылает 6 строк отформатированного вывода к software UART в порт serial (TX линия: PORTB.1) и затем отвечает на байты, полученные порт serial (RX линия: PORTB.2), посылая одну строку форматированного текста для каждого полученного байта. Файл softuart.asm был сгенерирован, используя, встроенный компилятор Basic. Файл softuart.hex был сгенерирован, используя встроенный ассемблер.



Define SEROUT_DELAYUS = 500

Dim i As Byte 'объявите переменную

'WaitMs 1000 'эта задержка должна быть в реальном устройстве




For i = 10 To 5 Step -1 'цикл

Serout PORTB.1, 9600, "Number: ", #i, CrLf 'пошлите отформатированное значение, вывод PORTB.1 (линия ТХ software UART)

'WaitMs 500 'эта задержка должна быть в реальном устройстве

Next i



loop:

Serin PORTB.2, 9600, i 'пошлите значение, вывод PORTB.2 (линия ТХ software UART)

Serout PORTB.1, 9600, "Number: ", #i, CrLf 'пошлите отформатированное значение на serial порт

Goto loop 'бесконечный цикл



- Запустить PIC Simulator.

- Нажать на OptionsSelect Microcontroller.

- Выбери'PIC16F84' и щелчок на кнопке Select.

- Нажать на OptionsChange Clock Frequency.

- Ввести '4' и щелчок на кнопке OK.

- Нажать на FileLoad Program.

- Выбериsoftuart.hex файл и щелчок на Open. Программа загружена.

- Нажать на ToolsSoftware UART Simulation Interface. Это откроет окно для того, чтобы связать с помощью интерфейса программное обеспечение UART в течение моделирования.

- Настройки по умолчанию должны быть установлены: RX Line---> PORTB.2, TX Line---> PORTB.1, Baud Rate---> 9600, Logic Levels---> Standard. В противном случае команды использования от меню Settings делают необходимые изменения.

- Нажать на ToolsMicrocontroller View. Это откроет окно Microcontroller View.

- Снова установить окна на экране, чтобы получить лучшее представление.

- Выбери скорость моделирования RateUltimate (No Refresh).

- Нажать на SimulationStart. Начнется моделирование.

- Ждать, пока программа не закончила посылать 6 строк форматированного текста к порту serial. Обратите внимание на состояние PORTB.1 вывода на окне Microcontroller View.

- Использование одной из трех доступных кнопок в секции Ввода UART интерфейса UART посылает байт порту serial. Обратите внимание на состояние PORTB.2 вывода на окне Microcontroller View.

- Ждите, программа отвечает, посылая одну строку отформатированного вывода.

- Последние два шага могут быть повторены.

- Моделирование можно остановить в любое время, нажав на SimulationStop..



- Вид экрана: представление

*



ПРИМЕР 10



- Просмотреть 7segment.bas файл из используемой папки. Эта программа отображает числа от 0 до 99 на двух 7-сегментных дисплеях с параллельным подключением, и двумя управляющими линиями, используя процедура мультиплексирования прерывания TMR0. Файл 7segment.asm был сгенерирован, используя, встроенный компилятор Basic. Файл 7segment.hex был сгенерирован, используя встроенный ассемблер.



Dim digit As Byte 'входная переменная для подпрограммы GETMASK

Dim digit1 As Byte 'текущая старшей цифры

Dim digit2 As Byte 'текущая младшей цифры

Dim mask As Byte 'выходная переменная от подпрограммы GETMASK

Dim mask1 As Byte 'текущее значение старшейцифры

Dim mask2 As Byte 'текущее значение младшей цифры

Dim i As Byte

Dim phase As Bit



Symbol d1enable = PORTC.0 'линия управления для старшего 7-сегментного дисплея

Symbol d2enable = PORTC.1 'линия управления для младшего 7-сегментного дисплея

TRISB = %00000000 'установите штырьки PORTB как выводы

TRISC.0 = 0 'установит штырьки RC0 как выходы

TRISC.1 = 0 'установит штырьки RC1 как выходы

d1enable = False

d2enable = False

mask1 = 0

mask2 = 0

phase = 0

INTCON.T0IE = 1 'Включит прерывание Timer0

INTCON.GIE = 1 'Включит все прерывание

OPTION_REG.T0CS = 0 'Установит частоту Timer0 на внутренний генератор



loop:

For i = 0 To 99

digit1 = i / 10 'получите текущую высокую цифру

digit2 = i Mod 10 'получите текущую низкую цифру

TMR0 = 0 'сбросит Timer0, чтобы предотвратить его прерывание прежде, чем оба значения определены

digit = digit1

Gosub getmask 'получите значение для старшей цифры

mask1 = mask

digit = digit2

Gosub getmask 'получите значение для младшей цифры

mask2 = mask

Gosub show1 'отобразите новое значение

Gosub show2 'отобразите новое значение

WaitUs 500 'задержка для моделирования

'используйте большую задержку для реального устройства, например WAITMS 500


Next i

Goto loop

End



On Interrupt 'подпрограмма прерывания Timer0

'непрерывно переключает между высокими и низкими дисплеями


If phase = 0 Then

phase = 1

Gosub show1

Else

phase = 0

Gosub show2

Endif

INTCON.T0IF = 0 'Разрешает прерывание TMR0

Resume



getmask: 'получите соответствующее значение 7-сегментного диспля для входной цифры

mask = LookUp(0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f), digit

Return



show1: 'покажите старшую цифру на дисплее

d2enable = False

PORTB = mask1

d1enable = True

Return



show2: 'покажите младшую цифру на дисплее

d1enable = False

PORTB = mask2

d2enable = True

Return



- Запустить PIC Simulator.

- Нажать на OptionsSelect Microcontroller.

- Выбери'PIC16F877' и щелчок на кнопке Select.

- Нажать на OptionsChange Clock Frequency.

- Ввести '4' и щелчок на кнопке OK.

- Нажать на FileLoad Program.

- Выбери7segment.hex файл и щелчок на Open. Программа загружена.

- Нажать на Tools7-Segment LED Displays Panel. Это откроет окно с четырьмя дисплеями 7-segment.

- Нажать на кнопку Setup ниже дисплея номер 2.

- Нажать на оранжевое поле рядом с Дисплеем, дают возможность метке выбрать вывод, который будет использоваться, чтобы включить/отключить этот дисплей.

- Ввести 4, чтобы выбрать PORTC и затем нажать на OK.

- Ввести 0, чтобы выбрать вывод RC0 и затем нажать на OK.

- Нажать на кнопку Setup ниже дисплея номер 1.

- Нажать на оранжевое поле рядом с Дисплеем, дают возможность метке выбрать вывод, который будет использоваться, чтобы включить/отключить этот дисплей.

- Ввести 4, чтобы выбрать PORTC и затем нажать на OK.

- Ввести 1, чтобы выбрать вывод RC1 и затем нажать на OK.

- Нажать на кнопку Hide Setup, чтобы сохранить некоторое экранное пространство.

- Снова установить окна на экране, чтобы получить лучшее представление.

- Выберинорма моделирования RateUltimate (No Refresh).

- Нажать на SimulationStart. Начнется моделирование.

- Программа отобразит числа от 0 до 99 на двух 7-сегментных дисплеях, используя процедуру мультиплексирования прерывания TMR0.

- Эксперимент с опцией Keep Last Display.

- Моделирование можно остановить в любое время, нажав на SimulationStop.

- Вид экрана: представление

*



ПРИМЕР 11



- Просмотреть i2c.bas файл из используемой папки. Эта подпрограмма программирует первые 32 ячейки во внешнем устройстве serial EEPROM, используя протокол связи I2C. В этом примере это используется, чтобы демонстрировать осциллограф и модули моделирования генератора сигнала. Файл i2c.asm был сгенерирован, используя, встроенный компилятор Basic. Файл i2c.hex был сгенерирован, используя встроенный ассемблер.



Dim addr As Word 'переменная для хранения байта адреса EEPROM

Dim data As Byte 'переменная для хранения байта данных EEPROM



Symbol sda = PORTC.2 'новое имя для вывода SDA

Symbol scl = PORTC.3 'новое имя для вывода SCL



For addr = 0 To 31 'будут записаны первые 32 байта

data = 255 - addr 'значение байта данных для записи

I2CWrite sda, scl, 0xa0, addr, data 'используем I2C для записи в serial EEPROM WaitMs 1 'маленькая задержка

Next addr



- Запустить PIC Simulator.

- Нажать на OptionsSelect Microcontroller.

- Выбери'PIC16F877' и щелчок на кнопке Select.

- Нажать на OptionsChange Clock Frequency.

- Ввести '4' и щелчок на кнопке OK.

- Нажать на FileLoad Program.

- Выбериi2c.hex файл и щелчок на Open. Программа загружена.

- Нажать на ToolsOscilloscope. Это откроет четыре канала цифровое окно осциллографа.

- Нажать на Канал SettingsTurn On/Off Oscilloscope 1.

- Ввести 2, чтобы выбрать PORTC для канала 1 целевой порт вывода и затем нажать на OK.

- Ввести 2, чтобы выбрать вывод RC2 для канала 1 целевой вывод и затем нажать на OK.

- опция Pull-up Select для канала 1 вывод.

- Нажать на Канал SettingsTurn On/Off Oscilloscope 2.

- Ввести 2, чтобы выбрать PORTC для канала 2 целевых порта вывода и затем нажать на OK.

- Ввести 3, чтобы выбрать вывод RC3 для канала 2 целевых вывода и затем нажать на OK.

- опция Pull-up Select для канала 2 вывода.

- Нажать на Канал SettingsTurn On/Off Oscilloscope 3.

- Ввести 1, чтобы выбрать PORTB для канала 3 целевых порта вывода и затем нажать на OK.

- Ввести 0, чтобы выбрать вывод RB0 для канала 3 целевых вывода и затем нажать на OK.

- Нажать на Канал SettingsTurn On/Off Oscilloscope 4.

- Ввести 1, чтобы выбрать PORTB для канала 4 целевых порта вывода и затем нажать на OK.

- Ввести 1, чтобы выбрать вывод RB1 для канала 4 целевых вывода и затем нажать на OK.

- Нажать на ToolsSignal Generator. Это откроет четыре канала непрерывный генератор импульсов.

- Нажать на SettingsTurn On/Off Signal Generator 1.

- Ввести 1, чтобы выбрать PORTB для канала 1 целевой порт вывода и затем нажать на OK.

- Ввести 0, чтобы выбрать вывод RB0 для канала 1 целевой вывод и затем нажать на OK.

- Ввести 500, чтобы определить период для канала 1 импульс и затем нажать на OK.

- Ввести 25, чтобы определить цикл режима работы для канала 1 импульс и затем нажать на OK.

- Нажать на SettingsTurn On/Off Signal Generator 2.

- Ввести 1, чтобы выбрать PORTB для канала 2 целевых порта вывода и затем нажать на OK.

- Ввести 1, чтобы выбрать вывод RB1 для канала 2 целевых вывода и затем нажать на OK.

- Ввести 1000, чтобы определить период для канала 2 импульса и затем нажать на OK.

- Ввести 50, чтобы определить цикл режима работы для канала 2 импульса и затем нажать на OK.

- Нажать на ToolsMicrocontroller View. Это откроет окно Microcontroller View.

- Снова установить окна на экране, чтобы получить лучшее представление.

- ВыбериRateExtremely Fast simulation rate.

- Нажать на SimulationStart. Начнется моделирование.

- I2C связь может быть соблюден относительно модуля осциллографа так же как импульсов, сгенерированных генератором сигнала.

- Моделирование можно остановить в любое время, нажав на SimulationStop..

- Вид экрана: представление

*

PIC Simulator IDE Author: Vladimir Soso ALL RIGHTS RESERVED.

PIC Simulator IDE official web site is on the following address:

http://www.oshonsoft.com/




Читайте далее: Схема, обеспечивающая развертку по диагональной оси любого осциллографа, Мощный транзистор в лавинном режиме, Простой индикатор уровня сигнала на ИН13, Кварцевый фильтр, Повышение частоты кварца, Драйвер лазерной указки, Подставка для паяльника, Имитируем работу клавиатуры, Как удлинить ось, Как закрепить тонкое сверло в патроне электродрели, Нож для зачистки проводов, Третья рука радиоконструктора, Размещение инструмента,
Самые читаемые