Jak začít programovat procesor PIC
29. 10. 2000
Dnes je v prodeji mnoho procesorů PIC, které se od sebe liší velikosti pamětí programu a dat, počtem a druhem použitých periférií, rychlostí a typem pouzdra. Společným rysem je použitá technologie typu CMOS a RISCové jádro procesoru. V následujícím popisu jsou uvedeny všechny potřebné nástroje a programy k programování PICů.
Pro první kroky s procesorem PIC potřebujeme:
- počítač PC
- textový editor
- překladač - assembler
- simulátor procesoru
- procesor PIC
- programátor procesorů PIC
- zkušební desku pro ladění programu
- chut do programování
Jaký typ procesoru vybrat ?
Starší typy procesorů, které se ještě dnes používají mají pamět typu EPROM.
Vyrábí se ve dvou provedeních. První provedení se nahraje jen jednou tzv. OTP a stojí cca
100,- Kč. Pro ladění programu je nevhodný. Hodí se pro sériovou výrobu několika desítek kusů.
Než odladíte program tak jich budete mít celou hromadu nahraných procesorů se špatným
programem. Druhý provedení je verze s okénkem JW a dá se mazat ÚV světlem. Doba mazání je
cca 30 minut. Pro práci je dobré mít dva kusy procesoru. Než jeden smažu, můžu na druhém
ladit program. Cena je poněkud vyšší cca 400,- Kč. POZOR! u verze s okénkem není
povoleno při programování aktivovat ochraný bit! Po této aktivaci nejde procesor smazat!
Tyto typy procesorů postupně vytlačuje procesor s pamětí EEPROM typu FLASH, která se nemusí mazat ÚV světlem. Odpadne nám investice do ÚV mazačky pamětí. Procesor se jednoduše smaže v ovládacím programu pro programátor, a nahraje novým programem. Některé procesory jako PIC16F84 se můžou rovnou nahrát novým programem bez předchozího mazání. Další pamět v procesoru je pro uložení nastavených dat i při vypnutém napájení. Tuto pamět nemají všechny procesory. Z celé řady procesorů se nejlépe hodí pro začátek PIC16F84. Jeho pořizovací hodnota je cca 160,- Kč. Tento procesor nemá v sobě A/D (anolog/digitál) převodník ani další periférie, které nabízí řada PIC16F627, 628 nebo PIC16F873, 874, 876 a 877. Tyto procesory se liší vybavením v perifériích, velikostí pamětí pro program i data, maximální frekvencí, velikostí pouzdra a počtem vývodů. Pořizovací cena je od cca 100,- až 300,- Kč.
Jaký programátor procesorů ?
Možností, jaký programátor postavit nebo koupit je mnoho. Koupený programátor je řešení rychlé, ale pro mnohé začínající drahé. Na internetu si můžeme vybrat z velké nabídky, ale jen pár je opravdu univerzálních. Programátory můžeme rozdělit podle připojení k počítači na dvě základní skupiny. První se připojuje na paralelní port počítače označován také PRN a napájení pro programátor je přivedeno ze sítového zdroje. Druhá skupina se připojuje na sériový port počítače označován COM a napájení pro programátor je přivedeno bud ze sériového portu počítače nebo ze sítového zdroje. Napájení ze sítového zdroje je vhodnější pro přesně definované napětové úrovně při programování procesoru.
Jednoduchý a spolehlivý programátor má Bojan Dobaj. Na programátor můžeme použít ovládací program pro DOS nebo WIN od různých autorů (rubrika programátory). V následujícím popisu se seznámíme s programátorem od Bojana Dobaje P16light a popíšeme si základní nastavení.
Program rozzipujeme do adresáře P16PRO a spustíme. Zjistíme jaký obvod v programátoru máme osazený. Použít je možné obvod 74LS06 nebo 74LS07. Pokud jsme použili obvod 74LS06 a programátor je připojen na LPT1 není potřeba nic nastavovat a můžeme přejít k programování. V opačném případě nastavíme program podle následujících bodů.
1. nastavit připojení k LPT1 nebo LPT2 ( Settings / Other )
2. nastavit programátor podle osazeného obvodu ( Settings / Hardware ).
Na obrázku je nastavení programátoru pro obvod 74LS07.
Postup nahrání PIC16F84.
1. spustit program P16PRO.
2. vybrat typ procesoru (Settings / Device )
3. načíst HEX soubor do P16PRO ( File / Open program )
4. vložit PIC16F84 do programovací patice
5. spustit mazání ( PIC musí být prázdný )
6. spustit programování


Počítač PC
Počítač používáme pro psaní programu, překlad assemlerem a programování PICů. Pokud máme programátor na paralelní rozhraní, počítač by měl mít dva LPT porty. Jeden pro tiskárnu na výpisy programů a druhý pro programování. Přepojování kabelů nás dlouho bavit nebude. Rychlost počítače závisí na ovládacím programu programátoru (DOS nebo Windows) a operačním systému počítače (DOS nebo Windows 95/98). Pro DOSovský ovládací program a DOS na počítači bude stačit PC 384/DX40 pro ovládací program ve WINDOWS alespoň PC 486DX4/100Mhz.
Výběr literatury
Základní popis procesorů, popis instrukcí a příklady psaní programů je prezentováno na
internetu. Pokud se chceme něco naučit, tak získané informace si doma budeme tisknout, pro
rychlejší orientaci a možnost psaní poznámek. Já zastávám názor,
že lépe se učí z papíru a ne koukáním do obrazovky monitoru (PAPÍR je PAPÍR).
Proto je vhodné si koupit knihu. Do začátku mohu doporučit knihu
Mikrořadiče PIC16CXX
, kde je od základu popsán procesor PIC16C5X, PIC16C71 a PIC16C84 jak pracuje včetně popisu
instrukčního souboru. To nám ale nebude stačit. Potřebujeme základní popis jak napsat
program. Popis psaní programů s ukázkami je v knize
Programování mikrokontrolerů PIC16CXX.
Další dobrá kniha je
Učebnice programování PIC
, kde je přehled instrukcí procesoru a základní popis jak psát program na příkladu. Každá z
těchto knih vás seznámí se základem programování.
Psání programu textovým editorem
Jako první začneme psát program. Na psaní krátkých programů stačí editor Norton Comander, M602 nebo poznámkový blok. Pro programy delší než cca 50Kb, můžeme použít editor např. Programmer`s File Editor (PFE). V souboru píšeme poznámky k jednotlivým podprogramům a příkazům, pro lepší orientaci a případné další opravy programu. Soubor pojmenujeme s koncovkou asm (např. test_84.asm) a uložíme.
Překlad napsaného programu assemblerem
Napsaný program přeložíme do výsledného tvaru pro programátor. Spustíme překladač Mpasm.exe (pro DOS) nebo Mpasmwin.exe (pro WIN). Načteme soubor test_84.asm. Výsledkem překladu je soubor v HEX tvaru test_84.hex, pokud nebudou žádné chyby při překladu. Pokud se vyskytli chyby, opravíme je textovým editorem a znovu přeložíme.
Naprogramování procesoru
Spustíme programovací program, načteme soubor test_84.hex a nastavíme typ a pojistky procesoru. (pokud typ a pojistky procesoru nastavíme v programu *.asm, nastaví se automaticky při načtení souboru.) Zpustíme zápis a čekáme na dokončení zápisu.
Zkušební deska pro ladění programů
Po nahrání programu přistoupíme k ověření činnosti ve zkušební desce. Zkušební deska nám umožní rychlé vyzkoušení a opravení chyb. Zkušební deska vznikala postupně, podle požadavků na jednotlivé zapojení. Je zapojena na univerzální desce CU-TA035 (nebo CU-TA018, CU-TA019) za cca 95,- která je v prodeji v GM elektronic. Není zde uvedena rozpiska součástek pro stavbu, protože deska vznikala ze šuplíkových zásob. LED displej je 4násobný zapojený v multiplexu M514RD, odpory jsou pouµity miniatůrní 0,25W, LED diody o průmeru 3mm.

Popis zkušební desky
Napájení - střídavé napájecí napětí cca 9V je přivedeno přes souosý konektor průměr
2,1 na můstkový usměrnovač. Napětí je vyfiltrováno a připojeno na stabilizátor 7805
s chladičem. Stabilizované napětí +5V je signalizováno zelenou LED diodou a připojeno
na patici procesoru 16F84 a k dalším obvodům. Oscilátor se dá přepnout buď na krystal
nebo na RC oscilátor (jumper S1 a S2). Všechny připojené obvody (LCD displej, LED
displej, piezoměnič) je možné odpojit jumprovou lištou nebo pokud nejsou stisknutá
tlačítka tak neovlivnují procesor ani výstupní svorky.
LED displej - použit je 4-násobný displej v multiplexu se společnou anodou.
Napájení anod je vyvedeno z portu RA0 - RA3 přes jumpry S4 - S7 a odpory na spínací
tranzistory BC327-40. Segmenty displeje propojíme paralelně a připojíme přes odpory
a jumprovou lištu J1 na port RB0 - RB7. Pokud použijeme dekodér převodu BCD na
7-segmentový displej (např. D147, D346, 4056, 4511, 4513 nebo 4543) tak ušetříme 4 datové
dráty, ale nemůžeme zobrazit libovolné segmenty displeje.
LCD displej - zapojen na liště J2 2x8 špiček. Komunikace je použita 4-bitová pro menší
počet datových drátů a 2 řídící signály. Odporový trimr nastavý kontrast LCD displeje.
Klávesnice - zapojená v matici na port RB. Při použití se v programu nastavý port
RB0 - RB3 jako výstupní a port RB4 - RB7 vstup. Hotová klávesnice se dá objednat u firmy
CONRAD (cca 200,- Kč) v provedení 3x4 tlačítek v matici.
Pro zjištování výstupního stavu portu RB, je zapojeno přes odpory, 8 žlutých LED diod.
Při použítí portu RB jako vstupní je zapojeno 8 tlačítek paralelně na LEDky. Tlačítka je
potřeba ošetřit odpory na +5V pokud nebudeme zapínat v PICu vnitřní pull-up odpory.
Celé zapojení zkušební desky je na schématu. Po kliknutí plná velikost.

Zkušební program
; Poznamka se pise za strednik !!! LIST P=16F84 INCLUDE "P16F84.INC" __CONFIG _PWRTE_ON & _WDT_OFF & _RC_OSC #DEFINE TLAC PORTA,0 #DEFINE LED PORTA,1 BSF STATUS,RP0 MOVLW B'00000001' MOVWF TRISA BCF STATUS,RP0 ; ------------------------ BCF LED ; zhasni LED ;------------------------------- START BTFSS TLAC GOTO $-1 ; skoc o radek nahoru BSF LED ; rozsvit LED BTFSC TLAC GOTO $-1 ; skoc o radek nahoru ; ------------------------ BTFSS TLAC GOTO $-1 ; skoc o radek nahoru BCF LED ; zhasni LED BTFSC TLAC GOTO $-1 ; skoc o radek nahoru ; ------------------------ GOTO START ; skoc na START ;------------------------------- END ; konec programu