Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ внСшний Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ для всСх iOS-устройств, совмСстим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 Π΄ΠΎ 24:00 ΠΏΠ½-ΠΏΡ‚ | c 10:00 Π΄ΠΎ 18:00 сб
0 Comments

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² PIC. Π§Π°ΡΡ‚ΡŒ 1. НСобходимыС инструмСнты ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΡΠ½ΠΎΠ²Ρ‹ MPLAB

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ pic-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹. Для Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этими ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ понадобится.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, которая Π΄ΠΎΠ»ΠΆΠ½Π° ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π² Π½Π΅Π³ΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠ΄Π°Ρ…, Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ для записи Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΎΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ устройство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ (Π½Π° слСнгС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ говорят Π·Π°Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Ρ‚ΡŒ) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€. Π’Π°ΠΊΠΎΠ΅ устройство называСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π°Ρ… ΠΈ Π·Π°Π»ΠΈΠ²ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎΠ·Π΄Π½Π΅Π΅, Π² послСднСй части нашСй эпопСи (ΠΊΠΎΠ³Π΄Π° ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π·Π°Π»ΠΈΠ²Π°Ρ‚ΡŒ), Π° ΠΏΠΎΠΊΠ° Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎ-порядку β€” ΠΊΠ°ΠΊ Π½Π°ΠΌ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° β€” это, ΠΊΠ°ΠΊ я ΡƒΠΆΠ΅ сказал, Π½Π°Π±ΠΎΡ€ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ², записанный Π² Ρ„Π°ΠΉΠ»Π΅ с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Β«hexΒ» (здСсь ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ *.hex), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π»ΠΈΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π°. Никакого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ языка ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΡƒΠΆΠ½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанный Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ языкС программирования, Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹. НаиболСС ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ Π² этом ΠΏΠ»Π°Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (IDE β€” integrated development environment), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΠΈΠΌΡƒΠ»ΡΡ†ΠΈΡŽ Π΅Ρ‘ Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ ΡΠΈΠΌΡƒΠ»ΡΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ пошагово, ΠΏΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ состояниС рСгистров ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… состояниС ΠΏΠΎ своСму ТСланию. ΠšΠΎΡ€ΠΎΡ‡Π΅, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ срСды ΠΏΠΎΠΌΠΈΠΌΠΎ, собствСнно, компиляции (ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹) ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ возмоТности для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

IDE, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€ΠΎΠ², сущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ. Π›ΠΈΡ‡Π½ΠΎ я ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ MPLAB ΠΈ Π²Π°ΠΌ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ, ΠΏΠΎ Ρ‚ΠΎΠΉ простой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ MPLAB β€” это IDE ΠΎΡ‚ самого производитСля PIC-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² β€” Ρ„ΠΈΡ€ΠΌΡ‹ Microchip, поэтому ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ (Π² Ρ‚ΠΎΠΌ числС Π½Π° русском языкС, Ρ‡Ρ‚ΠΎ особСнно приятно). Π‘ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта Microchip ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΈ сам этот ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½ΠΈΠΌ. Если Π½Π΅ нашли ΠΈΠ»ΠΈ Π»ΠΎΠΌΠ°Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ β€” ссылки для скачивания здСсь, ΠΏΡ€Π°Π²Π΄Π° это ΡƒΠΆΠ΅ Π½Π΅ самая свСТая вСрсия.

Π’ описании Π½Π° русском языкС ΠΏΡ€ΠΎ всё рассказано: ΠΎΡ‚ установки ΠΈ настройки Π΄ΠΎ удалСния. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв вся установка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ setup ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° ΠΏΠ°Ρ€Ρƒ вопросов, Ρ‚ΠΈΠΏΠ° ΠΊΡƒΠ΄Π° ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, ΠΎΡ‚ сСбя лишь добавлю, Ρ‡Ρ‚ΠΎ Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ глюков ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π°Π΄ΠΎ Π² Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΏΡƒΡ‚ΠΈ Π±Ρ‹Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ английскиС Π±ΡƒΠΊΠ²Ρ‹ (Π° Π½Π΅ Π² ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, Ρ‚ΠΈΠΏΠ° C:\ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹\PIC\MPLAB). Π’ΠΎΠΎΠ±Ρ‰Π΅, ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρƒ Π² путях ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ ΠΈΠ»ΠΈ Π² названиях Ρ„Π°ΠΉΠ»ΠΎΠ² Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΠ½Π°Ρ‡Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ глюки.

MPLAB позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π΄Π²ΡƒΡ… языках: БИ ΠΈ АссСмблСр. Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ просто ломится ΠΎΡ‚ Ρ€Π°Π·Π±ΠΎΡ€ΠΎΠΊ БИ-шников ΠΈ ассСмблСрщиков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с ΠΏΠ΅Π½ΠΎΠΉ Ρƒ Ρ€Ρ‚Π° Π΄ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ, ΠΊΠ°ΠΊΠΎΠΉ язык Π»ΡƒΡ‡ΡˆΠ΅. Π― ΠΎΡ‚Π½ΠΎΡˆΡƒ сСбя ΠΊ ассСмблСрщикам, поэтому, СстСствСнно, расскаТу ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ АссСмблСр.

АссСмблСр прСдставляСт собой Π½Π°Π±ΠΎΡ€ элСмСнтарных ΠΊΠΎΠΌΠ°Π½Π΄, выполняСмых ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ. КаТдая ΠΊΠΎΠΌΠ°Π½Π΄Π° трактуСтся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Ρ‘ выполнСния ΠΈ врСмя выполнСния всСгда ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ листинг Π½Π° ассСмблСрС, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΊΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ достигаСтся Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° языкС БИ (Π΄Π° ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π° любом языкС высокого уровня) β€” это ΡƒΠΆΠ΅ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ языка. ΠŸΡ€ΠΈ компиляции каТдая такая ΠΊΠΎΠΌΠ°Π½Π΄Π° замСняСтся Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, Π½ΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΠ½Π° замСняСтся, β€” этого Π²Ρ‹ ΡƒΠΆΠ΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, это Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ языка программирования. БоотвСтствСнно, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ выполняСт ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ дСйствиС.

ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, Π² случаС с языком высокого уровня Π²Ρ‹ ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ дядя ΠΎΠ±ΠΎΠ·Π²Π°Π» свои способы Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π²Π°ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΈΡ… Π½Π°Π΄ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΠΎΠΆΠ½ΠΎ провСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ аналогию: Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ с ΠΊΠΈΡ‚Π°ΠΉΡ†Π΅ΠΌ, Π½ΠΎ Π²Π°ΠΌ говорят: β€œΠšΠΈΡ‚Π°ΠΉΡΠΊΠΈΠΉ слишком слоТный язык, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ дядя Π² Π‘ΠΎΠ»Π³Π°Ρ€ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ 20 Π»Π΅Ρ‚ ΠΆΠΈΠ» Π² ΠšΠΈΡ‚Π°Π΅ ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Π΅Π³ΠΎ Π²Ρ‹ΡƒΡ‡ΠΈΠ». А болгарский язык с русским ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ ΠΈ русскому Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ ΠΎΠ½ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятСн, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚Π΅ болгарский, Π° ΡƒΠΆ дядя ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘Ρ‚.”

Π’ случаС с ассСмблСром, Π²Ρ‹ ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚Π΅ сам ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π°Π΄ΠΎ Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ. ΠŸΡ€ΠΈ этом ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ всСго-Ρ‚ΠΎ нСсколько дСсятков ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ листкС ΠΈ ΠΈΡ… Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΊΠΈΠ½ΡƒΡ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ взглядом.

НадСюсь, ΠΊ этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ Π²Ρ‹ ΡƒΠΆΠ΅ сдСлали Π²Ρ‹Π±ΠΎΡ€ языка программирования, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΉΠ΄Ρ‘ΠΌ дальшС.

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² MPLAB, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ? Как я ΡƒΠΆΠ΅ сказал β€” подробности Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² руководствС ΠΊ IDE MPLAB, ΠΎΠ½ΠΎ Π½Π° русском ΠΈ Ρ‚Π°ΠΌ всё понятно (Ссли Π½Π΅ понятно β€” ΠΈΠ΄Ρ‘ΠΌ Π½Π° Ρ„ΠΎΡ€ΡƒΠΌ), я ΠΆΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡŽ самоС основноС ΠΈ Π΄Π°ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ установили MPLAB, Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π½Ρ‘ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ.

Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π·Π°Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ², Π°, Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, сам MPLAB создаст Π΅Ρ‰Ρ‘ нСсколько Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² (*.lst, *.err, *.cod, *.bkx). Если нСсколько ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅, Ρ‚ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ относятся. ΠšΠΎΡ€ΠΎΡ‡Π΅, создаём для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ, ΠΏΠΎΡ‚ΠΎΠΌ запускаСм MPLAB ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ мСню Project -> New Project…

Π’ появившСмся окошкС, Π² ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ΅ справа, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½Π°ΡˆΡƒ ΠΏΠ°ΠΏΠΊΡƒ, Π² Π»Π΅Π²ΠΎΠΉ части (Π² ΠΏΠΎΠ»Π΅ ΠΏΠΎΠ΄ надписью File Name) пишСм Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ my1.pjt (Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅), ΠΈ ΠΆΠΌΡ‘ΠΌ ОК.

ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΎΠΊΠ½ΠΎ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Edit Project. Π­Ρ‚ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, ΠΊΠ°ΠΊΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ камСнь, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ симуляция ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅). Находим ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ

Development Mode. Π‘ΠΏΡ€Π°Π²Π° ΠΎΡ‚ этого поля Π΅ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠ° Change… НаТимаСм.

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ΡΡ окошко с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Development Mode, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΡƒΡ‡Ρƒ Π²ΠΊΠ»Π°Π΄ΠΎΠΊ. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Tools ставим Π³Π°Π»ΠΎΡ‡ΠΊΡƒ рядом с MPLAB SIM Simulator (Π³Ρ€Π΅Ρ… для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ симулятором Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ), Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° Processor Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. На Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Clock ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ какая Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ частота Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π–ΠΌΡ‘ΠΌ ОК. На ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌ внимания, это просто Π½Π°ΠΌ говорят, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ .hex (Π½Ρƒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρƒ нас ΠΏΠΎΠΊΠ° ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅Ρ‚) ΠΈ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ настроСк Π½Π°Π΄ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (Ρ‚Π°ΠΊ ΠΌΡ‹ Π΅Ρ‰Ρ‘ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈ Ρ€Π°Π·Ρƒ Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ).

Π’ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° Language Tool Suite Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Microchip.

НаТимаСм ΠΊΠ½ΠΎΠΏΠΊΡƒ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Add Node… Π’ появившСмся ΠΎΠΊΠ½Π΅, Π² ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ΅ справа Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° слСва пишСм ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ„Π°ΠΉΠ» с тСкстом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ассСмблСрС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ my1.asm (Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅), ΠΈ ΠΆΠΌΡ‘ΠΌ ОК. Всё, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ Ρ„Π°ΠΉΠ» my1.asm (ΡƒΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π² этом Ρ„Π°ΠΉΠ»Π΅).

На этом с Edit project Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅ΠΌ, β€” Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ОК.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ, собствСнно, ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с тСкстом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΡ‹ просто ΡƒΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ тСкст Π±ΡƒΠ΄Π΅Ρ‚ Π² Ρ‚Π°ΠΊΠΎΠΌ-Ρ‚ΠΎ Ρ„Π°ΠΉΠ»Π΅, Π½ΠΎ фактичСски этот Ρ„Π°ΠΉΠ» Π΅Ρ‰Ρ‘ Π½Π΅ создан). Для этого ΠΈΠ΄Ρ‘ΠΌ Π² мСню File ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ New. ΠžΡ‚ΠΊΡ€ΠΎΠ΅Ρ‚ΡΡ окошко Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Untitled1. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ мСню File -> Save As…, Π² ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ΅ справа ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° File Name пишСм Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это Π±ΡƒΠ΄Π΅Ρ‚ my1.asm. Если всё сдСлано ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ окошка Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° помСняСтся с Untitled1 Π½Π° \ΠΏΡƒΡ‚ΡŒ\my1.asm.

Π’ΠΎΡ‚ ΠΈ всё! Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ Π² окошкС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ (мСню

Project->Build All) ΠΈ, Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅Ρ‚ ошибок (Ρ‡Ρ‚ΠΎ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π·Π° Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ), Ρ‚ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° появится готовая ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠ° (Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ hex), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π»ΠΈΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€.

  1. Π§Π°ΡΡ‚ΡŒ 1. НСобходимыС инструмСнты ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΡΠ½ΠΎΠ²Ρ‹ MPLAB
  2. Π§Π°ΡΡ‚ΡŒ 2. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
  3. Π§Π°ΡΡ‚ΡŒ 3. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ассСмблСрС
  4. Π§Π°ΡΡ‚ΡŒ 4. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Алгоритмы
  5. Π§Π°ΡΡ‚ΡŒ 5. АссСмблСр. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΉ
  6. Π§Π°ΡΡ‚ΡŒ 6. Как пСрСвСсти ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π² Ρ€Π΅ΠΆΠΈΠΌ программирования ΠΈ Π·Π°Π»ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ

radiohlam.ru

Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ PIC ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… (Π•.А. ΠšΠΎΡ€Π°Π±Π΅Π»ΡŒΠ½ΠΈΠΊΠΎΠ²,2008)

1. Π“ΠΎΡ‚ΠΎΠ²ΠΈΠΌ инструмСнты

ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ (ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ всС процСссоры) ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΡƒΡŽ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†.

Π’Π΅, ΠΊΡ‚ΠΎ прСдставляСт сСбС Ρ€Π°Π±ΠΎΡ‚Ρƒ счСтчиков, рСгистров, Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ² ΠΈ Ρ‚.Π΄., сразу ΠΆΠ΅ ΠΏΠΎΠΉΠΌΠ΅Ρ‚ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Ρƒ машинного ΠΊΠΎΠ΄Π°.

Π’Π°ΠΊ ΠΊΠ°ΠΊ, срСди элСктронщиков, Ρ‚Π°ΠΊΠΈΡ… людСй Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ, Ρ‚ΠΎ Π½Π° ΠΌΠΎΠΉ взгляд, всС ΠΎΠ½ΠΈ согласятся с Ρ‚Π°ΠΊΠΎΠΉ аксиомой: ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² β€œΠΌΠ°Π»Ρ‹Ρ… дозах”.

Авот ΠΊΠΎΠ³Π΄Π° Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ β€œΠ±ΠΎΠ»ΡŒΡˆΠΈΠ΅ дозы” (слоТныС устройства с дСсятками корпусов ΠΌ/схСм), Ρ‚ΠΎ β€œΠΌΠΎΠ·Π³ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Π΄Ρ‹ΠΌΠΈΡ‚ΡŒΡΡβ€ Π΄Π°ΠΆΠ΅ Ρƒ классных элСктронщиков, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π½Π΅Π΄ΡŽΠΆΠΈΠ½Π½Ρ‹Π΅ способности.

Π’ этом случаС, самоС нСприятноС Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста схСмотСхничСской слоТности устройства, ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ элСктронщика Ρ€Π΅Π·ΠΊΠΎ β€œΠΏΠ°Π΄Π°Π΅Ρ‚β€.

И Π² самом Π΄Π΅Π»Π΅, сил ΠΈ срСдств вкладываСтся β€œΠΌΠΎΡ€Π΅β€, Π° получаСтся Π½Π΅Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅, Π³Π°Π±Π°Ρ€ΠΈΡ‚Π½ΠΎΠ΅, слоТноС Π² ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½ΠΈΠΈ, энСргоСмкоС ΠΈ Π΄ΠΎΡ€ΠΎΠ³ΠΎΠ΅.

Π§Ρ‚ΠΎΠ±Ρ‹ β€œΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ°Ρ…ΠΎΠΌ ΠΏΡ€ΠΈΡ…Π»ΠΎΠΏΠ½ΡƒΡ‚ΡŒβ€ всС эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, β€œΡΠΉΡ†Π΅Π³ΠΎΠ»ΠΎΠ²Ρ‹Π΅β€ ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ сначала β€œΠ±ΠΎΠ»ΡŒΡˆΠΈΠ΅β€ процСссоры (Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ примСняСтся Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈ β€œΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΠ΅β€, Π½Π°Π·Π²Π°Π² ΠΈΡ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ.

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΌ/ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° находится β€œΠ½Π°Π±ΠΎΡ€β€ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½. ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡ вСсьма Π½Π΅ слабыми возмоТностями этого β€œΠ½Π°Π±ΠΎΡ€Π°β€, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ‹ разновидностСй устройств.

ЕстСствСнно, всСм этим β€œΡ…ΠΎΠ·ΡΠΉΡΡ‚Π²ΠΎΠΌβ€ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ β€œΡ€ΡƒΠ»ΠΈΡ‚ΡŒβ€. Π­Ρ‚Π° β€œΡ€ΡƒΠ»Π΅ΠΆΠΊΠ°β€ ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ называСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.

Если Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… β€œΠΌΠ°ΡΡΠΈΠ²Π°Ρ…β€ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ², Ρ‚ΠΎ программирования Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠ΄Π°Ρ…) ΠΈ Π²Ρ€Π°Π³Ρƒ Π½Π΅ поТСлаСшь: ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ, Π΄Π°, Ρ‡Π΅Π³ΠΎ Π΄ΠΎΠ±Ρ€ΠΎΠ³ΠΎ, ΠΈ Π² β€œΠΏΡΠΈΡ…ΡƒΡˆΠΊΡƒβ€ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ (Π΅ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ – люди с Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ способностями ΠΈ Π³Π΅Π½ΠΈΠΈ). Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ люди ΠΌΠΎΠ³Π»ΠΈ, Π±Π΅Π· особого β€œΠ½Π°ΠΏΡ€ΡΠ³Π°β€, Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ составлСниСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ языки программирования.

Бмысл всСх ΠΈΡ… Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π·Π°ΠΌΠ΅Π½Π΅ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² словами, сокращСниями слов, Π°Π±Ρ€Π΅Π²Π΅Π°Ρ‚ΡƒΡ€Π°ΠΌΠΈ ΠΈ Ρ‚. Π΄., Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ Π»Π΅Π³ΠΊΠΎ ΠΈ осмыслСнно воспринимаСтся ΠΈ Ρ‡Π΅ΠΌ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ составлСнии тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ВсС эти β€œΡƒΠ΄ΠΎΠ±ΠΎΠ²Π°Ρ€ΠΈΠΌΡ‹Π΅ приятности”, ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ составлСния тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, пСрСводятся Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΎΠ΄Π½ΠΈΠΌ β€œΠ»Π΅Π³ΠΊΠΈΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ руки” (ΠΌΠΎΠ·Π³ΠΈ программиста Π½Π΅ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ).

Π§Ρ‚ΠΎΠ±Ρ‹ это β€œΠ»Π΅Π³ΠΊΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ руки” ΠΈΠΌΠ΅Π»ΠΎ мСсто Π±Ρ‹Ρ‚ΡŒ, β€œΡΠΉΡ†Π΅Π³ΠΎΠ»ΠΎΠ²Ρ‹Π΅β€ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»ΠΈ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ β€œΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ срСду разработки”.

Π­Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ программист Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с максимальной ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ, ΠΏΠΎ всСму β€œΠΌΠ°ΡΡΠΈΠ²Ρƒβ€ Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Ρ… ΠΈΠΌ Π·Π°Π΄Π°Ρ‡ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ составлСниС тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ Ρ‚.Π΄. ΠΈ Ρ‚.ΠΏ.).

Π§Ρ‚ΠΎ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ, Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, русскому, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΏΠ°Π» Π² Англию ΠΈ собираСтся Ρ‚Π°ΠΌ ΠΆΠΈΡ‚ΡŒ?

Π’Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ английский язык.

ΠŸΡ€ΠΈ β€œΠ²ΡŠΠ΅Π·Π΄Π΅β€ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС (Π·Π°Π΄Π°Ρ‡Π° Π΄Π°ΠΆΠ΅ сущСствСнно ΠΏΡ€ΠΎΡ‰Π΅).

β€œΠŸΡ€ΠΎΠΌΠ°Ρ‚Π΅Ρ€ΡŒβ€ всСх языков программирования – ассСмблСр.

Π₯отя ΠΎΠ½ ΠΈ считаСтся самым простым, Π½ΠΎ слово β€œΠΏΡ€ΠΎΡΡ‚ΠΎΠΉβ€ относится ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΊ Π½Π°Π±ΠΎΡ€Ρƒ Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄: количСство ΠΈΡ… – минимально Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅, ΠΈ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²ΠΏΠΎΠ»Π½Π΅ достаточноС для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ самых слоТных Π·Π°Π΄Π°Ρ‡, Π½ΠΎ Π½Π΅ ΠΊ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎΠΌΡƒ Π²ΠΎΡΠΏΡ€ΠΈΡΡ‚ΠΈΡŽ ΠΈΡ… Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈΠ±ΠΎ сокращСниями английских слов, Π»ΠΈΠ±ΠΎ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π±ΡƒΠΊΠ² английских словосочСтаний, Π»ΠΈΠ±ΠΎ ΠΈ Ρ‚Π΅ΠΌ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ β€œΠ΄ΠΆΠ΅Π½Ρ‚Π»ΡŒΠΌΠ΅Π½ΡΠΊΠΈΠΉβ€ Π½Π°Π±ΠΎΡ€ ассСмблСра для ПИКов составляСт 35 ΠΊΠΎΠΌΠ°Π½Π΄. РСально ΠΆΠ΅, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ 10 Π΄ΠΎ 20 ΠΊΠΎΠΌΠ°Π½Π΄.

Π’ дальнСйшСм, настройтС сСбя просто Π½Π° Ρ‚ΡƒΠΏΠΎΠ΅ Π·Π°ΡƒΡ‡ΠΈΠ²Π°Π½ΠΈΠ΅ (Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΡ€Π°Ρ…) всСй этой английской β€œΠ°Π±Ρ€Π°ΠΊΠ°Π΄Π°Π±Ρ€Ρ‹β€, Ρ‚ΠΈΠΏΠ° Π·ΡƒΠ±Ρ€Π΅ΠΆΠΊΠΈ (я Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ имСю Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ склонности ΠΊ иностранным языкам, Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ, освоил), Π½Π΅ такая ΡƒΠΆ это ΠΈ слоТная Π·Π°Π΄Π°Ρ‡Π°, Π·Π°Π²Π΅Ρ€ΡΡŽ Вас. Π’ дальнСйшСм, Π’Π°ΡˆΠ΅ ΠΎΠ±Ρ€Π°Π·Π½ΠΎΠ΅ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅ ΠΈ Π·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π’Π°ΠΌ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚.

ΠΠ²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ ассСмблСр ΠΎΡ‡Π΅Π½ΡŒ Π΄Π°ΠΆΠ΅ стоит ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ

β€œΡƒΠ΄ΠΎΠ±ΠΎΠ²Π°Ρ€ΠΈΠΌβ€, Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этом языкС ΠΏΠΈΡˆΡƒΡ‚ΡΡ самыС ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹Π΅ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ, быстрыС ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ программисты, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚

studfile.net

ИдСальная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для PIC β€” Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ / Habr

Π’ связи с нововвСдСниями Π½Π° сайтС, Ρ€Π΅ΡˆΠΈΠ» Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ Π²Ρ‹Π»Π΅Π·Ρ‚ΠΈ ΠΈΠ· подполья ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅. Ну Π° ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ я ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ (МК) ΠΈ являюсь Ρ„Π°Π½Π°Ρ‚ΠΎΠΌ Eclipse, Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΠ» ΠΏΡ€ΠΎ это ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ. Начну со своСй истории знакомства с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ PIC, Π° Π·Π°ΠΊΠΎΠ½Ρ‡Ρƒ совСтами Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ ΠΏΠΎ Π΄ΠΎΠ»Π³Ρƒ слуТбы ΠΈΠ»ΠΈ Π² силу увлСчСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° МК сСмСйства PIC, хотя, Π²ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, эти ΠΆΠ΅ совСты сгодятся ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ МК.

Π’ срСду ТСлСзячников я ΠΏΠΎΠΏΠ°Π» Π² 2006 Π³ΠΎΠ΄Ρƒ Π½Π° 4-ΠΌ курсС ΡƒΡ‡Ρ‘Π±Ρ‹ Π² унивСрситСтС, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡˆΡ‘Π» Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ Π² Π½Π°ΡƒΡ‡Π½ΠΎ-тСхничСский Ρ†Π΅Π½Ρ‚Ρ€, Π³Π΄Π΅, собствСнно, ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ ΠΏΠΎ сСй дСнь. Π’ Ρ‚ΠΎ врСмя Π² нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ мСйнстримом Π±Ρ‹Π»ΠΎ использованиС Keil uVision2 для МК Π½Π° Π±Π°Π·Π΅ C51 ΠΈ ARM. Однако ΠΌΠ½Π΅ подсовывали простыС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎΠ΄ PIC, Π²Ρ€ΠΎΠ΄Π΅ контроля ΠΈ управлСния ΠΎΠ΄Π½ΠΈΠΌ сигналом (ΠΊΠ½ΠΎΠΏΠΊΠ° Π²ΠΊΠ»-Π²Ρ‹ΠΊΠ»), ΠΈ ΠΌΠΎΠ΅ΠΉ ΠΏΠ΅Ρ€Π²ΠΎΠΉ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±Ρ‹Π»ΠΈ Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Ρ‹ β€” Π±ΡƒΠΌΠ°ΠΆΠ½Ρ‹ΠΉ ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΉ, плюс ΠΊΠ½ΠΈΠΆΠΊΠΈ Π±ΡƒΠΌΠ°ΠΆΠ½Ρ‹Π΅ ΠΏΠΎ PIC. ВыглядСла моя срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Для компиляции Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΠ½Π΅ Π²Ρ‹Π΄Π°Π»ΠΈ экзСшник компилятора ΠΈ bat-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ использовался ΠΌΠ½ΠΎΠΉ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π±Π΅Π·Π΄ΡƒΠΌΠ½ΠΎ β€” Π΄Π°ΠΆΠ΅ Π½Π΅ знаю, Ρ‡Ρ‚ΠΎ Π·Π° компилятор Ρ‚Π°ΠΌ Π±Ρ‹Π». Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, суровыС Π±Ρ‹Π»ΠΈ врСмСна…

Ах, Ссли Π±Ρ‹ ΠΌΠ½Π΅ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° подсказал, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ Ρ‡ΡƒΠ΄ΠΎ, ΠΊΠ°ΠΊ notepad++!

ΠŸΠΎΡ‚ΠΎΠΌ Π±Ρ‹Π» MPASM, Π½ΠΎ ΠΎΠ½ ΡƒΠ±ΠΎΠ³ΠΈΠΉ ΠΈ ΠΌΠ½Π΅ ΠΏΡ€ΠΎ Π½Π΅Π³ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Ρ‡Π΅Π³ΠΎ Π²ΡΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ. По-ΠΌΠΎΠ΅ΠΌΡƒ, ΠΏΠΎΠ΄ Π½Π΅Π³ΠΎ я Ρ‚Π°ΠΊΠΆΠ΅ писал Π² Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΠΈ.

MPLAB IDE

По ΠΌΠ΅Ρ€Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ своих Π½Π°Π²Ρ‹ΠΊΠΎΠ² я ΡƒΠ·Π½Π°Π», Ρ‡Ρ‚ΠΎ вмСсто Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΈΠΊΡ€ΡƒΡ‚Π΅ΠΉΡˆΡƒΡŽ, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ Ρ‚ΠΎΠ³Π΄Π° казалось, MPLAB IDE:

Π’ Π΅Ρ‘ состав входят:

  • CC18 ΠΈ Π΅Ρ‰Ρ‘ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ компилятор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π² настройках ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°;
  • Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π½Π°Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ;
  • ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ inc-Ρ„Π°ΠΉΠ»Ρ‹ описания МК сСмСйства PIC, Π·Π°Ρ‚ΠΎΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ использованиС Π² ассСмблСрС;
  • встроСнный ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€;
  • Но Π³Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° языка Π‘ΠΈ β€” это Π±Ρ‹Π» для мСня Π³Π»ΠΎΡ‚ΠΎΠΊ свСТСго Π²ΠΎΠ·Π΄ΡƒΡ…Π°!

Π₯отя, Ссли ΠΏΡ€ΠΈΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒΡΡ ΠΊ этой срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π΅Ρ‘ ΡƒΠ±ΠΎΠ³ΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡ‚ΡΡ‚Π°Π»ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΏΡƒΠ³Π½ΡƒΡ‚ΡŒ любого ΠΌΠ°Π»ΠΎ-мальски ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΡˆΠ΅Π³ΠΎ ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ условиям программиста, Π½ΠΎ я Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ± этом Π½Π΅ Π·Π½Π°Π». Π‘ΠΏΡ€Π°Π²ΠΊΡƒ ΠΏΠΎ встроСнным Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΌ функциям Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈ ΠΈΡΠΊΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ называСтся. Для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² β€” нСпосильная Π·Π°Π΄Π°Ρ‡Π°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π° тСматичСских Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… люди Π΄ΠΎ сих ΠΏΠΎΡ€ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚, ΠΊΠ°ΠΊΠΎΠΉ компилятор Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ; ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ MPLAB IDE.
MikroC

Π—Π°Π΄Π°Ρ‡ΠΈ для PIC ΠΌΠ½Π΅ ΠΏΠΎΠ΄ΠΊΠΈΠ΄Ρ‹Π²Π°Π»ΠΈ всё Ρ€Π΅ΠΆΠ΅ ΠΈ Ρ€Π΅ΠΆΠ΅, Π½Π°Ρ‡Π°Π»ΠΈ Π½Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΡ€ΠΎΡ‚Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ с МК сСрии C51, ARM7 (Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с ARMv7!), Cortex-M. Но ΠΈΠ½ΠΎΠ³Π΄Π° ΠΊΠΎ ΠΌΠ½Π΅ снова ΠΎΠ±Ρ€Π°Ρ‰Π°Π»ΠΈΡΡŒ Π·Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π² написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ΄ PIC, Π° я Π² силу Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚ΡΡ‚Π²Π° ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» Π½ΠΎΠ²Ρ‹Π΅ срСдства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.
К Ρ‚ΠΎΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π» Π² Keil uVision3 β€” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΄ΠΎΠΏΠΎΡ‚ΠΎΠΏΠ½ΠΎΠΌΡƒ MBLAB IDE ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ. Π’Π°ΠΊ я познакомился с MikroC, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ поставляСтся вмСстС с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ PICKit:

Набор плюшСк ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ Π² MBLAB IDE, Π½ΠΎ всё ΠΆΠ΅ ΠΏΠΎΠ±ΠΎΠ³Π°Ρ‡Π΅:

  • свой собствСнный компилятор
  • встроСнныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ поиском ΠΈ доступным описаниСм;
  • ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Π΅ h-Ρ„Π°ΠΉΠ»Ρ‹ описания МК сСмСйства PIC;
  • Π½Π°Π±ΠΎΡ€ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚
  • ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² с исходниками
  • встроСнный ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€;
  • встроСнныС Π²ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²;
  • навигация ΠΏΠΎ функциям Π² Ρ„Π°ΠΉΠ»Π΅

ЧСстно, для ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… простых ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π½ΠΈΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ΄ PIC, этого Π²ΠΏΠΎΠ»Π½Π΅ достаточно. Π”Π°ΠΆΠ΅ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ справки ΠΈ быстро Π΄Π΅Π»Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠ΄. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π½Π°ΡˆΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… Π΄Π΅Π»ΠΎ с PIC, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ эту срСду ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, сдСлав ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² MikroC, я Π±Π»Π°Π³ΠΎΠΏΠΎΠ»ΡƒΡ‡Π½ΠΎ Π·Π°Π±Ρ‹Π» ΠΏΡ€ΠΎ PIC’и ΠΈ Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° ΠΊ Π½ΠΈΠΌ Π½Π΅ Π²Π΅Ρ€Π½ΡƒΡΡŒ.

Однако история Π»ΡŽΠ±ΠΈΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ!

Π§Π΅Ρ€Π΅Π· 3 Π³ΠΎΠ΄Π°, Π² 2013 Π³ΠΎΠ΄Ρƒ, появилась Π·Π°Π΄Π°Ρ‡Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ПО ΠΏΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠšΠ”, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π» Π·Π°Π»ΠΎΠΆΠ΅Π½ PIC18F4680. ЧСстно, я Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ срСди PIC’ов Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ монстры, всСгда ΠΈΠΌΠ΅Π» Π΄Π΅Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΌΠ΅Π»ΠΎΡ‡ΡŒΡŽ!

Π—Π°Π΄Π°Ρ‡ΠΈ Π±Ρ‹Π»ΠΈ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ β€” рСализация Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° для внутрисхСмного обновлСния ПО, Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Тёсткого Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ€Π°Π±ΠΎΡ‚Π° с АЦП, внСшними ЦАП, линиями управлСния, нСсколькими Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°ΠΌΠΈ-ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.

ΠšΡΡ‚Π°Ρ‚ΠΈ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°ΡΡΡŒ ΠΎΡ‚ Ρ‚Π΅ΠΌΡ‹: Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ я Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ понял, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Π°Π½ΠΊΠΈ памяти Π² PIC, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ограничСния Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ПО. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, всС Π±Π°Π½ΠΊΠΈ Ρƒ МК ΠΏΠΎ 256 Π±Π°ΠΉΡ‚. И Ρ…ΠΎΡ‚ΡŒ убСйся, Π½ΠΎ для PIC нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ структуру, ΠΏΡ€Π΅Π²Ρ‹Ρ‰Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠΎ ΠΎΠ±ΡŠΡ‘ΠΌΡƒ эти 256 Π±Π°ΠΉΡ‚ β€” ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ всплыло Π½Π°Ρ€ΡƒΠΆΡƒ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΎΠ±ΠΌΠ΅Π½Π°, Π½Ρƒ Π΄Π° Π»Π°Π΄Π½ΠΎ, проСхали…

К этому Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Keil uVision3 ΠΌΠ½Π΅ ΡƒΠΆΠ΅ изрядно ΠΏΠΎΠ΄Π½Π°Π΄ΠΎΠ΅Π», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² росла ΠΈ ΠΌΠ½Π΅ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ имСвшСгося Π² Keil Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°. Π“Π΄Π΅-Ρ‚ΠΎ с 2011 Π³ΠΎΠ΄Π° я освоил Eclipse, GCC, синтаксис makefile β€” ΠΈ всС свои ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ Π½Π°Ρ‡Π°Π» вСсти с использованиСм этих инструмСнтов. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, Ρƒ мСня ΡƒΠΆΠ΅ Π±Ρ‹Π» ΠΎΠΏΡ‹Ρ‚ примСнСния связки Eclipse + SDCC для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ΄ C51 МК. ПослС появлСния Keil uVision4 я Π΅Π³ΠΎ установил, протСстировал ΠΏΠΎΠ»-часика ΠΈ снёс, ΠΈΠ±ΠΎ ΠΏΠΎ удобству программирования ΠΎΠ½ всё Ρ€Π°Π²Π½ΠΎ сильно отстаёт ΠΎΡ‚ Eclipse.

Eclipse + SDCC

Π’ настоящСС врСмя Eclipse Π΄Π΅-Ρ„Π°ΠΊΡ‚ΠΎ являСтся стандартом Π² области Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО для встраиваСмых систСм. Π’ΠΎΡ‚ список IDE, основанных Π½Π° Eclipse, ΠΎΡ‚ популярных Π±Ρ€Π΅Π½Π΄ΠΎΠ²:
  • NXP LPCXpresso IDE
  • Freescale CodeWarrior
  • Xilinx Platform Studio
  • Texas Instruments CCS
  • Android Development Tools

Автоподстановка, Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ подсказки ΠΏΠΎ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ, макросы, Π·Π°Ρ‚Π΅ΠΌΠ½Π΅Π½ΠΈΠ΅ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… участков ΠΊΠΎΠ΄Π°, удобная навигация ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅-ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, β€” я Π½Π΅ Π±ΡƒΠ΄Ρƒ всё ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ, β€” ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ встраиваСмых систСм ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΈ Π½Π΅ Π·Π½Π°ΡŽΡ‚ всСх этих плюшСк, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‰ΠΈΡ… Тизнь:

Π“Π»Π°Π²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ чистого Eclipse для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° C/C++ ΠΏΠΎΠ΄ МК являСтся ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ вхоТдСния Π² Π½Π΅Π³ΠΎ ТСлСзячных программистов, Π·Π°ΠΌΠ΅Π½Π° ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹Ρ… инструмСнтов, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… послС установки Π² 1-2 ΠΊΠ»ΠΈΠΊΠ°, Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ настройки, ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Ρ…ΡƒΠΆΠ΅, Π½Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ написанныС makefile β€” всё это Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… усилий ΠΏΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΡŽ ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, поиску ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈ пособий для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅. Π“ΠΎΠ²ΠΎΡ€ΡŽ ΠΊΠ°ΠΊ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΠΎΠΏΡ‹Ρ‚ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ программистов-ТСлСзячников Π½Π° Eclipse.

Волько для ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²

Коли ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ эту ΡΡ‚Π°Ρ‚ΡŒΡŽ β€” Π΄Π°ΠΉΡ‚Π΅ Π·Π½Π°Ρ‚ΡŒ, я Ρ…ΠΎΡ‚ΡŒ ΡƒΠ·Π½Π°ΡŽ, ΠΊΠ°ΠΊ Ρƒ нас Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Ρ…Π°Π±Ρ‹ Π½Π° Π₯Π°Π±Ρ€Π°Ρ…Π°Π±Ρ€Π΅


Однако, Π·Π° мСсяц ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ освоив синтаксис ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· написав качСствСнный makefile, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π½Π°ΠΊΠ°Ρ‚Π°Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ лишь минимальной ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ настройки.

Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ряд Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Π»ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎ настройкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ΄ PIC β€” ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Eclipse ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ синтаксис GCC. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ макросы ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, встроСнныС Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ компиляторы (Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ Π‘Π‘18 ΠΈΠ»ΠΈ SDCC), приходится Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π° этапС компиляции ΠΈ Π½Π° этапС индСксации ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ Π² ΠΊΠΎΠ΄Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π½Π΅ Π²Ρ‹Π΄Π°Π²Π°Π» Π»ΠΎΠΆΠ½Ρ‹Ρ… ошибок Π½Π° нСизвСстныС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, ΠΊ исходникам ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ„Π°ΠΉΠ» eclipse-syntax.h:

eclipse-syntax.h
#ifndef ECLIPSE_SYNTAX_H_
#define ECLIPSE_SYNTAX_H_

// keyword SDCC defined when compiling with SDCC compiler
#ifndef SDCC

	#ifdef __SDCC_PIC18F4680
		#error "SDCC not found, project compile will be with errors!"
	#endif

	// file not parsed through makefile - just for proper eclipse syntax
	#ifndef __CC18__
		#error "__CC18__ not found, use `-D__CC18__` in makefile for proper CC18 compilation!"
		#define near
		#define far
		#define rom
		#define ram
		#define _asm
		#define _endasm
		#define Nop()
		#define ClrWdt()
		#define Sleep()
		#define Reset()
		#define clrwdt
		#define nop

		#define __code
		#define __data
		#define __xdata

		#define __sfr
		#define __sbit

		#define __naked
		#define __wparam

		#define __bit char
		#define __at(num)

	#else	//	__CC18__ defined - compile stage!
	#endif	// __CC18__

	#define __inline

	#define __asm
	#define __endasm

	#define __interrupt(x)
	#define INTERRUPT(x)

	#define USING(x)

	#define CRITICAL

	#define CRITICAL_START
	#define CRITICAL_END

	#define _REENTRANT

#else	// if SDCC defined

	#define INTERRUPT(x) __shadowregs __interrupt (x)

	//#define USING(x) __using (x)
	#define USING(x)

	#define CRITICAL __critical

	#define CRITICAL_START __critical {
	#define CRITICAL_END }
#endif	// SDCC defined

#endif /* ECLIPSE_SYNTAX_H_ */


ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² SDCC Ρƒ мСня Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΡΠ»ΠΈΠ½ΠΊΠΎΠ²Π°Ρ‚ΡŒ большой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ β€” ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ GPUtils, Π² состав ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ входят gpasm, gpdasm, gplink ΠΈ скрипты .lkr ΠΊΠ°Ρ€Ρ‚ памяти МК PIC. ΠŸΡ€Π°Π²Π΄Π°, ΠΈΠ·-Π·Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠΉ Π±Π°Π³Π° Π² SDCC Π½Π° этапС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π° я Π² ΠΈΡ‚ΠΎΠ³Π΅ вСрнулся Π½Π° CC18 компилятор ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, SDCC ΠΈ GPUtils Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ настроСны β€” для страТдущих ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ Ρ‡Π°ΡΡ‚ΡŒ makefile, ΠΊΠ°ΡΠ°ΡŽΡ‰ΡƒΡŽΡΡ ΠΎΠΏΡ†ΠΈΠΉ запускаСмых компиляторов ΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²Ρ‰ΠΈΠΊΠΎΠ² CC18, SDCC, GPUtils:
ΠšΡƒΡΠΎΡ‡ΠΊΠΈ makefile
###########################################################
# project-specific compile options
###########################################################
# Project definitions
CHIP = 18F4680
DEFINES := -DPIC$(CHIP)
#DEFINES += -D__SDCC_PIC$(CHIP)	# use SDCC compiler
DEFINES += -D__CC18__	# use MPLAB CC18 compiler
#DEFINES += -DOPTIMIZE_BITFIELD_POINTER_GET	# SDCC memory optimize for bitfield structures
###########################################################
#  common part for all sdcc-based projects
###########################################################
	SDCC_BASE = c:/DevTools/SDCC
	CC		= "$(SDCC_BASE)/bin/sdcc.exe"
	LD		= "$(SDCC_BASE)/bin/sdcc.exe"
	ELF2HEX	= "$(SDCC_BASE)/bin/packihx.exe"
	HEX2BIN = "$(SDCC_BASE)/bin/makebin.exe"
	
###########################################################
#  common part for all MPLAB MCC18-based projects
###########################################################
	MPLAB_BASE	= c:/DevTools/CC18
	CC_MPLAB	= "$(MPLAB_BASE)/bin/mcc18.exe"
	AS_MPLAB	= $(MPLAB_BASE)/mpasm/mpasmwin.exe
	LD_MPLAB	= $(MPLAB_BASE)/bin/mplink.exe

###########################################################
# GPUtils used with SDCC for linking project
###########################################################
	GPUTILS_BASE = c:/DevTools/GNUPICutils
	GPASM	= "$(GPUTILS_BASE)/bin/gpasm.exe"
	GPDASM	= "$(GPUTILS_BASE)/bin/gpdasm.exe"
	GPLINK	= "$(GPUTILS_BASE)/bin/gplink.exe"

###########################################################
# C preprocessor flags for MPLAB MCC18 compiler
###########################################################
#optimization parameters (default = full optimization)
OPT_ENABLE_ALL	:= -O+	# Enable all optimizations (default)
OPT_DEBUG		:=-Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
OPT 	:=$(OPT_ENABLE_ALL)
#OPT 	:=$(OPT_DEBUG)

CFLAGS_MPLAB := -p $(CHIP)
CFLAGS_MPLAB += -I $(MPLAB_INC_DIR)
CFLAGS_MPLAB += -nw=2066	# suppress Warning [2066] type qualifier mismatch in assignment
CFLAGS_MPLAB += -ml	# Large memory model
CFLAGS_MPLAB += -ls # large stack (can span multiple banks)
#CFLAGS_MPLAB += -scs # Enable default static locals
#CFLAGS_MPLAB += -sco # Enable default overlay locals (statically allocate activation records). Ignored if set --extended
CFLAGS_MPLAB += --extended	# generate extended mode code

COMPILE_MPLAB_STRING=$(CC_MPLAB) $(CFLAGS_MPLAB) $< -fo=$@ $(DEFINES) $(OPT)

AFLAGS_MPLAB := /y
AFLAGS_MPLAB += /rDEC				# set default radix HEX/DEC/OCT
AFLAGS_MPLAB += /l-				# disable listing file
#AFLAGS_MPLAB += /l$(OBJDIR_MPLAB)	# enable listing file
AFLAGS_MPLAB += /o	# specify path for object files
#AFLAGS_MPLAB += /o$(OBJDIR_MPLAB)	# specify path for object files
#AFLAGS_MPLAB += /q					# enable quiet mode 
AFLAGS_MPLAB += /d__LARGE__			# define symbol
AFLAGS_MPLAB += /p$(CHIP)			# set processor type

#ASSEMBLE_MPLAB_STRING=$(AS_MPLAB) $(AFLAGS_MPLAB) %<

# used linker script
LDFLAGS_MPLAB := $(CHIP)_g.lkr
# objects to compile
LDFLAGS_MPLAB += $(OBJS_MPLAB)
LDFLAGS_MPLAB += $(MPLAB_LIBS)
# specify chip for proper linking
LDFLAGS_MPLAB += /p$(CHIP)
# verbose mode operation
#LDFLAGS_MPLAB += /v
# generate report file for stack analysis
LDFLAGS_MPLAB += /g
# generate .LST file and no .COD file
LDFLAGS_MPLAB += /i
# do not invoke MP2COD (no .COD or .LST file)
LDFLAGS_MPLAB += /w
# link MPLAB libs
LDFLAGS_MPLAB += /l $(MPLAB_LIB_DIR)
# generate MAP file
LDFLAGS_MPLAB += /m $(EXEDIR)/$(PROJECT_NAME)_mplab.map
# set output file
LDFLAGS_MPLAB += /o $(EXEDIR)/$(PROJECT_NAME)_mplab.hex

###########################################################
# C preprocessor flags for SDCC v.3.3.0 compiler
###########################################################
# ----- processor selection -----
 CFLAGS := -m$(ARCH)
 CFLAGS += -p$(CHIP)
 
# ----- preprocessor options -----
 CFLAGS += $(INCS)
 CFLAGS += $(DEFINES)
 
# ----- verbose & dependancy generate -----
# CFLAGS += -M # generate dependencies
# CFLAGS += -E #
# CFLAGS += -C # dont discard comments
 
 CFLAGS += -c # dont link file (i.e. have multiple source files)
  
 CFLAGS += $(DEBUG)

# ----- common settings -----
#CFLAGS += --nostdinc # This will prevent the compiler from passing on the
					  # default include path to the preprocessor.
#CFLAGS += --nostdlib # This will prevent the compiler from passing on the
 					  # default library path to the linker.

#CFLAGS += --less-pedantic # Disable some of the more pedantic warnings.

 CFLAGS += --stack-auto # All functions in the source file will be compiled as reentrant.
						# It automatically implies --int-long-reent and --float-reent.
CFLAGS += --int-long-reent # Integer (16 bit) and long (32 bit) libraries have been compiled as reentrant.
CFLAGS += --float-reent # Floating point library is compiled as reentrant.

#CFLAGS += --no-peep
#CFLAGS += --funsigned-char # The default signedness for every type will be unsigned.
#CFLAGS += --cyclomatic # This option will cause the compiler to generate an information
 						# message for each function in the source file. The message contains
 						# the number of edges and nodes the compiler detected in the
 						# control flow graph of the function, and most importantly
						# the cyclomatic complexity.

# ----- optimization options -----
#CFLAGS += --nogcse # Will not do global subexpression elimination, this option may be used
 					# when the compiler creates undesirably large stack/data spaces to store
 					# compiler temporaries.
#CFLAGS += --noinvariant # Will not do loop invariant optimizations.
#CFLAGS += --noinduction # Will not do loop induction optimizations.
#CFLAGS += --nojtbound # Will not generate boundary condition check when switch statements
 						# are implemented using jumptables.
#CFLAGS += --noloopreverse # Will not do loop reversal optimization.
#CFLAGS += --nolabelopt # Will not optimize labels (makes the dumpfiles more readable).
 CFLAGS += --nooverlay # The compiler will not overlay parameters and local variables of any function.
 CFLAGS += --peep-asm # Pass the inline assembler code through the peep hole optimizer.
 #CFLAGS += --opt-code-speed # Optimize for code speed rather than size
 #CFLAGS += --opt-code-size # Optimize for code size rather than speed
 CFLAGS += --fomit-frame-pointer # Frame pointer will be omitted when the function uses
								 # no local variables.
 CFLAGS += --use-non-free #  Search / include non-free licensed libraries and header files

# ----- special options for pic16 port of SDCC -----
 CFLAGS += --pstack-model=large	# use stack model 'small' (default) or 'large'
# don't use extended instruction set - SDCCman, $4.6.20.1 Known Bugs
#CFLAGS += -y --extended 		# enable Extended Instruction Set/Literal Offset Addressing mode
#CFLAGS += --pno-banksel        # do not generate BANKSEL assembler directives
 CFLAGS += --obanksel=2         # set banksel optimization level (default=0 no)
 CFLAGS += --denable-peeps      # explicit enable of peepholes
 CFLAGS += --no-optimize-goto   # do NOT use (conditional) BRA instead of GOTO
 CFLAGS += --optimize-cmp       # try to optimize some compares
 CFLAGS += --optimize-df        # thoroughly analyze data flow (memory and time intensive!)
#CFLAGS += --preplace-udata-with=udata_shr # Place udata variables at another section: udata_acs, udata_ovr, udata_shr
#CFLAGS += --ivt-loc=           # Set address of interrupt vector table.
#CFLAGS += --nodefaultlibs      # do not link default libraries when linking
#CFLAGS += --use-crt=           # use <crt-o> run-time initialization module
#CFLAGS += --no-crt             # do not link any default run-time initialization module
#CFLAGS += --mplab-comp         # enable compatibility mode for MPLAB utilities (MPASM/MPLINK)
#CFLAGS += --asm=               # Use alternative assembler
#CFLAGS += --link=              # Use alternative linker
 CFLAGS += --debug-xtra         # show more debug info in assembly output
 CFLAGS += --debug-ralloc       # dump register allocator debug file *.d
 CFLAGS += --pcode-verbose      # dump pcode related info
 CFLAGS += --calltree           # dump call tree in .calltree file
#CFLAGS += --gstack             # trace stack pointer push/pop to overflow

###########################################################
# linker flags
###########################################################
#gputils (GNU PIC Utils) used to link objects and libs.
 GPLINK_FLAGS	= -c -m -w -r -I $(LIBDIR) -s $(GPUTILS_BASE)/lkr/$(CHIP)_g.lkr
 
#SDCC linker not used
 #LDFLAGS := -m$(ARCH)
 #LDFLAGS += $(DEBUG)
 #LDFLAGS += --profile

 #LDFLAGS += --code-size $(FLASH_SIZE) # Code Segment size
#LDFLAGS += --code-loc $(FLASH_LOC) # The start location of the code location, default value is 0

 #LDFLAGS += --iram-size $(IRAM_SIZE) # Internal Ram size

#LDFLAGS += --xram-loc $(XRAM_LOC) # The start location of the external ram, default value is 0
#LDFLAGS += --xram-size $(XRAM_SIZE) # External Ram size

#LDFLAGS += --stack-loc $(STACK_LOC) # By default the stack is placed after the data segment.
 									 # Using this option the stack can be placed anywhere in the
 									 # internal memory space of the 8051.

##############################################################################
# MPLAB CC18 compiler - linker 
$(HEX_MPLAB): $(OBJS_MPLAB) Makefile
	@echo "--- CC18 Linking objects to $(HEX_MPLAB) ..."
	@$(LD_MPLAB) $(LDFLAGS_MPLAB)

##############################################################################
# SDCC compiler - linker 
$(HEX): $(OBJS) Makefile
	@echo "--- SDCC Linking objects to $(HEX) ..."
	$(GPLINK) $(GPLINK_FLAGS) -o $(HEX) $(OBJS) $(LIBS)
	$(GPDASM) -p$(CHIP) $(HEX) > $(DASM)

Π­ΠΏΠΈΠ»ΠΎΠ³

Как Π²ΠΈΠ΄Π½ΠΎ, Π² ΠΈΡ‚ΠΎΠ³Π΅ я ΠΏΡ€ΠΈΡˆΡ‘Π» ΠΊ использованию связки Eclipse с внСшними компиляторами. Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΉ компиляции β€” Π΄Π΅Π»ΠΎ Π½ΡƒΠΆΠ½ΠΎΠ΅ ΠΈ Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ слоТноС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ просто Ρ‚Π°ΠΊ ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ β€” любой программист смоТСт ΠΈΡ… ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ нСобходимости. Π”ΡƒΠΌΠ°ΡŽ, Π² ΠΈΡ‚ΠΎΠ³Π΅ Ρƒ мСня ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ идСальная связка, доступная Π½Π° сСгодняшний дСнь для создания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ΄ PIC.

Бобирая Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ всС срСдства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π²ΠΎΡ‚ список компиляторов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ я ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ Π² связкС с Eclipse ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ ΠΎΡ‚ этого истинноС ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ:

  • CC18 для PIC
  • SDCC для C51
  • gnu-arm-embedded для ARM7 ΠΈ Cortex-M
  • MinGW для x86

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, ΠΏΡ€ΠΈ нСобходимости список ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ.

НадСюсь, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² мою ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡΡ Π½Π°ΠΊΠΎΠ½Π΅Ρ† для сСбя сойти со старых IDE ΠΈ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅.

Π”Π΅Ρ€Π·Π°ΠΉΡ‚Π΅!

habr.com

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² сСмСйства PIC Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ

Главная страница Β» ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² сСмСйства PIC Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ появились Π² 60-Ρ… Π³ΠΎΠ΄Π°Ρ…. АвтоматизированныС систСмы Π΄ΠΎ этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΠ»ΠΈΡΡŒ Π½Π° основС Ρ€Π΅Π»Π΅. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Ρ€Π΅Π»Π΅ΠΉΠ½Ρ‹Π΅ систСмы исполняли Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²ΠΏΠΎΠ»Π½Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Однако Π³Π»Π°Π²Π½Ρ‹ΠΌ нСдостатком Ρ€Π΅Π»Π΅ΠΉΠ½Ρ‹Ρ… схСм являлись слоТности ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° случай измСнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Для ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΡ‰Π΅ Π±Ρ‹Π»ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ€Π΅Π»Π΅ΠΉΠ½ΡƒΡŽ систСму, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ. Π’ этом смыслС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ логичСский ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ оказался ΠΊΡƒΠ΄Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ устройством. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ логичСскиС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ распространСны повсСмСстно. Однако тонкости программирования Ρ‚Π°ΠΊΠΈΡ… систСм ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ малопонятными для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π΄ΠΈΠΎΠ»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΉ. Рассмотрим этот Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ – ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстной сСрии ΠŸΠ›Πš (PLC β€” Peripheral Interface Controller): ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Microchip Technology Inc.

Π‘ΠžΠ”Π•Π Π–Π˜ΠœΠžΠ• ΠŸΠ£Π‘Π›Π˜ΠšΠΠ¦Π˜Π˜ :

ΠžΠ±Ρ‰ΠΈΠΉ взгляд Π½Π° устройства ΠŸΠ›Πš

БистСмы Π½Π° Π±Π°Π·Π΅ микропроцСссора (ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹) Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² качСствС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… элСктронных устройств, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ языки программирования. Благодаря Ρ‚Π°ΠΊΠΈΠΌ языкам программирования, сущСствСнно облСгчаСтся процСсс программирования ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ². Π―Π·Ρ‹ΠΊ высокого уровня, созданный для ΠŸΠ›Πš, обСспСчиваСт простоту, ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠΆΠ΅Π»ΡŽΠ±Π½ΡƒΡŽ срСду для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠœΠΈΠΊΡ€ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ фактичСски ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ элСктронной схСмой, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠΎΠΌΠ°Π½Π΄, хранящихся Π² систСмной памяти. Π­Ρ‚Π° ΠΆΠ΅ схСма Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с инструкциями β€” арифмСтичСскими ΠΈ логичСскими, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ внСшниС устройства:

  • ΠΏΠ°ΠΌΡΡ‚ΡŒ,
  • Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹,
  • Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹.

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ прСдставляСт собой ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ схСму, Π² составС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚:

  • микропроцСссор,
  • ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…,
  • Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ²,
  • интСрфСйсы Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°,
  • Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹,
  • Π°Π½Π°Π»ΠΎΠ³ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ,
  • внСшниС ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ схСмы.

ΠœΠ°ΠΊΡ€ΠΎΡ языка высокого уровня β€” это инструкция, которая являСтся сокращённой строкой, содСрТащСй нСсколько инструкций. Π—Π°ΠΏΠΈΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ дСйствиями (ΡΡ…ΠΎΠΆΠ΅ΡΡ‚ΡŒΡŽ инструкций) ΠΏΡ€ΠΈ использовании макросов Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сокращаСтся.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² составС соврСмСнной элСктроники повсСмСстно. Π£ΠΌΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с этим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ инструмСнтом ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Ρ‹

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° основС макросов ΡΡ‚ΠΎΠ»ΡŒ ΠΆΠ΅ эффСктивна, ΠΊΠ°ΠΊ ΠΈ запись ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС Β«CΒ». ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° созданиС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… подстановок для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСдаётся Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ микропроцСссора ΠΈΠ»ΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространённых ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² PIC12 / PIC16

ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ PIC ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ с использованиСм ΠΏΡ€ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ нСдостаточно просто Π²Π·ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ микросхСму ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° PIC Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ «стандартному» интСрфСйсу.

Однако тСхничСскиС трСбования ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ программирования ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ достаточно слабы. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚ΠΎΡ€ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

Помимо Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ напряТСния, ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌ трСбуСтся Π΅Ρ‰Ρ‘ Ρ‚Ρ€ΠΈ сигнала:

  1. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ напряТСниС (ΠΎΠΊΠΎΠ»ΠΎ 13Π’).
  2. Π’Π°ΠΉΠΌΠ΅Ρ€ программирования (ICSPCLK).
  3. Π”Π°Π½Π½Ρ‹Π΅ (ICSPDAT).

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ выпускаСмых экзСмпляров PIC Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ напряТСниС нСсколько Π½ΠΈΠΆΠ΅ значСния, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ спСцификациСй, открываСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ сигналов Β± 12Π’, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π½Π° интСрфСйсС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ ПК. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Β«Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΒ» PIC Π²ΠΏΠΎΠ»Π½Π΅ допустимо Π±Π΅Π· нСобходимости ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ источника питания.

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ допускаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Однако прСдставлСнная Π½ΠΈΠΆΠ΅ упрощённая схСма, ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ограничСниями. Π’ частности, позволяСт ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно PIC устройства. НСт Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ, Ρ‡Ρ‚ΠΎ эта схСма способна ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ всСх ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ соотвСтствуСт ΠΏΠΎΠ»Π½ΠΎΠΉ спСцификации программирования.

Π‘Ρ…Π΅ΠΌΠ° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Π°Ρ ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² сСрии PIC ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ интСрфСйсов RS232 / ISSP

ВнутрисхСмноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° PIC

Π Π°Π·ΡŠΡ‘ΠΌ внутрисхСмного программирования (ICSP) прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ нСпосрСдствСнно Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ схСмы. Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ видится особСнно ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π² Π΄ΠΎΠΌΠ°ΡˆΠ½ΠΈΡ… условиях ΠΈΠ»ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π½Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ срСдС, Π³Π΄Π΅ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ трСбуСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ PIC ΠΈ тСстированиС схСмы.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΡŠΡ‘ΠΌΠ° ICSP позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ рисков ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° PIC ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π³Π½Π΅Π·Π΄Π°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² случаС ΠΈΠ·Π³ΠΈΠ±Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ воздСйствия Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ элСктростатичСских разрядов). Π’Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ€Π°Π·ΡŠΡ‘ΠΌΠΎΠΌ ICSP обСспСчиваСт экономию Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ICSP соСдинитСля Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ связи Π½Π° случай выполнСния программирования ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° сСрии PIC12/PIC16

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс ΠΈ кабСль ICSP, принимая Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ схСма Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ Ρ…ΠΎΠ΄ сигналов программирования. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами – Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ соотвСтствиС мСсту назначСния сигналов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±Π΅Π·ΡƒΠΊΠΎΡ€ΠΈΠ·Π½Π΅Π½Π½ΠΎ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ условия программирования:

  • врСмя ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ напряТСния программирования Β«0 – 13Π’Β» составляСт нСсколько микросСкунд;
  • ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ°Ρ… напряТСния сигналов Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… достигаСтся Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ микросСкунды;
  • Π²Ρ‹Π²ΠΎΠ΄ сигнала PGM остаётся Π½ΠΈΠ·ΠΊΠΈΠΌ всё врСмя программирования.

НСкоторыС ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ PIC Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ примСнСния напряТСния программирования Π΄ΠΎ ΠΏΠΎΠ΄Π°Ρ‡ΠΈ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ напряТСния. Π’ этом случаС напряТСниСм программирования ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π°. Π‘Π°ΠΌΡ‹ΠΉ простой способ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° условия β€” Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΡΠΏΠΎΠ½Π΄ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ Π² цСпях схСмы. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ программирования

НС рСкомСндуСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ†Π΅ΠΏΠΈ ΠΊ Π»ΠΈΠ½ΠΈΠΈ внСшнСго (основного) сброса (MCLR – Microcontroller Line Reset). Если сигнал MCLR ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сброса PIC, слСдуСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ рСзистор Π½ΠΎΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ сопротивлСниСм Π±ΠΎΠ»Π΅Π΅ 56 кОм ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ MCLR ΠΈ ΠΏΠΎΠ΄Π°Ρ‡ΠΈ напряТСния питания. РСкомСндуСтся Π² Ρ†Π΅ΠΏΡŒ рСзистора Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ кондСнсатор нСбольшой ёмкости β€” ΠΌΠ΅Π½Π΅Π΅ 100 ΠΏΠ€ со смСщСниСм Π½Π° зСмлю (Π²Ρ‹Π²ΠΎΠ΄ GND).

Π‘ΠΈΠ³Π½Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ программирования Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠ½Π΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΈΠ»ΠΈ ёмкостной Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Когда Ρ€Π°Π±ΠΎΡ‡Π΅Π΅ напряТСниС питания бСрётся ΠΎΡ‚ модуля ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π°, трСбуСтся ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ питания PIC ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ схСмы Π² процСссС программирования.

Π‘Ρ…Π΅ΠΌΠ½Ρ‹Π΅ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ с Ρ†Π΅Π»ΡŒΡŽ обСспСчСния Π±ΠΎΠ»Π΅Π΅ качСствСнного процСсса программирования устройства

Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ мСсто, Ссли схСма содСрТит собствСнный стабилизатор напряТСния питания ΠΈ оснащаСтся Ρ€Π°Π·Π²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ кондСнсатором большой ёмкости. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π°, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄ напряТСниС питания 3,3Π’, Π½Π΅ Π² состоянии Π·Π°Ρ€ΡΠΆΠ°Ρ‚ΡŒ кондСнсатор достаточно быстро, Π° для программирования PIC трСбуСтся Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 4,5Π’.

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ изолирования ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Ссли Π² схСмС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΈΠΎΠ΄ Π¨ΠΎΡ‚Ρ‚ΠΊΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π² Ρ€Π΅ΠΆΠΈΠΌ программирования (PGM) Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, рСкомСндуСтся ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ этот Π²Ρ‹Π²ΠΎΠ΄ ΠΊ Π·Π΅ΠΌΠ»Π΅ Ρ‡Π΅Ρ€Π΅Π· рСзистор Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠΌ ΠΎΡ‚ 2,2 кОм Π΄ΠΎ 10 кОм.

ВсСгда рСкомСндуСтся Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ питания Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π² «слово» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π±ΠΎΠ»Π΅Π΅ 40 мс Π΄Π°Ρ‘Ρ‚ достаточно Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для стабилизации напряТСния питания ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ любой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’Π°ΠΊΠΎΠΉ шаг позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎ Π²Ρ…ΠΎΠ΄Π° Π² Ρ€Π΅ΠΆΠΈΠΌ программирования.

Π’ΠΎ врСмя программирования ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ΠΏΠΎΡ€Ρ‚Π° ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Π²ΠΎΠ΄Π° β€” ΠΈΠΌΠ΅ΡŽΡ‚ высокий импСданс. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ схСмой Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ состояниС ΠΏΠΎ возмоТности Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ способом. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Β«ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов», слСдуСт Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ дополнСния ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ рСзисторами.

Для обСспСчСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ программирования ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° PIC Π² условиях напряТСния питания Π½ΠΈΠΆΠ΅ 4,5Π’, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ Π·Π°Ρ‰ΠΈΡ‚Ρ‹. Π­Ρ‚ΠΎ обусловлСно ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Β«Chip EraseΒ», СдинствСнного способа удалСния ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ практичСски всС ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ PIC с напряТСниСм питания Π²Ρ‹ΡˆΠ΅ 4,5Π’.

Π‘ΠΈΠ³Π½Π°Π»Ρ‹ ICSP ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ PIC 12Fxxx / 16Fxxx

Число Π½ΠΈΠΆΠ΅ Π°Π±Π±Ρ€Π΅Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ сигнала соотвСтствуСт Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ Ρ€Π°Π·ΡŠΠ΅ΠΌΠ° ICSP модуля ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π°. Для использования модуля с тСстовыми ΠΏΠ»Π°Ρ‚Π°ΠΌΠΈ сторонних ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ трСбуСтся Π°Π΄Π°ΠΏΡ‚Π΅Ρ€.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ρ€Π°Π·ΡŠΡ‘ΠΌ ICSP этого модуля ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ порядок сигналов ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² PIC

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ схСмы ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ сигналы программирования ΠΊ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌ PIC 12Fxxx / 16Fxxx:

Π‘Ρ…Π΅ΠΌΡ‹, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ порядок ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠΎΠ², ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ чтСния/записи Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Ρ€Π°Π·Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

Π€ΠΈΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ срСдства программирования

БущСствуСт солидная Π³Ρ€ΡƒΠΏΠΏΠ° Ρ„ΠΈΡ€ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€ΠΎΠ² для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² сСмСйства PIC. НаиболСС извСстныС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ срСдства:

  • REAL ICE
  • Pickit 1-2-3
  • IC PROG
  • ICD 2-3

Π₯Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Π΅ отличия ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€ΠΎΠ² – устройства ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π½Π΅ просто классичСскими функциями чтСния/записи. Π€ΠΈΡ€ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€Π°ΠΌ присущ Ρ†Π΅Π»Ρ‹ΠΉ ряд Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ содСрТимого памяти ΠΈ стёка.


На основС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ: Uolsinectis

zetsila.ru

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ PIC16F876A. Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ схСму с ΠΏΠ»Π°Π²Π½ΠΎ ΠΌΠΈΠ³Π°ΡŽΡ‰ΠΈΠΌ свСтодиодом / Habr

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° Π½Π° Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² сСмСйства PIC16 ΠΎΡ‚ Microchip. Π’ нашСм случаС, я Π²Ρ‹Π±Ρ€Π°Π» Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ прСвосходящий ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ для Ρ‚Π°ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β€” PIC16F876A. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² MPLAB IDE.

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹: ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ схСму, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ³Π°Ρ‚ΡŒ свСтодиодом, Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ШИМ.

И Ρ‚Π°ΠΊ, Ρ†Π΅Π»ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠ»ΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°ΡˆΠΈΡ… ΠΏΠ»Π°Π½ΠΎΠ².

Π§Π°ΡΡ‚ΡŒ 1. Π–Π΅Π»Π΅Π·ΠΎ.

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π°ΠΌ понадобятся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ схСму. А ΠΈΠΌΠ΅Π½Π½ΠΎ:
  • ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ PIC16F876A
  • Рассыпуха ΠΊ Π½Π΅ΠΌΡƒ
  • Π‘Π²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄
  • ΠœΠ°ΠΊΠ΅Ρ‚Π½Π°Ρ ΠΏΠ»Π°Ρ‚Π°
Π‘Π²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ любой ΠΏΠΎ вкусу, ΠΊΠ°ΠΊΠΎΠΉ Π’Π°ΠΌ большС нравится.
ΠœΠ°ΠΊΠ΅Ρ‚Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρƒ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ.
Π’ понятиС «рассыпухи» входят Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΊΠ°ΠΊ: ΠΏΠ°Ρ€Π° кондСнсаторов для ΠΊΠ²Π°Ρ€Ρ†Π° ΠΈ кондСнсатор Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄ модуля CPP (Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΡΠ³Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΏΡƒΠ»ΡŒΡΠ°Ρ†ΠΈΠΈ).

Бобранная схСма выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π­Ρ‚ΠΎ Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ я Ρ‚ΡƒΡ‚ Π½Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Π».

Π’Π°ΠΊ ΠΆΠ΅, для программирования ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° я ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€ΠΎΠΌ-ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ ICD2. Он ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ ΠΏΠΎ USB ΠΈ прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ Π½Π° систСмС Windows, Ρ‚Π°ΠΊ ΠΈ Π½Π° GNU/Linux. Π’ нашСм случаС Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€ΠΎΠ΄Π½ΠΎΠΉ MPLAB IDE Π² Windows.
Π‘ΠΊΡ€ΠΈΠ½ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

Π§Π°ΡΡ‚ΡŒ 2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ.

Π‘Π²Π΅Ρ‚ΠΎΠ΄ΠΈΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π½Π° 1ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ CPP (ШИМ). Π—Π° настройку модуля Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ рСгистр CPP1CON. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρƒ нас Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π», ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠΌΠ΅Ρ€. Для Ρ€Π΅ΠΆΠΈΠΌΠ° ШИМ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ TMR2. Π—Π° Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ рСгистр T2CON. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ:
movlw  .0     
bcf   STATUS, 5

movwf  T2CON ; ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² рСгистр T2CON - 0
bsf   T2CON, 0 ; УстанавливаСм Π±ΠΈΡ‚ T2CKPS0 (ΠŸΡ€Π΅Π΄Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ)
bsf   T2CON, 2 ; Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ TMR2 Π±ΠΈΡ‚ΠΎΠΌ TMR2ON
bsf   T2CON, 3 ; УстанавливаСм Π±ΠΈΡ‚ TOUTPS0 (ΠŸΠΎΡΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅)



На этом инициализация Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΎΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ источником для нашСго ШИМ модуля.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ШИМ модуля происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

movlw   00101111b ; ΠŸΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ
movwf   CPPCON ; ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌ ШИМ
bsf    CPPCON, 2 ; Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ШИМ
ВсС, Π½Π° этом инициализация Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² рСгистр CPP1L число ΠΎΡ‚ 0 Π΄ΠΎ 255, Ρ‚Π΅ΠΌ самым мСняя ΡΠΊΠ²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ².

ΠŸΠΎΠ»Π½Ρ‹ΠΉ исходник ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ нашСго ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°:

STATUS   equ     03h    
TRISC    equ     07h                
CPPCON   equ      17h
CPP1L    equ      15h
T2CON    equ      12h
counter  equ      23h
tmp      equ      25h    
      org     0     
      goto    start    
start   
  bsf     STATUS, 5  
                 
  movlw    .0     
  movwf    TRISC   
  bcf      STATUS, 5
  movwf    T2CON
  bsf      T2CON, 0
  bsf      T2CON, 2
  bsf      T2CON, 3
  movlw    00101111b
  movwf    CPPCON
  bsf     CPPCON, 2
  movlw    .0
  movwf    CPP1L
  movlw    .255
  movwf    tmp
  decfsz  tmp, 1
    goto $+2
    goto $+4
      call delay10mS
      incf CPP1L, 1
      goto $-5
  movlw    .255
  movwf    tmp
    decfsz  tmp, 1
    goto $+2
    goto $+4
      call delay10mS
      decf CPP1L, 1
      goto $-5
  goto $-16
delay10mS
  movlw  .50
  movwf  counter
loop
  call  delay200uS
  decfsz  counter
  goto  loop
  return
delay200uS
  movlw  .100  
  addlw  -1
  btfss  STATUS,2
  goto  $-2
  return  
end  
ΠšΡ€Π°Ρ‚ΠΊΠ°Ρ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ° ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.
equ β€” ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ адрСс.
goto β€” ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΌΠ΅Ρ‚ΠΊΡƒ, Π»ΠΈΠ±ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ строку
call β€” Π’Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
movlw β€” ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² рСгистр W, число
movwf β€” ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ· рСгистра W число
bsf β€” Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΡ‚ Π² рСгистрС, Π² состояниС 1
bcf β€” Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΡ‚ Π² рСгистрС, Π² состояниС 0
addlw β€” ΠŸΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ Π² рСгистр W число
btfss β€” ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π±ΠΈΡ‚ Π² рСгистрС Π½Π° 1
incf β€” Π˜Π½ΠΊΡ€ΠΈΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСгистр (ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ 1)
decf β€” Π”Π΅ΠΊΡ€ΠΈΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСгистр (Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ 1)
decfsz β€” Π’Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ 1 ΠΈΠ· рСгистра + ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° 0

Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΡ‚ΠΊΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° частоту ΠΊΠ²Π°Ρ€Ρ†Π΅Π²ΠΎΠ³ΠΎ Ρ€Π΅Π·ΠΎΠ½Π°Ρ‚ΠΎΡ€Π° Π² 8ΠΌΠ³Ρ†.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
Π’ Π½Π°Ρ‡Π°Π»Π΅, происходит инициализация рСгистров, Π·Π°Ρ‚Π΅ΠΌ настройка Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°.

Π’ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ tmp ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠΊΠ²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ, Ρ‚Π΅ΠΌ самым мСняя ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΡ€ΠΊΠΎΡΡ‚ΡŒ свСтодиода.

Π”Π°Π»Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° само ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ свСтодиода, с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ использования ШИМ. Π‘Π½Π°Ρ‡Π°Π»Π°, инкриминируя CPP1L Π΄ΠΎ значСния tmp ΠΌΡ‹ заставляСм свСтодиод ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΡΠ²Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.

Π§Π°ΡΡ‚ΡŒ 3. Ѐинальная

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡˆΠΈΠ²Π°Ρ‚ΡŒ Π’Π°Ρˆ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ установит Π±ΠΈΡ‚Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Π‘Π΅Π· Π½ΠΈΡ…, Π½ΠΈΡ‡Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

И Ρ‚Π°ΠΊ:
1) WDT β€” Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ. Π­Ρ‚ΠΎ стороТСвой Ρ‚Π°ΠΉΠΌΠ΅Ρ€. ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ сброса ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ зависания.
2) LWP β€” Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ. Π­Ρ‚ΠΎ Π½ΠΈΠ·ΠΊΠΎΠ²ΠΎΠ»ΡŒΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π°Π΅Ρ‚ Π½Π° MCLR 13Π’.
3) ΠžΡΡ†ΠΈΠ»ΡΡ‚ΠΎΡ€: Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ 8ΠΌΠ³Ρ†. Π—Π½Π°Ρ‡ΠΈΡ‚ ставим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ XT.

Π§Π°ΡΡ‚ΡŒ 4. Бонусная.

Π’ΠΈΠ΄Π΅ΠΎ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π»/Π½Π΅ собирал схСмы, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π§Π°ΡΡ‚ΡŒ 5. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ.

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт microchip β€” www.microchip.com
Π¦ΠΈΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ источники β€” www.wikipedia.org
Русская докумСнтация для ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² PIC β€” www.microchip.ru/lit/?mid=1Γ—0

habr.com

Π Π°Π΄ΠΈΠΎΠšΠΎΡ‚ :: ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ программистам ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² PIC

Π Π°Π΄ΠΈΠΎΠšΠΎΡ‚ >ΠžΠ±ΡƒΡ‡Π°Π»ΠΊΠ° >ΠœΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΠΈ ΠŸΠ›Π˜Π‘ >НСсколько слов ΠΎ PIC-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… >

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ программистам ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² PIC

Автор: Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€ Π”.
degvv@mail.ru

Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· собствСнного ΠΎΠΏΡ‹Ρ‚Π° Π½Π°Ρ‡Π°Π»Π° изучСния программирования ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Π΄Π°Ρ‚ΡŒ нСсколько практичСских совСтов ΠΏΠΎ ΡΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ассСмблСрС. ВсС, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ программирования Π΄Π°Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ Pic ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌ срСднСго сСмСйства Microchip,ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹Ρ… для Π½Π°Ρ‡Π°Π»Π° освоСния, Π²Π²ΠΈΠ΄Ρƒ относи- Ρ‚Π΅Π»ΡŒΠ½ΠΎ простой ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ нСслоТной систСмы ΠΊΠΎΠΌΠ°Π½Π΄ ассСмблСра.

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… макросов (Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ).Они Π½Π΅ привязаны ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρƒ, поэтому ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· datasheet -ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅ΠΌ Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΡƒΡŽ частоту – FΡ‚Π°ΠΊΡ‚. = 4,096 ΠœΠ“Ρ† (стандартный ΠΊΠ²Π°Ρ€Ρ†). Π’ΠΎΠ³Π΄Π° врСмя Ρ†ΠΈΠΊΠ»Π° составит t c = 1 / FΡ‚Π°ΠΊΡ‚. * 4 = 0,97656 мкс


INI_TMR				; инициализация  Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΎΡ‚  RTCC
		bsf STATUS,RP0	; Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ  Π±Π°Π½ΠΊ 1
		movlw b"00000100"
		movwf OPTION		; ΠΏΡ€Π΅Π΄Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ  для  RTCC   1 :  32
		bcf STATUS,RP0	;  Π±Π°Π½ΠΊ 0
		movlw b"10100000"
		movwf INTCON		;  Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΎΡ‚ RTCC
		movlw .96		;  Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ  Π²  RTCC  ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число 96
		movwf TMR0

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ врСмя ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ:
t i = t c * 32 * (256 – 96 = 160)
t i = 0,97656 * 32 * 160 = 5 000 мкс = 5 мс

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π² Π’Π°ΡˆΡƒ Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ввСсти бСсконСчный Ρ†ΠΈΠΊΠ» (Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΎΠΆΠΈ- дания прСрывания), ΠΈ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° этот Ρ†ΠΈΠΊΠ», ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ привязку ΠΊ 5 мс.И послС прСрывания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° вСрнётся ΠΏΠΎ адрСсу, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ (Ρ‡Π°Ρ‰Π΅ это 04h).Для Ρ‡Π΅Π³ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ – смотри дальшС.

Π˜Ρ‚Π°ΠΊ:


;
		org   0
		START		; Π½Π°Ρ‡Π°Π»ΠΎ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ послС
;					Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ питания
		org   04h		; Π° это адрСс Π²Π΅ΠΊΡ‚ΠΎΡ€Π° прСрывания, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ
		main		; Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ  основная  ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°
;
START				; здСсь ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ происходит ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ  ΠΈΠ½ΠΈ-
		INI_TMR		; циализация  ΠΏΠΎΡ€Ρ‚ΠΎΠ², Ρ€Π΅ΠΆΠΈΠΌΠΎΠ², рСгистров ΠΈ Ρ‚.ΠΏ.
		INI_PORTS
loop
		goto loop		; Π° это ΠΈ Π΅ΡΡ‚ΡŒ  бСсконСчный Ρ†ΠΈΠΊΠ»
;--------------------------------------------------

main
;               Π΄Π°Π»Π΅Π΅  ΠΈΠ΄Ρ‘Ρ‚  Ρ‚Π΅Π»ΠΎ  основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹,
;		Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ обслуТивания  ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΎΡ‚ RTCC,
;            Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ   ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ  CALL:

ServTMR
		btfsc INTCON,RTIF	;  провСряСм  Ρ„Π»Π°Π³ срабатывания ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΎΡ‚ RTCC  ΠΈ
		call SET_TMR		;  Ссли "Π΄Π°",Ρ‚ΠΎ снова ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ  TMR0
		return		;  Ссли "Π½Π΅Ρ‚" -  Π²ΠΎΠ·Π²Ρ€Π°Ρ‚  Π²  мСсто Π²Ρ‹Π·ΠΎΠ²Π°  ServTMR Π²
					;  основной  ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ main
;
SET_TMR		movlw .96
		movwf TMR0		; снова Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ число 96
		bcf INTCON,RTIF		; сбрасываСм Ρ„Π»Π°Π³ срабатывания
		retfie		; Π²ΠΎΠ·Π²Ρ€Π°Ρ‚  с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ  Π² ServTMR, Π°
					; Π·Π°Ρ‚Π΅ΠΌ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ  main

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования прСрывания ΠΎΡ‚ RTCC для получСния сСкундного ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² , скаТСм, ΠΏΠΎΡ€Ρ‚Π° Π’ – RB0 : Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ рСгистр Rsec, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π½Π΅Π΅ объявлСн Π² Π² адрСсном ΠΏΠΎΠ»Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… рСгистров.


FORM_1S				; Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅,   Π° ΠΎΠ½  ΠΏΠΎ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡŽ RTCC  длится
		incf Rsec,w		; 5 Мс,  ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ рСгистр Rsec Π½Π° 1 Π΄ΠΎ  числа 200
		xorlw .200		; (5 мс * 200 = 1 сСк)
		btfsc STATUS,z
		goto OUT_PORT		; ΠΏΡ€ΠΈ Rsec = 200  Ρ„Π»Π°Π³  z = "1" ΠΈ  ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅
					; Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ RB0 ΠΏΠΎΡ€Ρ‚Π° Π’
		return		; Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ  main
;
OUT_PORT		btfss PORTB,0			; провСряСм состояниС Π²Ρ‹Π²ΠΎΠ΄Π° RB0
		goto OUT_ON		; Ссли RB0 ="0", Ρ‚ΠΎ  устанавливаСм  Π² "1"
		bcf PORTB,0		; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС - устанавливаСм Π² "0"
		goto main		; Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ
;
OUT_ON		bsf PORTB,0		; устанавливаСм RB0 = "1"
		goto main

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ RB0 ΠΏΠΎΡ€Ρ‚Π° Π’ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ сСкунду ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ сигнала Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎ β€œ0” Ρ‚ΠΎ β€œ1”.

Π’ рСгистрах ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° информация находится ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, ( Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅). Но часто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ – дСсятичном Π²ΠΈΠ΄Π΅ (BCD – ΠΊΠΎΠ΄), скаТСм, для управлСния поразрядно сСмисСгмСнтным ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° b2 Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ – дСсятичный BCD ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

Π’ 8 – bit рСгистрС ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ число ΠΎΡ‚ 0 Π΄ΠΎ 255 ( ΠΎΡ‚ b”00000000β€³ Π΄ΠΎ b”11111111β€³ ). ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ число Π² Ρ‚Ρ€ΠΈ разряда Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ – дСсятичного ΠΊΠΎΠ΄Π° - β€œΡΠΎΡ‚Π½ΠΈβ€, β€œΠ΄Π΅ΡΡΡ‚ΠΊΠΈβ€ ΠΈ β€œΠ΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹β€. Для этого Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ рСгистры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² адрСсном ΠΏΠΎΠ»Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… рСгистров :

Rbin – рСгистр хранСния числа Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ b2
Rhan – рСгистр β€œΡΠΎΡ‚Π½ΠΈβ€ ΠΊΠΎΠ΄Π° BCD
Rdec – рСгистр β€œΠ΄Π΅ΡΡΡ‚ΠΊΠΈβ€ ΠΊΠΎΠ΄Π° BCD
Rsim – рСгистр β€œΠ΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹β€ ΠΊΠΎΠ΄Π° BCD

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ вычитания чисСл 100, Π° Π·Π°Ρ‚Π΅ΠΌ 10 с подсчётом количСства ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠΉ.


CON_100		movlw .100		; Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ  100  ΠΈΠ·  Rbin  c  ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎ
		subwf Rbin,w		; Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚  Π½Π΅  ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ. Π€Π»Π°Π³  "c" = 1 ΠΏΡ€ΠΈ
		btfss STATUS,c		; Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ > ΠΈΠ»ΠΈ =  0, ΠΈ  "c" = 0  ΠΏΡ€ΠΈ   

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ BCD - ΠΊΠΎΠ΄Π° Π² b2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π΅ ΠΆΠ΅ рСгистры Rhan, Rdec, Rsim Π³Π΄Π΅ находится число Π² BCD - ΠΊΠΎΠ΄Π΅, рСгистры RbinH - ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ разряд ΠΈ RbinL - младший разряд для чисСл ( > 255) Π² ΠΊΠΎΠ΄Π΅ b2 ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ рСгистры RM1 - "ΠΌΠ½ΠΎΠΆΠΈΠΌΠΎΠ΅" , RM2- "ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ".Для прСобразования BCD Π² b2 Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ "сотни" Π½Π° 100, "дСсятки" Π½Π° 10 ΠΈ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ всё вмСстС с "Π΅Π΄ΠΈΠ½ΠΈΡ†Π°ΠΌΠΈ" ΠΈ с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ пСрСноса Π² ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ разряд ΠΏΡ€ΠΈ Π½Π΅ΠΎΠ±- ходимости.Для умноТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ слоТСния.


B2X_100		movlw .99		; ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅  "сотСн"
		movwf RM2		; ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ  =  ΠΊΠΎΠ» - Π²ΠΎ слоТСний (100) минус  ΠΎΠ΄ΠΈΠ½
		movf Rhan,w
		movwf RM1		; ΠΌΠ½ΠΎΠΆΠΈΠΌΠΎΠ΅  =  "сотни"
loopX100	addwf RM1,w
 		btfsc STASTUS,c		; провСряСм  пСрСнос Π²  ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ  разряд
		incf RbinH,f		; Ссли Π΅ΡΡ‚ΡŒ пСрСнос
		decfsz RM2,f		; ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌ  количСство  слоТСний
		goto loopX100
		movwf RbinL		; Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚  слоТСния  заносим  Π²  рСгистр  ΠΌΠ». разряда
;
B2X_10		movlw .9		; ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅  "дСсятков"
		movwf RM2		; ΠΌΠ½ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ  =  ΠΊΠΎΠ» - Π²ΠΎ  слоТСний (10) минус ΠΎΠ΄ΠΈΠ½
		movf Rdec,w
		movwf RM1		; ΠΌΠ½ΠΎΠΆΠΈΠΌΠΎΠ΅ = "дСсятки"
loopX10		addwf RM1,w		; здСсь пСрСнос ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Ρ‚.ΠΊ. Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
		decfsz RM2,f		; всСгда  

ΠšΠΎΠ½Π΅Ρ† прСобразованиям ΠΈ дальнСйшСС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ рСгистрах RbinL ΠΈ RbinH ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ 16 - bit число Π² ΠΊΠΎΠ΄Π΅ b2.

Для выполнСния арифмСтичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ дСлСния ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, рассмот- Ρ€Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅, примСняСтся опСрация вычитания. Допустим Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ произвСсти Π΄Π΅Π»Π΅Π½ΠΈΠ΅ числа, находящСгося Π² рСгистрах RHsum (ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅ разряды) ΠΈ RLsum (младшиС разряды) - Π½Π° Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ( ΠΏΡ€ΠΈΠΌΠ΅ΠΌ Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Π½Π΅ > 255) находящийся Π² рСгистрС Rdel.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π½ΠΎΡΠΈΡ‚ΡŒ Π² рСгистры RHrez ΠΈ RLrez (ΡΡ‚Π°Ρ€ΡˆΠΈΠ΅ ΠΈ младшиС разряды соот- вСтствСнно) :

OP_DEL
		movf Rdel,w
		subwf Rlsum,w
		btfss STATUS,c		; провСряСм  Π½Π΅ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ  Π»ΠΈ  Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚?
		goto DEF_carry		; Ссли  "Π΄Π°", Ρ‚ΠΎ  ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ  Π·Π°Ρ‘ΠΌ  ΠΈΠ·  ст. разряда
		incf RLrez,f		; подсчитываСм  ΠΊΠΎΠ»-Π²ΠΎ  Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠΉ  с  ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ
		btfsc STATUS,c		; Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ  пСрСноса  Π²  ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ  разряд
		incf RHrez,f
		movwf RLsum		; восстанавливаСм  остаток, Ρ‡Ρ‚ΠΎ Π±Ρ‹  Π½Π΅  ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒ
		goto OP_DEL		; ΠΏΡ€ΠΈ  ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ  Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ вычитания
;
DEF_carry
		movlw 0h
		xorwf RHsum,w		; всё  Π»ΠΈ  заняли ΠΈΠ· ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ разряда  Π² младший?
		btfsc STATUS,z		; Ссли  "Π΄Π°", Ρ‚.Π΅.  RHdel  =  0  ΠΈ  Π²  OP_DEL  ΠΎΡ‚Ρ€ΠΈ-
		goto OUT_ DEL		; Ρ†Π°Ρ‚. Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ - ΠΊΠΎΠ½Π΅Ρ†  дСлСнию  ΠΈ  Π²Ρ‹Ρ…ΠΎΠ΄
		decf RHsum,f		; Ссли  "Π½Π΅Ρ‚" - Π·Π°Ρ‘ΠΌ  ΠΈΠ·  ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ  разряда  ΠΈ  ΠΏΡ€ΠΎ-
		incf RLrez,f		; долТаСм  дальшС
		btfsc STATUS,c		; ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°  нСобходимости  пСрСноса  Π²  ст.разряд
		incf RHrez,f
		goto OP_DEL

Как Π²Π°ΠΌ эта ΡΡ‚Π°Ρ‚ΡŒΡ?

Π—Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π»ΠΈ это устройство Ρƒ вас?

www.radiokot.ru

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² PIC. Π§Π°ΡΡ‚ΡŒ 2. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΈ установили MPLAB. Π§Ρ‚ΠΎ дальшС? Π”Π°Π»ΡŒΡˆΠ΅ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ прСдставляСт собой pic-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΊΠ°ΠΊ ΠΎΠ½ устроСн ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ построСния Ρƒ всСх pic-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со всСми ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°ΠΌΠΈ Ρ‚ΠΎΠΆΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹, Π½ΠΎ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π² качСствС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ для PIC16F628A.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ количСства Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… устройств, Π·Π°ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ корпусС, Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… управляСт ΠΎΠ΄Π½ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ устройство. ΠšΡ€ΠΎΠΌΠ΅ этого, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ….

Π“Π»Π°Π²Π½ΠΎΠ΅ устройство называСтся ядром (ΠΎΠ½ΠΎ Ρ‚ΠΎΠΆΠ΅ состоит ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… частСй: АЛУ, Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ инструкций, стСк ΠΈ Ρ‚.Π΄., Π½ΠΎ Π½Π°ΠΌ для программирования это ΠΏΠΎΠΊΠ° Π½Π΅ Π²Π°ΠΆΠ½ΠΎ). Π“Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ½ΠΎ являСтся ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π·Π°ΡˆΠΈΡ‚Ρ‹Π΅ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ элСмСнтарныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ, Π² зависимости ΠΎΡ‚ этих ΠΊΠΎΠΌΠ°Π½Π΄, Ρ€Π°Π·Π΄Π°Π²Π°Ρ‚ΡŒ указания ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ устройствам, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ.

Одним ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ядра являСтся АЛУ β€” Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΎ-логичСскоС устройство. Π’ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… PIC ΠΎΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ рСгистр W ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ матСматичСскиС ΠΈ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π»ΡŽΠ±Ρ‹ΠΌ рСгистром памяти Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎ, Ρ‡Ρ‚ΠΎ АЛУ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ рСгистром памяти Π΄Π°Π½Π½Ρ‹Ρ… β€” ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Π² дальнСйшСм Π±ΡƒΠ΄Π΅Ρ‚ рассказано ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ устройства β€” это ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. НСпосрСдствСнно Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΠ½ΠΈ Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для выполнСния ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. НапримСр, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ PIC16F628A ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ: 2 ΠΏΠΎΡ€Ρ‚Π° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (ΠΏΠΎ 8 нСзависимых Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ²), ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² (2 ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€Π°), 3 Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ сравнСния/Π·Π°Ρ…Π²Π°Ρ‚Π°/ШИМ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ USART.

Π Π°Π·Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ (соотвСтствСнно, ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ), Π½ΠΎ всС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΠΎΠ΄Π½ΠΎΠΉ сСрии ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅ ядро.

ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° дСлится Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… с Π±ΡƒΠΊΠ²ΠΎΠΉ F β€” Ρ„Π»Π΅ΡˆΠΎΠ²Π°Ρ, соотвСтствСнно, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достаточно большоС количСство Ρ€Π°Π· пСрСзаписана. Π—Π΄Π΅ΡΡŒ основным интСрСсным Ρ„Π°ΠΊΡ‚ΠΎΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ этой памяти Π½Π΅ ΠΊΡ€Π°Ρ‚Π΅Π½ 8-ΠΌΠΈ Π±ΠΈΡ‚Π°ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ 14 Π±ΠΈΡ‚. Π’Π°ΠΊΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС называСтся словом. ВсС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° 14-Ρ‚ΠΈ разрядныС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ слово памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Доступ ΠΊ памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ осущСствляСтся ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ 14-Ρ‚ΠΈ разрядной шинС.

Π’Π΅, ΠΊΡ‚ΠΎ писал ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ, Ρ‚.ΠΊ. Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ слово β€” это 16 Π±ΠΈΡ‚, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹. Когда говорят, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌ памяти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PIC16F628A Ρ€Π°Π²Π΅Π½ 1 ΠšΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Ρƒ, Ρ‚ΠΎ это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π²Π΅Π½ 1024 Π±Π°ΠΉΡ‚Π° ΠΏΠΎ 8 Π±ΠΈΡ‚. На самом Π΄Π΅Π»Π΅ ΠΎΠ½ Ρ€Π°Π²Π΅Π½ 1024-ΠΌ словам ΠΏΠΎ 14 Π±ΠΈΡ‚.

ΠŸΠ°ΠΌΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, дСлится Π½Π° EEPROM ΠΈ ΠžΠ—Π£.

EEPROM β€” это энСргонСзависимая ΠΏΠ°ΠΌΡΡ‚ΡŒ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для хранСния любой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π―Ρ‡Π΅ΠΉΠΊΠΈ этой памяти ΠΈΠΌΠ΅ΡŽΡ‚ стандартный Ρ€Π°Π·ΠΌΠ΅Ρ€ β€” 8 Π±ΠΈΡ‚. Π’ΡƒΡ‚ всё понятно.

ΠžΠ—Π£ β€” это опСративная ΠΏΠ°ΠΌΡΡ‚ΡŒ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ питания, информация, Ρ…Ρ€Π°Π½ΠΈΠ²ΡˆΠ°ΡΡΡ Π² этой памяти, ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚. Π­Ρ‚Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ EEPROM, 8-ΠΌΠΈ битная. На этом Ρ‚ΠΈΠΏΠ΅ памяти Π΄Π°Π²Π°ΠΉΡ‚Π΅ остановимся ΠΏΠΎΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅:

ΠžΠ—Π£ прСдставляСт собой Π½Π°Π±ΠΎΡ€ рСгистров, Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Π½Π° Π±Π»ΠΎΠΊΠΈ ΠΏΠΎ 128 Π±Π°ΠΉΡ‚, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π±Π°Π½ΠΊΠ°ΠΌΠΈ. Π’ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ΅ количСство Π±Π°Π½ΠΊΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² PIC12 ΠΈΡ… 2, Π° Π² PIC16 β€” 4).

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π±Π°Π½ΠΊΠ΅ ΠΏΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ 32-ΠΌ адрСсам (с 0000h ΠΏΠΎ 0020h) располоТСны слуТСбныС рСгистры. Π˜Ρ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ рСгистрами ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния (SFR β€” special function register). Π§Π΅Ρ€Π΅Π· эти рСгистры, собствСнно, ΠΈ осущСствляСтся ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ всСх составных частСй ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° (ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ функциями ΠΊΠ°ΠΊ самого ядра, Ρ‚Π°ΠΊ ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ).

ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ устройству Π²Ρ‹Π΄Π΅Π»Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько рСгистров ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния. Π£Π²ΠΈΠ΄Π΅Π² Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ сочСтаниС Π±ΠΈΡ‚ΠΎΠ², выставлСнноС Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ рСгистрС ядром (ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, АЛУ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌ рСгистром), устройство ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ. Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, измСняя ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ своём рСгистрС, устройство Π΄ΠΎΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΡ‚Ρ‹ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ рСгистрС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для получСния ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ, установка высокого ΠΈΠ»ΠΈ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π²Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ Ρ‚.Π΄.), опрСдСляСт программист β€” ΠΏΠΈΡˆΠ΅Ρ‚ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ»ΠΈ ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ рСгистрС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния. А нСпосрСдствСнно выполняСт эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (нСпосрСдствСнно устанавливаСт Π½ΡƒΠΆΠ½Ρ‹Π΅ Π±ΠΈΡ‚Ρ‹ Π² Π½ΡƒΠΆΠ½Ρ‹Ρ… рСгистрах) β€” ядро ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ АЛУ.

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ рСгистрам ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ адрСс ячСйки памяти, Π° смСщСниС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ адрСса Ρ‚ΠΎΠ³ΠΎ Π±Π°Π½ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ этот рСгистр находится. Если рСгистр находится Π² Π½ΡƒΠ»Π΅Π²ΠΎΠΌ Π±Π°Π½ΠΊΠ΅, Ρ‚ΠΎ это смСщСниС Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌ адрСсом, Π½ΠΎ Ссли рСгистр находится Π² любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π±Π°Π½ΠΊΠ΅, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ совпадСния Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ смСщСниС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»Π° Π±Π°Π½ΠΊΠ° β€” Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ адрСса рСгистра ΠΎΡ‚Π½ΡΡ‚ΡŒ адрСс Π½Π°Ρ‡Π°Π»Π° Π±Π°Π½ΠΊΠ°.

НапримСр, рСгистр TRISA располоТСн ΠΏΠΎ адрСсу 85h. Π­Ρ‚ΠΎΡ‚ адрСс находится Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π±Π°Π½ΠΊΠ΅ β€” адрСс Π½Π°Ρ‡Π°Π»Π° Π±Π°Π½ΠΊΠ° 80h. Π’ΠΎ Π΅ΡΡ‚ΡŒ, для обращСния ΠΊ этому рСгистру Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½ΡƒΠΆΠ½ΠΎ сначала Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π°Π½ΠΊ, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ рСгистру ΠΏΠΎ адрСсу 85h-80h=05h.

Π’Ρ‹Π±ΠΎΡ€ Π±Π°Π½ΠΊΠ°, Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² установкС Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ рСгистрС Π½ΡƒΠΆΠ½Ρ‹Ρ… Π±ΠΈΡ‚ΠΎΠ². Π’ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ PIC16F628A Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Π±Π°Π½ΠΊ опрСдСляСтся сочСтаниСм Π±ΠΈΡ‚ΠΎΠ² RP1, RP2 Π² рСгистрС STATUS.

НСкоторыС рСгистры ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΊΠ²ΠΎΠ·Π½ΡƒΡŽ Π°Π΄Ρ€Π΅ΡΠ°Ρ†ΠΈΡŽ ΠΈ доступны ΠΈΠ· всСх Π±Π°Π½ΠΊΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, рСгистр STATUS доступСн ΠΏΠΎ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ 03h Π² любом Π±Π°Π½ΠΊΠ΅).

ΠšΡ€ΠΎΠΌΠ΅ рСгистров ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΅Ρ‰Ρ‘ рСгистры ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния β€” это просто пустыС ячСйки памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ программистом для хранСния Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…).

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список всСх рСгистров (с адрСсами ΠΈ Π±Π°Π½ΠΊΠ°ΠΌΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ располоТСны) называСтся ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ памяти.

ΠšΠ°Ρ€Ρ‚Π° памяти, описаниС всСх рСгистров ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ назначСния ΠΈ порядок Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ описаниС всСх ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ядром инструкций приводятся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€.

  1. Π§Π°ΡΡ‚ΡŒ 1. НСобходимыС инструмСнты ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΡΠ½ΠΎΠ²Ρ‹ MPLAB
  2. Π§Π°ΡΡ‚ΡŒ 2. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ
  3. Π§Π°ΡΡ‚ΡŒ 3. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ассСмблСрС
  4. Π§Π°ΡΡ‚ΡŒ 4. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Алгоритмы
  5. Π§Π°ΡΡ‚ΡŒ 5. АссСмблСр. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠΉ
  6. Π§Π°ΡΡ‚ΡŒ 6. Как пСрСвСсти ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π² Ρ€Π΅ΠΆΠΈΠΌ программирования ΠΈ Π·Π°Π»ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ

radiohlam.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *