Описание работы в 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, Кварцевый фильтр, Повышение частоты кварца, Драйвер лазерной указки, Подставка для паяльника, Имитируем работу клавиатуры, Как удлинить ось, Как закрепить тонкое сверло в патроне электродрели, Нож для зачистки проводов, Третья рука радиоконструктора, Размещение инструмента,
|