Programovn mikrokontroler PIC 16 F 84 A NC

  • Slides: 19
Download presentation
Programování mikrokontrolerů PIC 16 F 84 A NC řídící systémy

Programování mikrokontrolerů PIC 16 F 84 A NC řídící systémy

Vlastnosti PIC 16 F 84 A 13 vstupně výstupních pinů 5 + 8 (dva

Vlastnosti PIC 16 F 84 A 13 vstupně výstupních pinů 5 + 8 (dva porty) PORT A RA 0 – RA 4 PORT B RB 0 – RB 7 RA 2 RA 3 RA 4/T 0 CKI MCLR Vss RB 0/INT RB 1 RB 2 RB 3 • MCLR – vstup resetovacího signálu • Vss (-), Vdd (+) – Napájecí piny • OSC 1/CLKIN – pin pro vstup taktovacího oscilátoru • OSC 2/CLKOUT – výstup taktovacího signálu (synchronizace) RA 1 RA 0 OSC 1/CLKIN OSC 2/CLKOUT Vdd RB 7 RB 6 RB 5 RB 4

Vlastnosti PIC 16 F 84 A • Pouze 35 instrukcí • Každá instrukce zabírá

Vlastnosti PIC 16 F 84 A • Pouze 35 instrukcí • Každá instrukce zabírá jeden strojový cyklus (instrukce přerušující běh programu - dva cykly) • doba strojového cyklu je rovna převrácené hodnotě kmitočtu oscilátoru, která je vydělena čtyřma. (běžně • krystaly 4 MHz tedy 1/(4 Mhz/4) = 1 us. ) • maximální frekvence 20 MHz - doba strojového cyklu 200 ns, 1/(20 Mhz/4) = 200 ns • 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í

Popis programu - Konfig. slovo INCLUDE LIST __CONFIG "P 16 F 84 A. INC"

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

Popis programu - Konfig. slovo INCLUDE LIST __CONFIG "P 16 F 84 A. INC"

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

Popis programu - Konfig. slovo INCLUDE LIST __CONFIG "P 16 F 84 A. INC"

Popis programu - Konfig. slovo INCLUDE LIST __CONFIG "P 16 F 84 A. INC" P=16 F 84 A, R=DEC _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 - 4 MHz)

Popis programu - Deklarace konst. vystup i 1 i 2 EQU EQU h'06' h'20'

Popis programu - Deklarace konst. vystup i 1 i 2 EQU EQU h'06' h'20' h'21' • Direktiva EQU (podobně jako u INCLUDE, ale zde definujem vlastní proměnné) • Vystup - název konstanty • 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

Popis programu - hlavička BSF MOVLW MOVWF BCF STATUS, RP 0 b'0000' TRISB STATUS,

Popis programu - hlavička BSF MOVLW MOVWF BCF STATUS, RP 0 b'0000' TRISB STATUS, RP 0 • BSF STATUS, RP 0 - Přesun do BANK 1 (pro nastavování u. P) – 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)

Popis programu - hlavička BSF MOVLW MOVWF BCF STATUS, RP 0 b'0000' TRISB STATUS,

Popis programu - hlavička BSF MOVLW MOVWF BCF STATUS, RP 0 b'0000' TRISB STATUS, RP 0 • MOVLW b'0000' - 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

Popis programu - hlavička BSF MOVLW MOVWF BCF STATUS, RP 0 b'0000' TRISB STATUS,

Popis programu - hlavička BSF MOVLW MOVWF BCF STATUS, RP 0 b'0000' TRISB STATUS, RP 0 • 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 - RB 0. . . bit 7 - RB 7 • 0 - výstup, 1 - Vstup

Popis programu - hlavička BSF MOVLW MOVWF BCF STATUS, RP 0 b'0000' TRISB STATUS,

Popis programu - hlavička BSF MOVLW MOVWF BCF STATUS, RP 0 b'0000' TRISB STATUS, RP 0 • BCF STATUS, RP 0 - 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.

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255 MOVWF i 2 MOVLW 255 MOVWF i 1 DECFSZ i 1, 1 goto pauza 1 DECFSZ i 2, 1 goto pauza 2 pauza 1 vystup, 0 casovac zacatek return end • Zacatek - Návěstí - Používá se při skocích v programu (GOTO, CALL)

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255 MOVWF i 2 MOVLW 255 MOVWF i 1 DECFSZ i 1, 1 goto pauza 1 DECFSZ i 2, 1 goto pauza 2 pauza 1 vystup, 0 casovac zacatek return end • BSF vystup, 0 – Nastaví bit vystup, 0 (ekviv. RB 0 viz. deklarace konstant) vystup EQU h'06' – Vystup - ekvivalent PORTB, , 0 - označení bitu v byte PORTB

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255 MOVWF i 2 MOVLW 255 MOVWF i 1 DECFSZ i 1, 1 goto pauza 1 DECFSZ i 2, 1 goto pauza 2 pauza 1 vystup, 0 casovac zacatek return end • CALL - Volání podprogramu – Casovac - návěstí definované v programu

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255 MOVWF i 2 MOVLW 255 MOVWF i 1 DECFSZ i 1, 1 goto pauza 1 DECFSZ i 2, 1 goto pauza 2 pauza 1 vystup, 0 casovac zacatek return end • Casovac, pauza 2, pauza - návěstí (značka ukazující na pozici v programu na kterou se lze odvolávat) • MOVLW, MOVWF - zaplnění konstant pro podprogram zpoždění

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255 MOVWF i 2 MOVLW 255 MOVWF i 1 DECFSZ i 1, 1 goto pauza 1 DECFSZ i 2, 1 goto pauza 2 pauza 1 vystup, 0 casovac zacatek return end • DECFSZ i 1, 1 - DECrement F Skip if Zero – Odečte od i 1 jedničku a následně porovná s nulou • =0 - přeskočí následující instrukci (slovo) • ≠ 0 - pokračuje na další instrukci

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255 MOVWF i 2 MOVLW 255 MOVWF i 1 DECFSZ i 1, 1 goto pauza 1 DECFSZ i 2, 1 goto pauza 2 pauza 1 vystup, 0 casovac zacatek return end • GOTO pauza 1 - skok na návěstí – Lze zapsat i goto $-1 skok o 1 řádek zpět (lze záporná i kladná celá čísla)

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255

Popis programu - tělo programu zacatek BSF CALL BCF CALL GOTO casovac MOVLW 255 MOVWF i 2 MOVLW 255 MOVWF i 1 DECFSZ i 1, 1 goto pauza 1 DECFSZ i 2, 1 goto pauza 2 pauza 1 vystup, 0 casovac zacatek return end • RETURN - návrat z podprogramu – Program se vrátí za instrukci CALL, která volala podprogram • END - konec programu – Musí být i tam, kde se program nikdy k této instrukci nedostane.

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

ÚKOL • Rozšířit program tak, aby byl vytvořen světelný "had" • Rozsvěcet postupně LED diody • 00000001 - 00000010 - 000001000 - 00010000 - 001000000 - 10000000 a znova 00000001. .