Zdroj Kubanec

Jednoduchý blikač s PIC

Protože myslím také na začátečníky, tak jsem si pro Vás nachystal jednoduchý program pro PIC, který poslouží k pochopení základních věcí o programování procesorů PIC.

Základní vlastnosti procesoru PIC 16F84A

  • Napájecí napětí:5V
  • Maximální ztrátový výkon:800mW
  • Maximální proud jednoho výstupu:20mA
  • Frekvence oscilátoru:100Khz÷4Mhz
schéma

Popis pinů

  • Vdd a Vss-napájecí piny
  • OSC1 a OSC2-vývody oscilátoru (většinou připojujeme krystal)
  • MCLR-resetovací pin, resetujeme přivedením log 0
  • RA a RB- vstupně výstupní porty
  • RA4/TOCKI-lze využít jako normální port, ale je zde vyveden vstup čítače impulzů

To byly pouze základní věci.

Co je potřeba

V prvé řadě potřebujete spoustu času a nervů. Určitě budete potřebovat také programátor, mohl by Vám stačit nějaký obyčejný za pár korun, na Belzových stránkách je dobrý programátor, který jsem dříve používal.

Dále potřebujete nějaký ten procesor, doporučuji PIC 16F84A pro začátečníky, jelikož umí hodně věcí a není moc drahý, později si třeba pořiďte PIC 16C71, ten toho umí daleko víc, např. má integrované A/D převodníky, ale je drahý (400Kč).

Vývojové prostředí, Nejlépe MPLAB od firmy microchip na www.microchip.com lze stáhnout volnou verzi,nebo stačí obyčejný textový editor (PS Pad, notepad atd.) a kompilátor MPASM který je také na www.microchip.com.

Hodí se taky Instrukční soubor a popis Speciálních funkčních registrů (SFR)

Program blikače

;------------------------------------------------------------------------
;za středníky se píšou poznámky ty 
;překladač ignoruje


 INCLUDE  "P16F84A.INC"     ;vložení předem 
                            ;definováných proměnných, 
                            ;jsou obsaženy v MPLABu 
                            ;pro každý procesor
 LIST     P=16F84A, R=DEC   ;nastavení základní 
                            ;číselné soustavy, 
                            ;když nenapíšeme za 
                            ;číslo nic, bude to 
                            ;bráno v desítkové 
                            ;soustavě 

;------------------------------------------------------------------------
;	definice proměnných
;------------------------------------------------------------------------

pa      equ	0x05      ;port A-má tuto adresu 
offram	equ	0x0C	  ;volné místo v paměti
tmp0	equ	26D	  ;registry pro 
tmp1	equ	29D       ;časovou smyčku
tmp2	equ	28D       ;
tmp3	equ	27D       ;

;------------------------------------------------------------------------
;	definice bitů
;------------------------------------------------------------------------

#define   led	pa,0  ;ledka, definování 
                      ;kde máme připojenou 
                      ;ledku,abychom to
                      ;nemuseli vypisovat  

;------------------------------------------------------------------------
;	nastavení I/O portů
;------------------------------------------------------------------------

	ORG	00h         ;začátek programu

	bsf	STATUS,RP0 ;přepnutí do druhé banky 
                           ;pro nastavení portů
	clrf	TRISA	   ;nastavení PA portu 
                           ;jako výstup					
	clrf	TRISB	   ;nastavení PB portu 
                           ;jako výstup
	bcf	STATUS,RP0 ;návrat

;------------------------------------------------------------------------
;	hlavní program 
;------------------------------------------------------------------------

start     BSF       led       ;rožni LED(nastaví 
                              ;pa,0 do 1)
          CALL      cekej5    ;počká 1s 
                              ;(podprogram čekání)
          BCF       led       ;zhasni LED
          CALL      cekej5    ;počká 1s	
          GOTO      start     ;jdi na start 
                              ;(opakuje dokola)

;------------------------------------------------------------------------
;	podprogram cekaní 
;------------------------------------------------------------------------
;cekej2   Wx10ms    max 255
;cekej1   10ms
;cekej3   1ms
;cekej4   Wx1ms     max 255
;cekej5   1s


cekej5    movlw     100d      ;konstanta do W
cekej2    movwf     tmp2      ;cekani Wx10ms
cekej2_0  call      cekej1    ;PP cekej1
          decfsz    tmp2,f    ;odečte 1 a přeskočí 
                              ;další instr., 
                              ;když tmp2=0, 
                              ;f znamená že 
                              ;výsledek se 
                              ;uloźí do stejného 
                              ;registru
          goto	cekej2_0

          return    ;návrat z podprogramu

cekej1    movlw     10        ;cekani 10ms
          goto      cekej4
cekej3    MOVLW     1         ;cekani 1ms
cekej4    MOVWF     tmp0      ;cekani Wx1ms
cekej_0   MOVLW     249		
          MOVWF     tmp1			
cekej_1   CLRWDT
          DECFSZ    tmp1,F
          GOTO      cekej_1			
          DECFSZ    tmp0,F	
          GOTO      cekej_0			
;tuto čekací smyčku mám jako unverzální
          RETURN    ;návrat z podprogramu

;------------------------------------------------------------------------	

END	;úplný konec programu	

záleží na velikosti písmen u návěstí a jmen registrů!!!

Tohle stačí zkompilovat, nahrát do PIC a bude to blikat.

Důležité věci

W-pracovní registr

   movlw     100d ;konstanta do W
   movwf     tmp2 ;W do f kde f je tmp2
   ;když chceme někam uložit hodnotu
   ;musíme přes W jinak to nelze 
   

f-obecně nějaký registr, místo toho pišeme třeba tmp2

   movwf     tmp2 ;W do f kde f je tmp2
   

proměnná-pro nás smysluplný název registru a pro překladač je to číslo registru-program je přehlednější

   tmp2	equ	28D
   
   movwf    tmp2  ;je to úplně
   movwf    28D   ;stejné 

definice bitu-podobné jako proměnná-zpřehledňuje program

pa        equ	05h
#define   led	pa,0   

BSF       led     ;zase je to 
BSF       05h,0   ;stejné

Banka registrů-PIC16F84 má 2 (0 a 1),jsou to registry 0h-2Fh v bance 0 a 80h-AFh v bance 1, přepínají se v registru status bitem RP0.

| Nahoru | Home | NF technika | Zdroje | Mikroprocesory | Měření | Ostatní | Guitar Pro | Eagle | Něco o mně |