1 / 23

Programování mikrokontrolerů PIC 16F84A

Programování mikrokontrolerů PIC 16F84A. 2-ŘSVS. Vlastnosti PIC 16F84A. 13 vstupně výstupních pinů 5 + 8 (dva porty) PORT A RA0 – RA4 PORT B RB0 – RB7 MCLR – vstup resetovacího signálu Vss (+), Vdd (-) – Napájecí piny OSC1/CLKIN – pin pro vstup taktovacího oscilátoru

winda
Télécharger la présentation

Programování mikrokontrolerů PIC 16F84A

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programování mikrokontrolerů PIC 16F84A 2-ŘSVS

  2. Vlastnosti PIC 16F84A 13 vstupně výstupních pinů 5 + 8 (dva porty) • PORT A RA0 – RA4 PORT B RB0 – RB7 • MCLR – vstup resetovacího signálu • Vss (+), Vdd (-) – Napájecí piny • OSC1/CLKIN – pin pro vstup taktovacího oscilátoru • OSC2/CLKOUT – výstup taktovacího signálu (synchronizace) RA1 RA0 OSC1/CLKIN OSC2/CLKOUT Vdd RB7 RB6 RB5 RB4 RA2 RA3 RA4/T0CKI MCLR Vss RB0/INT RB1 RB2 RB3

  3. Popis programu - Konfig. slovo INCLUDE "P16F84A.INC" LIST P=16F84A, R=DEC __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC • INCLUDE, která do kódu vkládá obsah souboru P16F84A.INC. Tento soubor v sobě obsahuje deklarace konstant. PCL EQU H'0002‚ STATUS EQU H'0003‚ FSR EQU H'0004‚ PORTA EQU H'0005' … PCL – název konstanty EQU – direktiva pro přiřazení ekviv. názvu H'0005‚ - adresa registru (HEX)

  4. Popis programu - Konfig. slovo INCLUDE "P16F84A.INC" LIST P=16F84A, R=DEC __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC • LIST - obsahuje informace pro překladač - pro jaký uP překládá (P) - jakou má použít výchozí číselnou soustavu (R) DEC dekadická HEX šestnáctková OCT osmičková.

  5. Popis programu - Konfig. slovo INCLUDE "P16F84A.INC" LIST P=16F84A, R=DEC __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC • Konfigurační slovo • _CP_OFF - ochrana proti vyčtení programu (vypnutá) code protection • _WDT_OFF - Watchdog timer - ochrana proti "zacyklení" (vypnutá) • _PWRTE_ON - ochrana proti přepsání programu (protection write) • _XT_OSC - definice oscilátoru (XT - 4MHz)

  6. Popis programu - Deklarace konst. vystup EQU h'06' i1 EQU h'20' i2 EQU h'21' i3 EQU h'22' i4 EQU h'23' • EQU - direktiva pro přiřazení ekvivalentního názvu H'06' - adresa registru (HEX) 06 - PORTB - vstupně výstupní registr (stav je shodný se stavem na pinech pouzdra) od 20+ prostor pro vlastní konstanty

  7. Popis programu - hlavička BSF STATUS,RP0 MOVLW b'00000000' MOVWF TRISB BCF STATUS,RP0 • BSF STATUS,RP0 - Přesun do BANK 1 (pro nastavování uP) • BSF - Bit Set F - nastavení bitu v paměti (F) do stavu 1 • STATUS - označení bajtu (viz konfig. Slovo) • RPO - označení bitu v bajtu (stejně by šlo napsat i BSF H'0003'.3)

  8. Popis programu - hlavička BSF STATUS,RP0 MOVLW b'00000000' MOVWF TRISB BCF STATUS,RP0 • MOVLW b'00000000' - MOVe Literal to W - Přesun zapsaného čísla do registru W (něco jako RAM) • V tomto případě binární číslo, 8 bitů, hodnota 0 (výstupy) • Lze zapsat i jako DEC, HEX, ale není tak přehledné. • Při zadávání konstant v těle programu budeme využívat DEC

  9. Popis programu - hlavička BSF STATUS,RP0 MOVLW b'00000000' MOVWF TRISB BCF STATUS,RP0 • MOVWF TRISB - MOVe W to F - Přesun čísla z registru W do paměti (F) • TRISB - adresa kam zapsat hodnotu z W (střadač) • TRISB - konfigutační HW registr pro nastavení vstupů a výstupů portu B (RB) • Bit 0 - RB0 .....bit 7 - RB7 • 0 - výstup, 1 - Vstup

  10. Popis programu - hlavička BSF STATUS,RP0 MOVLW b'00000000' MOVWF TRISB BCF STATUS,RP0 • BCF STATUS,RP0 - Přesun zpět do BANK 0 • BCF - Bit Clear F - nastavení bitu do v paměti (F) do stavu 0 • Stejné jako BSF, ale bit nuluje. • V hlavičce se nastavují i jiné registry, o nich ale až později.

  11. Popis programu - tělo programu MOVLW 1 MOVWF vystup MOVLW 10 MOVWF i4 zacatek MOVLW 8 MOVWF i3 leva RLF vystup,1 CALL casovac DECFSZ i3,1 goto leva MOVLW 8 MOVWF i3 • MOVLW - MOVe Lieral to W - načte jedničku do střadače

  12. Popis programu - tělo programu MOVLW 1 MOVWF vystup MOVLW 10 MOVWF i4 zacatek MOVLW 8 MOVWF i3 leva RLF vystup,1 CALL casovac DECFSZ i3,1 goto leva MOVLW 8 MOVWF i3 • MOVWF - MOVe W to F (paměť) - uloží obsah střadače (1) do paměti. Proměnná s názvem Výstup (EQU h 0006)

  13. Popis programu - tělo programu MOVLW 1 MOVWF vystup MOVLW 10 MOVWF i4 zacatek MOVLW 8 MOVWF i3 leva RLF vystup,1 CALL casovac DECFSZ i3,1 goto leva MOVLW 8 MOVWF i3 • MOVLW - MOVe Lieral to W - načte desítku do střadače

  14. Popis programu - tělo programu MOVLW 1 MOVWF vystup MOVLW 10 MOVWF i4 zacatek MOVLW 8 MOVWF i3 leva RLF vystup,1 CALL casovac DECFSZ i3,1 goto leva MOVLW 8 MOVWF i3 • MOVWF - MOVe W to F (paměť) - uloží obsah střadače (10) do paměti. Proměnná s názvem i4 (EQU h ....) • Když výstup=1 svítí nám první LED 00000001 - počáteční stav • Do i4 jsme si zadali počet průběhů programu viz. níže

  15. Popis programu - tělo programu MOVLW 1 MOVWF vystup MOVLW 10 MOVWF i4 zacatek MOVLW 8 MOVWF i3 leva RLF vystup,1 CALL casovac DECFSZ i3,1 goto leva MOVLW 8 MOVWF i3 • zacatek - návěstí , uložit do i3 hodnotu 8 - proč zrovna 8?

  16. Popis programu - tělo programu MOVLW 1 MOVWF vystup MOVLW 10 MOVWF i4 zacatek MOVLW 8 MOVWF i3 leva RLF vystup,1 CALL casovac DECFSZ i3,1 goto leva MOVLW 8 MOVWF i3 • leva - návestí • RLF - Rotation Left F (paměť) - z 00000001 vznikne 00000010 jedná se o posunování (SHIFT) konstanty, nebo také násobení dvěmi.

  17. Popis programu - tělo programu MOVLW 1 MOVWF vystup MOVLW 10 MOVWF i4 zacatek MOVLW 8 MOVWF i3 leva RLF vystup,1 CALL casovac DECFSZ i3,1 goto leva MOVLW 8 MOVWF i3 • CALL casovac - volání podprogramu s časovou prodlevou (maření cyklů) • Po dokončení podprogramu pokračuje program na dalším řádku (DECFSZ i3,1)

  18. Popis programu - tělo programu MOVLW 1 MOVWF vystup MOVLW 10 MOVWF i4 zacatek MOVLW 8 MOVWF i3 leva RLF vystup,1 CALL casovac DECFSZ i3,1 goto leva MOVLW 8 MOVWF i3 • DECFSZ i3,1 - DECrement F(paměť) Skip if Zero • Odečte od i3 jedničku, porovná s nulou, pokud se nerovná nule, pokračuje normálně dál. • Až odečte jedničku tolikrát, že i3=0 - přeskočí následující instrukci.

  19. Popis programu - tělo programu MOVLW 1 MOVWF vystup MOVLW 10 MOVWF i4 zacatek MOVLW 8 MOVWF i3 leva RLF vystup,1 CALL casovac DECFSZ i3,1 goto leva MOVLW 8 MOVWF i3 • GOTO - Skok v programu na místo dané návěstím (leva) • V případě, že v minulém kroku bylo i3=0 byla tato instrukce přeskočena - Jsme na konci 10000000 a musíme obrátit směr pohybu

  20. Popis programu - tělo programu MOVLW 1 MOVWF vystup MOVLW 10 MOVWF i4 zacatek MOVLW 8 MOVWF i3 leva RLF vystup,1 CALL casovac DECFSZ i3,1 goto leva MOVLW 8 MOVWF i3 • Opět nahrání hodnoty 8 do střadače a z něj poté do i3 (pro pohyb do leva (viz. Pokračování programu)

  21. Popis programu - tělo programu prava RRF vystup,1 CALL casovac DECFSZ i3,1 goto prava DECFSZ i4,1 GOTO zacatek GOTO konec • prava - návěstí • RRF Rotation Right F - rotace doprava - dělení dvěmi 01000000 - 00100000

  22. Popis programu - tělo programu casovac MOVLW 255 MOVWF i2 pauza2 MOVLW 100 MOVWF i1 pauza1 DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return konec CLRF vystup end • "Známý" časovač z minulé úlohy • CLRF CLeaR F - Vynuluje registr (v našem případě výstup - zhasnout všechny LED)

  23. ÚKOL • Rozšířit úlohu -2 LED diody naráz na kraji zůstanou svítit obě

More Related