Реклама на сайте | Помощь сайту   English version | Datasheets 
KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

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

Описание работы в 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/


 © 2003—2017 «Электронный портал»Обр@тная связь