Объявление

Свернуть
Пока нет объявлений.

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

Свернуть
X
Свернуть

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


      Возможность размещать комментарии к сообщениям отключена.

    Метки статей

    Свернуть

    Меток пока нет.

    Новые статьи

    Свернуть

    • «NO EXCUSES» — специальная программа компании MOTOROLA
      admin
      Дмитрий Панфилов
      «NO EXCUSES» — специальная программа компании MOTOROLA

      Ни для кого не секрет, что микропроцессоры и микроконтроллеры находят самое широкое применение в различных областях науки и техники. Сегодня трудно указать область электроники, где не использовались бы микроконтроллеры. Количество простейших применений, требующих интеллектуального управления процессом, возрастает лавинообразно. Реализация гибких алгоритмов управления на базе микроконтроллеров дает широкому кругу разработчиков уникальный инструмент для создания «интеллектуальных» систем управления. Умение разумно его применять во многом определяет успех оборудования в конкурентной борьбе на рынке.

      MOTOROLA штурмует трехмиллиардный рубеж

      Статистика гласит, что наибольшую долю рынка встраиваемых систем управления занимают восьмиразрядные микроконтроллеры. Здесь показателен...
      10.02.2017, 14:56
    • Частотомер на PIC16F873 с двух строчным ЖКИ способный измерять частоты
      admin
      alt="" />Частотомер на PIC16F873 с двух строчным ЖКИ способный измерять частоты от 10Гц до 45МГц. Чувствительность по входу около 50мВ, входное сопротивление 250 Ком, входная ёмкость 15пФ. Питание девятивольтная батарея 6F22.В память можно вносить значения, которые будут, прибавлены к входной частоте или вычтены из неё.

      При входной частоте меньше 655.35 КГц вес младшего разряда 10Гц, при входной частоте меньше 6.5535 МГц вес младшего разряда 100Гц, при входной частоте больше 6.5535 МГц вес младшего разряда 1 КГц. Переключение диапазона измерения происходит автоматически.
      Схема прибора изображена на рис.1.Входной сигнал проходит через цепь J3, R8, R9, C7, C6...
      10.02.2017, 14:56
    • Управление нагрузкой 220В переменного напряжения с использованием симисторов
      admin
      Для плавного управления нагрузкой, например, лампой освещения, можно использовать симистор. Открывается симистор током при подачи на управляющий электрод импульса. Закрывается, когда ток, проходящий через него, становится равным нулю, когда переменное напряжение меняет знак.
      ...
      10.02.2017, 14:56
    • Управление модулем Ke-USB24A из Excel
      admin
      Всю прелесть программирования USB модуля Ke-USB24A можно оценить когда встает вопрос о необходимости написания программы на каком-либо не очень широко распространенном языке или для какой-либо среды, которая, казалось бы не предусматривает возможность работы с USB устройствами. Как тут быть? - разбираться с подключением библиотек, вызовами системных функци и т.д.? Все это зачастую бывает сложно. Модуль Ke-USB24A совсем другое дело!...
      10.02.2017, 14:55
    • Управление матрицей 8х8 - легко!
      admin
      Матрица управляется так же как и 7-сегментные индикаторы - динамически. Мега16 портом А управляет одной координатой (выбирает сторку для вывода инфы), порт С - выводит ту самую информацию. Информация берётся из массива.
      />

      />
      Что бы пользоваться редактором, нужно переменную STROKA из примера переименовать в rows_arr.
      Вложения: matrica8x8.fcf_avr (56 Кб) Любители ПИКов, вам не составит труда пореколбасить этот пример под ПИКи. Пришлось себя з...
      10.02.2017, 14:55
    • То, что улучшает нашу жизнь (микросхемы для домашних и игровых устройств)
      admin
      Журнал «Компоненты и технологии» №8 2001 г.
      Ракович Н. Н.

      "В человеке все должно быть прекрасно… и у него в доме тоже"
      (Почти по А. П. Чехову)
      В последнее время при чтении профессиональных электронных журналов и статей, посвященных использованию электронных компонентов, у меня возникло и окрепло унылое ощущение, что вся гигантская индустрия полупроводников существует лишь для создания компьютеров, интеллектуального промышленного оборудования и прочих столь же серьёзных изделий. Полное осознание этой тенденции произошло после знакомства с продукцией фирмы Holtek. Приятно удивило большое количество микросхем, которые не только улучшают быт или делают жизнь более безопасной, но и не дадут соскучиться при избытке свободного времени.
      Итак, что же предлагает Holtek для разработчиков бытовой электроники?
      Отдельной линейкой представлены микросхемы для цифровых медицинских термометров. Однокристальные КМОП ИС НТ7500, НТ7501, НТ7510 позволяют измерять температуру в диапазоне от +32°С до +42°С с точностью ±0,1°С. В приборах предусмотрена звуковая сигнализация окончания измерения, а автоматическое отключение питания и вывод информации на ЖКИ-дисплей в сочетании с 1,5 В батарейкой делают его очень экономичным. Модели НТ7500 и НТ7501 практически одинаковы, различаясь лишь тем, что в НТ7500 предусмотрены две шкалы (Цельсия и Фаренгейта), а в НТ7501 реализована только шкала Цельсия и функция самотестирования при включении. ИС НТ7510 идентична НТ7500, но при подключении к ней синтезатора речи НТ84018-0D можно создать "говорящий" термометр.
      Термометр фиксирует нездоровье. А причиной его могут стать самые разные проблемы, в том числе и расшалившиеся нервы. Помогая сохранить здоровье, Holtek предлагает семейство кодеров и декодеров, основное назначение которых - системы сигнализации и охраны: защита от взлома, противопожарная сигнализация, управление гаражными воротами, автомобильные охранные системы, системы безопасности, радиотелефоны и другие системы дистанционного управления.
      Рассмотрим кодеры и декодеры серий 212, 312, 318.
      Кодеры серии 212 (НТ12А/НТ12Е) - КМОП БИС для систем дистанционного управления. Они шифруют информацию, содержащую N адресных бит и 12-N бит данных. Каждый вход адреса/данных может быть установлен в одно из двух логических состояний (отсюда название серии). Зашифрованные адреса/данные передаются, начиная со старшего бита, через радиоканал или ИК-канал. Для увеличения функциональной гибкости предусмотрено управление передачей по сигналу ТЕ (НТ12Е) или по сигналам D8-D11. В НТ12Е дополнительно предусмотрен выход 38 кГц для ИК-систем.
      Декодеры серии 212 (НТ12D/НТ12F) - пара к кодерам этой же серии. Они принимают последовательные адреса и данные от кодера по радио- или по ИК-каналу. После троекратной проверки входных данных при отсутствии ошибок эти данные декодируются и поступают на выход. Декодеры серии 212 могут обрабатывать информацию, аналогичную для кодеров (N адресных бит и 12-N бит данных). НТ12D обеспечивает обработку 8 адресных бит и 4 бит данных, а НТ12F используется для декодирования 12-разрядной адресной информации.
      В кодерах серий 312 и 318 каждый вход адреса/данных может быть запрограммирован на три состояния, при...
      10.02.2017, 14:55
    Обработка...
    X