Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Programování mikrokontrolerů PIC 16F84A Řízení výrobních strojů a zařízení.

Podobné prezentace


Prezentace na téma: "Programování mikrokontrolerů PIC 16F84A Řízení výrobních strojů a zařízení."— Transkript prezentace:

1 Programování mikrokontrolerů PIC 16F84A Řízení výrobních strojů a zařízení

2 Vlastnosti PIC 16F84A 13 vstupně výstupních pinů (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) RA2 RA3 RA4/T0CKI MCLR Vss RB0/INT RB1 RB2 RB3 RA1 RA0 OSC1/CLKIN OSC2/CLKOUT Vdd RB7 RB6 RB5 RB4

3 Vlastnosti PIC 16F84A Pouze 35 instrukcí Každá instrukce zabírá jeden strojový cyklus (instrukce měnící přirozený běh programu - dva cykly) doba strojového cyklu je rovna převrácené hodnotě kmitočtu oscilátoru, která je vydělena čtyřmi (používáme krystaly 4MHz tedy 1/(4Mhz/4) = 1us.) maximální frekvence 20MHz - doba strojového cyklu 200ns, 1/(20Mhz/4) = 200ns programová paměť o velikosti 1024 slov 68 bytů paměť Data RAM 64 bytů paměť Data EEPROM 15 speciálních hardwarových registrů čtyři zdroje přerušení

4 Popis programu - konfigurace INCLUDE = instrukce, která do kódu vkládá obsah souboru P16F84A.INC. Tento soubor v sobě obsahuje deklarace konstant, např. PCLEQUH'0002‚ STATUSEQUH'0003‚ FSREQUH'0004‚ PORTAEQUH'0005' … PCL – název konstanty EQU – direktiva pro přiřazení ekviv. názvu H'0005’ – hodnota 5, zadaná v šestnáctkové soustavě (HEX) INCLUDE "P16F84A.INC" LISTP=16F84A, R=DEC __CONFIG_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

5 Popis programu - konfigurace 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á INCLUDE "P16F84A.INC" LISTP=16F84A, R=DEC __CONFIG_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

6 Popis programu - konfigurace __CONFIG = nastavení konfiguračního slova - _CP_OFF= code protection - ochrana proti vyčtení programu (vypnutá) - _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) INCLUDE "P16F84A.INC" LISTP=16F84A, R=DEC __CONFIG_CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

7 Popis programu - deklarace konst. Direktiva EQU (podobně jako u INCLUDE, ale zde definujeme vlastní proměnné) - vystup - název konstanty - EQU - direktiva pro přiřazení ekvivalentního názvu - H'06' - adresa registru (HEX) Na adrese 6 je umístěn vstupně výstupní registr PORTB - vystup je tedy jen další označení pro PORTB Počínaje adresou 12 (tj. 0C HEX) je paměť určená k použití programem, od pozice 20 HEX můžeme tedy umístit vlastní proměnné s názvy i1, i2 vystupEQUh'06' i1EQUh'20' i2EQUh'21'

8 Popis programu - hlavička 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. konfigurace) - RPO - označení bitu v bajtu (stejně by šlo napsat i BSF H'0003'.3) BSFSTATUS,RP0 MOVLWb' ' MOVWFTRISB BCFSTATUS,RP0

9 Popis programu - hlavička MOVLW b' ' … MOVe Literal to W = přesun zapsaného čísla do registru W (pracovní registr/střadač, něco jako RAM) –V tomto případě je číslo zadané binárně, 8 bitů, hodnota 0 (výstupy) –Lze zapsat i jako DEC, HEX, ale není to tak přehledné. –Při zadávání konstant v těle programu budeme využívat DEC BSFSTATUS,RP0 MOVLWb' ' MOVWFTRISB BCFSTATUS,RP0

10 Popis programu - hlavička MOVWF TRISB … MOVe W to F = kopírování hodnoty z registru W do paměti (F) na adresu TRISB (symbolické označení adresy, kam hodnotu zapsat) TRISB - konfigurační HW registr pro nastavení vstupů a výstupů portu B (bity označeny RB7.. RB0) nastavení bitů … 0 - výstup, 1 - vstup BSFSTATUS,RP0 MOVLWb' ' MOVWFTRISB BCFSTATUS,RP0

11 Popis programu - hlavička BCF STATUS,RP0 - Přesun zpět do BANK 0 - BCF - Bit Clear F - nastavení bitu v paměti (F) do stavu 0 - obdobné jako BSF, ale bit se nuluje. V hlavičce se nastavují i jiné registry, o nich ale až později. BSFSTATUS,RP0 MOVLWb' ' MOVWFTRISB BCFSTATUS,RP0

12 Popis programu - tělo programu zacatek – návěstí (značka ukazující pozici v programu na kterou se lze odvolávat) Používá se při skocích v programu (GOTO, CALL) zacatek BSFvystup,0 CALLcasovac BCFvystup,0 CALLcasovac GOTOzacatek casovacMOVLW255 MOVWFi2 pauza2MOVLW255 MOVWFi1 pauza1DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return end

13 Popis programu - tělo programu BSFvystup,0 … n astaví bit 0 proměnné ‘vystup’ do 1 a jelikož máme vystup EQU h'06‚ nastaví se v PORTB bit RB0=1 zacatek BSFvystup,0 CALLcasovac BCFvystup,0 CALLcasovac GOTOzacatek casovacMOVLW255 MOVWFi2 pauza2MOVLW255 MOVWFi1 pauza1DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return end

14 zacatekBSFvystup,0 CALLcasovac BCFvystup,0 CALLcasovac GOTOzacatek casovacMOVLW255 MOVWFi2 pauza2MOVLW255 MOVWFi1 pauza1DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return end Popis programu - tělo programu CALL - volání podprogramu casovac - návěstí definované v programu (název podprogramu)

15 Popis programu - tělo programu casovac, pauza2, pauza1 - návěstí (značka) MOVLW, MOVWF - inicializace konstant podprogramu zpoždění zacatekBSFvystup,0 CALLcasovac BCFvystup,0 CALLcasovac GOTOzacatek casovacMOVLW255 MOVWFi2 pauza2MOVLW255 MOVWFi1 pauza1DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return end

16 Popis programu - tělo programu DECFSZ i1,1 - DECrement F Skip if Zero –Odečte od i1 jedničku a následně porovná s nulou =0 - přeskočí následující instrukci, ≠0 - pokračuje na další instrukci zacatekBSFvystup,0 CALLcasovac BCFvystup,0 CALLcasovac GOTOzacatek casovacMOVLW255 MOVWFi2 pauza2MOVLW255 MOVWFi1 pauza1 DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return end

17 Popis programu - tělo programu GOTO pauza1 - skok na návěstí - l ze zapsat i goto $-1 = skok o 1 řádek zpět (lze psát záporná i kladná celá čísla, přehledné pro krátké skoky) zacatekBSFvystup,0 CALLcasovac BCFvystup,0 CALLcasovac GOTOzacatek casovacMOVLW255 MOVWFi2 pauza2MOVLW255 MOVWFi1 pauza1DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return end

18 Popis programu - tělo programu RETURN - návrat z podprogramu, program se vrátí za instrukci CALL, která volala podprogram E ND - pseudoinstrukce pro překladač, konec překládáného textu zacatekBSFvystup,0 CALLcasovac BCFvystup,0 CALLcasovac GOTOzacatek casovacMOVLW255 MOVWFi2 pauza2MOVLW255 MOVWFi1 pauza1DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return end

19 ÚKOL Rozšířit program tak, aby byl vytvořen světelný "had" Rozsvěcet postupně LED diody a znova


Stáhnout ppt "Programování mikrokontrolerů PIC 16F84A Řízení výrobních strojů a zařízení."

Podobné prezentace


Reklamy Google