radiohlam.ru
anre25 Читатель
Сообщения: 5 Зарегистрирован: 20 янв 2015, 22:29
pic12f675 как изменить прошивку
Сообщение anre25 » 26 апр 2016, 11:31
rhf-admin администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3052 Зарегистрирован: 25 авг 2009, 23:19 Откуда: Уфа Контактная информация:
Re: pic12f675 как изменить прошивку
Сообщение rhf-admin » 26 апр 2016, 13:09
anre25 Читатель
Сообщения: 5 Зарегистрирован: 20 янв 2015, 22:29
Re: pic12f675 как изменить прошивку
Сообщение anre25 » 27 апр 2016, 12:54
rhf-admin администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3052 Зарегистрирован: 25 авг 2009, 23:19 Откуда: Уфа Контактная информация:
Re: pic12f675 как изменить прошивку
Сообщение rhf-admin » 27 апр 2016, 21:28
Тут придётся дизассемблировать, раз исходников нет.
Самый простой метод дизассемблировать код для PIC-контроллеров — это использовать MPLAB.
Создаём новый проект, выбираем в настройках нужную модель контроллера, делаем импорт hex-файла (File->Import->Import to memory) и открываем загруженный в память код (Window->Program memory)
Чтобы всё получилось — название проекта должно совпадать с названием hex-файла.
Как прошить контроллер PIC 12F675
Контроллеры микропрограммы являются важной частью в современных электронных устройствах. Они позволяют управлять и контролировать работу различных компонентов. Одним из популярных контроллеров является PCI 12F675. Он обладает широкими возможностями и оснащен мощным процессором, что делает его привлекательным для начинающих электронщиков.
Прошивка контроллера PCI 12F675 является неотъемлемой частью его использования. Она позволяет расширить его функциональность и адаптировать его под конкретные задачи. Но прошивка контроллера может показаться сложной задачей для новичков. В этом практическом руководстве мы рассмотрим основные шаги прошивки контроллера PCI 12F675 и поделимся полезными советами для начинающих.
Прошивка контроллера PCI 12F675 включает в себя несколько важных этапов. Вначале необходимо создать основу для прошивки. Затем следует выбрать платформу разработки и загрузить на нее программное обеспечение. Далее необходимо настроить соединение с контроллером и загрузить программу в его память. В завершение процесса прошивки контроллера необходимо протестировать его работу и внести необходимые корректировки.
Необходимо отметить, что прошивка контроллера PCI 12F675 требует определенных знаний и навыков в области электроники и программирования. Поэтому перед началом прошивки рекомендуется ознакомиться с документацией и провести тесты на платформе разработки, чтобы минимизировать возможные ошибки.
В итоге, с помощью данного практического руководства, вы сможете освоить и научиться прошивать контроллер PCI 12F675. Такой навык будет полезен для реализации различных электронных проектов и позволит вам расширить свои возможности в области электроники и программирования.
Вопрос-ответ
Какие устройства можно прошить с помощью контроллера PCI 12F675?
Контроллер PCI 12F675 может быть использован для прошивки различных устройств, таких как световые индикаторы, датчики, кнопки, приводы и другие аналогичные устройства.
Что такое прошивка и зачем нужен контроллер PCI 12F675 для её осуществления?
Прошивка — это запись программного обеспечения во внутреннюю память контроллера, чтобы он мог выполнять определенные функции. Контроллер PCI 12F675 используется для записи прошивки в устройства и управления ими.
Какие программы нужны для прошивки контроллера PCI 12F675?
Для прошивки контроллера PCI 12F675 вам понадобится специальная интегрированная среда разработки (IDE), такая как Microchip MPLAB X IDE или MPLAB IDE, а также компилятор программного кода, например CCS C Compiler или Hi-Tech PICC.
Какие навыки необходимы для прошивки контроллера PCI 12F675?
Для прошивки контроллера PCI 12F675 необходимы базовые знания электроники и программирования. Вам также понадобится понимание основных концепций микроконтроллеров, ассемблера и языка программирования C.
Можно ли прошить контроллер PCI 12F675 на практике без использования специальных приборов?
Да, контроллер PCI 12F675 можно прошить без использования специальных приборов, но для этого вам понадобится компьютер соответствующей конфигурации, программатор и программное обеспечение для записи прошивки.
Как прошить контроллер pci 12f675
Здравствуйте!
Недавно решил освоить для себя новую область — микроконтроллеры. Раньше остерегался этой темы, но всё-таки захотелось изучить.
Поискал варианты программаторов, наткнулся на простейшую конструкцию на котроллере — светодиодная моргалка. Сложность пайки светодиода к контроллеру практически никакая, и я взялся повторить схему.
Контроллер PIC12F675 купил в магазине, детали для программатора брать не стал — предположил, что найти в моих разборках не проблема. Пока искал детали, нашел программатор для SIM с возможностью программирования пиков. Схема программатора примерно такая
Для прошивки использовал IC-PROG 1.05D — на виндовс 7 запустилась с ошибкой privileged instruction. Поменял в настройках работу с ком портом на виндовс апи.
На форумах прочитал о том, что нужно сохранить калибровочную константу, и собственно, подсоединив пик к программатору попытался его считать. Получил все нули.
Как ни пытался, считать с него не удалось. С WinPic аналогичная ситуация — не считывает.
Делать нечего, взял хекс файл с сайта, открыл винпиком, нажал прошить, программатор заморгал, программа руганулась на проблему считывания калибровочной константы и всё.
Нажал опять "прочитать прошивку", программатор почитал что-то и всёравно вернул нули, т.е. ситуация после попытки прошить не изменилась.
На всякий случай припаял светодиод по схеме, подключил питание, и (чудо!?) он заморгал.
Значит на запись всё-таки программатор сработал, на чтение нет.
С чтением не стал больше разбираться, взялся за програмную часть — усовершенствовать программу так, чтобы светодиот моргал с другой частотой.
На этом пункте и встал. Почитал немного про пиковский ассемблер, запустил MPLAB 8.50 и обнаружил там ничего понятного. Кроме текстового редактора, никакими функциями воспользоваться не удалось.
Читал, что им можно дизассемблировать уже готовую прошивку (что и собирался сделать), как её там открыть так и не понял. Как запускать и тестировать уже написанные программы тоже не нашел.
Далее. PIC SIMULATOR IDE.
Открыл в нём хекс файл, запустил на выполнение. Нога, на которую подключен светодиот получает высокий уровень и остаётся так не моргая. Сильно разбираться в дизассеблированной программе не стал, ибо мало что еще понимаю в ней.
Proteus 7 Professional. Программы многие хвалят и рекомендуют. И по возможностям она очень хороша, удалось запустить схемы из примеров.
Но стоит кликнуть мышкой в рабочей области, как вся схема пропадает и остаётся пустое место. Соответственно ни отредактировать проетк, ни новый создать возможности не представляется (может быть из-за русификатора?).
На дворе глубокая ночь, чтение интернета и мануалов результатов не приносит после дневного перегруза пиками. Посему, оставляю возникшие вопросы профессионалам, в надежде утром на свежую голову прочитать что-нибудь, избавляющее от танцев с бубном вокруг компиляторов.
1 Почему не читается новый микроконтроллер (PIC12675)?
2 Как открыть hex файл в MPLAB для изменения кода (дизассемблировать и потом обратно собрать хекс)?
3 В чём может быть проблема с протеусом (из вариантов пока только русификатор и седьмая винда)?
4 Чем всё-таки можно просто откомпилировать программу для заливки в контроллер?
5 Поидее, если контроллер не читается, но пишется, можно просто залить новую прошивку поверх старой, верно?
6 Можете ли немного прокоментировать код для мигалки (немного запутался в банках и регистрах, читая пример для одного контроллера и интерптритируя к своему):
processor 12F675
#include <P12F675.INC>
__config 0x3F84
; _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF
; & _INTRC_OSC_NOCLKOUT
; RAM-Variable
LRAM_0x20 equ 0x20
LRAM_0x21 equ 0x21
LRAM_0x22 equ 0x22
LRAM_0x23 equ 0x23
; Reset-Vector
GOTO LADR_0x0028
LADR_0x0001
CLRF LRAM_0x23
MOVWF LRAM_0x22
LADR_0x0003
MOVLW 0xFF ; b’11111111′ d’255′
; Interrupt-Vector
ADDWF LRAM_0x22,F
BTFSS STATUS,C
ADDWF LRAM_0x23,F
BTFSS STATUS,C
GOTO LADR_0x0023
MOVLW 0x03 ; b’00000011′ d’003′
MOVWF LRAM_0x21
MOVLW 0xDF ; b’11011111′ d’223′
CALL LADR_0x000F
GOTO LADR_0x0003
CLRF LRAM_0x21
LADR_0x000F
ADDLW 0xE8 ; b’11101000′ d’232′
MOVWF LRAM_0x20
COMF LRAM_0x21,F
MOVLW 0xFC ; b’11111100′ d’252′
BTFSS STATUS,C
GOTO LADR_0x0018
LADR_0x0015
ADDWF LRAM_0x20,F
BTFSC STATUS,C
GOTO LADR_0x0015
LADR_0x0018
ADDWF LRAM_0x20,F
NOP
INCFSZ LRAM_0x21,F
GOTO LADR_0x0015
BTFSC LRAM_0x20,0
GOTO LADR_0x001E
LADR_0x001E
BTFSS LRAM_0x20,1
GOTO LADR_0x0022
NOP
GOTO LADR_0x0022
LADR_0x0022
RETURN
LADR_0x0023
BCF STATUS,IRP
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF STATUS,RP1 ; !!Bank Register-Bank(2/3)-Select
NOP
RETURN
LADR_0x0028
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
CLRF ADCON0 ; !!Bank!! ADCON0 — ANSEL
MOVLW 0x07 ; b’00000111′ d’007′
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
MOVWF CMCON ; !!Bank!! CMCON — VRCON
BSF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BCF GPIO,2 ; !!Bank!! GPIO — TRISIO
LADR_0x002F
BCF STATUS,RP0 ; !!Bank Register-Bank(0/1)-Select
BSF GPIO,2 ; !!Bank!! GPIO — TRISIO
MOVLW 0x7D ; b’01111101′ d’125′ ">"
CALL LADR_0x0001
BCF GPIO,2 ; !!Bank!! GPIO — TRISIO
MOVLW 0x7D ; b’01111101′ d’125′ ">"
CALL LADR_0x0001
GOTO LADR_0x002F
LADR_0x0037
SLEEP
GOTO LADR_0x0037
PS пока писал, нашел хороший дизассемблер в одной из соседних тем — PICDisasm.
Урок 5. Первая программа на PIC12F675
Мы уже получили минимальные представления о микроконтроллерах, установили необходимые программы: среду разработки MPLAB и C-компилятор для микроконтроллеров фирмы Microchip Hi-Tech PICC. На этом уроке, как я уже давно обещал, мы научимся создавать проект в среде MPLAB, напишем первую программу для PIC12F675 и проверим ее работоспособность в среде моделирования Proteus. Программа будет очень простая: с помощью нашего микроконтроллера мы заставим мигать два светодиода. То есть на данном этапе нам нужно понять: как работать с портами ввода/вывода.
Одно важное замечание: я работаю с MPLAB и PICC в операционной системе Windows XP. При работе в Windows 7 и новее, могут возникать определенные проблемы с компилятором PICC. О них я напишу позже.
Итак, надеюсь, что MPLAB, Proteus и PICC вы скачали и установили.
Кто испытывает трудности с чтение на английском языке, рекомендую скачать даташит на PIC12F675 на русском языке.
Для начала создадим в Proteus схему нашей мигалки.

Вывод MCLR используется для сброса микроконтроллера, поэтому для нормальной работы его нужно подтягивать к питанию через резистор. Если подать на этот вход сигнал низкого уровня (логический «0»), то произойдет сброс микроконтроллера. В качестве цифровых выходов, которые будут управлять светодиодами, выбираем выходы GP4 и GP5. Двойным кликом левой кнопки мыши на микроконтроллере U1 открываем его свойства. Здесь необходимо установить такие настройки:

Пока просто установите все как на рисунке, подробности будут потом.
Для тех, кто не умеет работать в протеусе, я снял видео о том, как создать схему в Proteus .
Теперь, когда схема в протеусе готова, создадим проект в среде MPLAB.
Запускаем MPLAB, переходим в меню Project->ProjectWizard…
Должно появиться окно:

Нажимаем Далее и в поле Device выбираем нужный микроконтроллер PIC12F675.

Нажимаем Далее. В следующем окне предлагается выбрать компилятор.

Здесь, как вы уже догадались, мы выбираем установленный ранее компилятор PICC.
Если возле PICC Compiler, Assembler или Linker появится красный крестик, то нужно указать полный путь к файлу picc.exe. Обычно это что-то вроде c:\Program Files\HI-TECH Software\PICC\9.50\bin\picc.exe
Нажимаем Далее. В новом окне мы создаем непосредственно наш проект. Необходимо выбрать директорию, в которой он будет находиться, для чего нажимаем кнопку Browse.

Выбираем нужную директорию, в поле Имя файла задаем имя нашего проекта и нажимаем Сохранить.

Нажимаем кнопку Далее. Появляется окно, в котором предлагается добавить в проект исходные файлы программы. Но так, как у нас их нет, то ничего добавлять мы не будем.

Просто жмем Далее. В следующем окне появится сообщение о том, что проект создан. Нажимаем Готово.

Далее предлагается сохранить файл рабочей директории Workspace Files.

Здесь обычно я пишу такое же имя, как и у самого проекта. Хотя можно писать и другое.
Дальше у вас должно открыться дерево проекта “Project” и окно “Output”.

Открыть/закрыть их можно через меню View. View->Project, View->Output
Пришло время создать файл программы. Заходим в меню File->New. Появится текстовый редактор.

Дальше вставляем в редактор код программы:
Позже я объясню как работает программа.
Сохраняем файл программы File->Save .

В появившемся диалоговом окне выбираем директорию, в которой создавался проект, и даем имя файлу main.c . Нажимаем Сохранить .
Теперь нужно добавить файл программы в дерево проекта. Для этого нажимаем правой кнопкой мыши на Source Files и выбираем пункт Add Files…

Находим наш main.c и нажимаем Открыть . После этого main.c появится в дереве проекта.
Сохраняем нашWorkspace: File->Save Workspace .
Теперь, чтобы создался файл прошивки *.hex, нужно откомпилировать проект.
Заходим в меню Project и нажимаем Bild All.

Так как программа проверенная, ошибок в ней нет, то компилятор выдаст сообщение об успешной компиляции в окне Output и укажет сколько памяти микроконтроллера использовано.

Program space – постоянная flash память, в которой хранится программа.
Data space – временная память, в которой хранятся переменные
EEPROM – энергонезависимая постоянная память, в ней могут храниться какие-то настройки устройства.
Configuration bits – область памяти, в которой хранятся биты конфигурации.
Если в программе имеются ошибки, то в окне Output появится предупреждение о них.
После компиляции в папке с проектом должен появиться файл leds_blink.hex
Название может быть и другим — смотря как назван проект.
Загружаем данный файл в модель микроконтроллера PIC12F675 в протеусе. Для этого заходим в параметры микроконтроллера (рисунок в начале урока) и в поле Program File выбираем файл прошивки leds_blink.hex.
В левом нижнем углу среды Proteus нажмите кнопку Play. Запускается симуляция работы микроконтроллера и светодиоды должны замигать. Поздравляю, вы создали первую программу!
Теперь подробнее расскажу — что же мы написали в коде нашей программы.
Прежде всего напоминаю, что для работы микроконтроллера необходимо его тактировать. В микроконтроллере PIC12F675 предусмотрена возможноcть тактирования как от внешнего источника, которым может служить кварцевый резонатор или RC-цепочка, так и от внутреннего RC-генератора. Максимальная частота тактирования для данного микроконтроллера составляет 20 МГц. Частота внутреннего RC-генератора фиксирована и составляет 4 МГц. От какого типа генератора будет тактировать микроконтроллер, определяется битами конфигурации. В коде программы биты конфигурации настраиваются через макрос __CONFIG(0x31F4);
Число, записанное в скобках, не взято «с потолка». Это число записывается в регистр CONFIG, и определяет такие параметры как: режим тактирования/источник тактирования, разрешает/запрещает работу сторожевого таймера, таймера включения питания, разрешение сброса контроллера при понижении питания и другие настройки. Подробно о регистре написано в разделе 9.1 Configuration Bits даташита. В среде MPLAB есть графический инструмент для настройки битов конфигурации, из которого можно получить число, записываемое в регистр CONFIG. Запускается данный инструмент через меню Configure->Configuration Bits…

Снимите галочку Configuration Bits set in code.
1. Выбираем генератор FOSC : INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN.
Мы выбрали тактирование от внутреннего RC-генератора (не хотим тратиться на покупку кварцевого резонатора). Нужно заметить, что тактирование от RC-генератора не гарантирует высокую точность периода сигнала, поэтому данный вариант нельзя применять, когда в программе отсчитываются очень точные интервалы времени. В этом случае лучше применить более стабильный генератор на кварцевом резонаторе.
В микроконтроллере PIC12F675 одни и те же выводы могут использоваться для выполнения различных функций: работать как цифровые входы/выходы, как аналоговые входы, входы компаратора, выходы компаратора и т.д. Еще одна из возможностей – это получение сигнала тактирования на выводе микроконтроллера (если например от этого же сигнала нужно тактировать что-то еще). В данном случае мы настроили данный выходы для работы в цифровом режиме, т.к. ног у микроконтроллера и так не много, а внешний сигнал тактирования нам не нужен.
2. Настройка сторожевого таймера (Watchdog Timer) WDTE: WDT Disabled.
Сторожевой таймер – это такой таймер, который «сторожит» микроконтроллер от зависания. Данный таймер отсчитывает определенные интервалы времени, и если за это время не сбросить таймер, то он сбрасывает микроконтроллер (перезапускает программу). Т.е. в программе нужно с определенной периодичностью сбрасывать данный таймер. Период таймера настраивается в регистре OPTION_REG. Для обнуления сторожевого таймера вызывается ассемблерная команда CLRWDT. На си можно записать ее так asm(“CLRWDT”);
Наше устройства выполняет простые функции и если оно зависнет, то это не приведет к тяжелым последствиям, поэтому просто выключает сторожевой таймер, иначе он выключит нас J.
3. Таймер включения питания PWRTE: PWRT Disable.
Данный таймер обеспечивает задержка микроконтроллера в состоянии сброса, пока не установится номинальное значение питания Vdd. Выключаем эту функцию.
4.Настройка пина MCLR: GP3/MCLR pin function is MCLR.
Я уже писал ранее, что этот пин используется для внешнего сброса микроконтроллера. Но его можно настроить так, чтобы он выполнял функцию цифрового вывода порта (в данном случае MCLR подтягивается к питанию внутренним резистором). Я вам советую оставить функцию внешнего сброса по данному пину, иначе, в зависимости от программатора, могут возникнуть проблемы при дальнейшем перепрограммировании МК.
5.Сброс по снижению питания BODEN: BOD enable. Здесь все понятно: снижается питание Vdd до определенного порога Vbor в течение времени Tbor – происходит сброс микроконтроллера. Vbor как правило — это напряжение 2.0…2.1 В. Включаем функцию сброса по снижению питания.
6.Бит защиты памяти программ CB: disable. Может называться CP (Code protect). Установка этого бита защищает память микроконтроллера от чтения программатором. Предположим, что вы проделали большую интеллектуальную работу – написали сложную программу для устройства, которое поступит в серийное производство, и вам не хотелось бы, чтобы данное устройство мог кто-то с легкостью скопировать, поэтому в данном случае вы включаете защиту памяти микроконтроллера от считывания. Когда этот бит установлен, программу нельзя считать. В нашем случае мы защиту отключаем.
7. Бит защиты памяти EEPROM CPD: disable. Здесь все аналогично CB, только устанавливается защита на энергонезависимую память EEPROM. Тоже отключаем.
После того, как каждый бит конфигурации установлен, в поле Value можно увидеть шестнадцатеричное число, которое записывается в регистр CONFIG. У меня получилось число 0x31F4.
Для того, чтобы с регистрами можно было работать, используя их имена, а не адреса в памяти, подключается заголовочный файл pic.h c помощью директивы компилятора #include.
Как известно, основная функция в Си, с которой начинается выполнения программы – это функция main. Программа наша не большая и весь код будет находиться в функции main. Еще одной важной особенностью написания программ для микроконтроллера является наличие бесконечно цикла (в нашем случае это while(1)). Если это не сделать, то счетчик команд дойдет до последнего адреса в памяти программ (flash-памяти) и перейдет на нулевой адрес, что приведет, если не к сбросу микроконтроллера, так, по крайней мере, к повторному запуску программы и повторной инициализации всех регистров. В общем, ерунда получится.
Теперь рассмотрим как настроить порты ввода/вывода, чтобы они работали правильно, т.е. являлись выходами и способны были зажигать светодиоды.
Заглянем в даташит на мк и увидим, что за работу цифровых портов ввода/вывода отвечают следующие регистры: GPIO , TRISIO , WPU и еще другие, но о них позже.
Регистр GPIO :

Данный регистр отвечает за то, какой логический уровень сигнала будет на выходе: 1 – высокий (5 В), 0 – низкий (0В). Нужно заметить, что установить уровень выходного сигнала можно в том случает, если цифровой вывод используется в качестве выхода.
За направление работы порта на вход или выход отвечает регистр TRISIO .

Если бит TRISIOn установлен в 1, то соответствующий n-й вывод порта будет работать на вход. Если 0 – то на выход.
Когда выводы порта используются как входы, то часто необходимо их подтягивать к питанию через резистор. Вход в «висящем» состоянии оставлять нежелательно, так как из-за наводок на нем хаотически могут возникать сигналы высокого или низкого уровня. Когда же вход подтянут к питанию (или к земле), то можно с уверенностью сказать, что на нем присутствует сигнал высокого (низкого) уровня. В микроконтроллере PIC12F675 имеются встроенные подтягивающие резисторы, что избавляет разработчика от применения внешних резисторов и уменьшает конструкцию устройства. За настройку подтягивающих резисторов отвечает регистр WPU .

Установка бита WPUn в 1 разрешает внутреннюю подтяжку к питанию вывода n. Сброс бита в 0 соответственно запрещает использование подтягивающего резистора.
Однако разрешить использование подтягивающих резисторов в регистре WPU не достаточно. Есть еще такой замечательный регистр OPTION . Он в основном отвечает за настройку режима работы таймера Timer0 , о котором будет сказано на других уроках, но помимо этого данный регистр содержит бит GPPU , который запрещает или разрешает использование всех подтягивающих регистров.

Над описание бита GPPU стоит черта инверсии. Это значит, что установка бита в 1 запрещает подтягивающие резисторы, а сброс бита в 0 наоборот разрешает.
Итак, минимальные знания для написания первой программы мы получили.
Теперь алгоритм работы программы по порядку.
1) Запрещаем использование подтягивающих резисторов, так как порт работает на выход.
Необходимо заметить, что в файле pic.h описаны не только регистры целиком, но и каждый бит по отдельности, поэтому мы записали единицу в бит GPPU вместо того, чтобы записать ее в регистр OPTION. Запись OPTION |= 0x80 будет равнозначной записи GPPU = 1. Т.е. тут дело вкуса/универсальности программы. Если число 0x80 перевести в двоичный код, то получим 0b10000000, т.е. в бит под номером 7 (отсчет идет от 0-го бита) мы запишем единицу.
2)Настраиваем все выводы порта на выход.
3)Устанавливаем все выходы микроконтроллера в 0.
4) Устанавливаем на выходе GP4 единицу, а на выходе GP5 – ноль (см. схему в протеусе).
5)Организовываем задержку во времени на переключение светодиодов. Каждая команда PIC-контроллера выполняется за 4 машинных цикла. Мы настраивали тактирование микроконтроллера от внутреннего RC-генератора частотой 4МГц. Т.е получается , что каждая команда выполняется с частотой 1МГц, т.е. за 1 мкс. Если переключать светодиоды с такой частотой, то мы просто не увидим этого. Нам будет казаться, что они постоянно горят. Для этого создаем программный цикл на n-е количество «бесполезных» операций, которые задержат переключение светодиодов.
6)Как только истекло время задержки, переключаем светодиоды. На выходе GP4 устанавливается ноль, на выходе GP5 – единица.
7)Снова организовываем задержку.
Все! Весь алгоритм работы программы. Все на самом деле проще, чем кажется изначально.
После компиляции программы получаем hex-файл, который загружается в модель микроконтроллера в протеусе, о чем говорилось выше. Как это сделать показано на видео.
На этом наш урок по работе с портами ввода/вывода заканчивается. В следующем уроке научимся работать в режиме отладки программы.