1 / 25

Programování mikrokontrolerů PIC 16F84A

Programování mikrokontrolerů PIC 16F84A. 3-ŘSVS. Program - cíl. Zapojení tlačítek Po zmáčknutí pravého tlačítka - LED 0-7 Po zmáčknutí levého tlačítka - LED 7-0 Jinak neprovádět na výstupech žádné změny. Program - princip. Stále dokola testovat, zda nebylo zmáčknuto tlačítko

mandy
Download Presentation

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 3-ŘSVS

  2. Program - cíl • Zapojení tlačítek • Po zmáčknutí pravého tlačítka - LED 0-7 • Po zmáčknutí levého tlačítka - LED 7-0 • Jinak neprovádět na výstupech žádné změny

  3. Program - princip • Stále dokola testovat, zda nebylo zmáčknuto tlačítko • Pokud ano, odskok programu na projetí LED příslušným směrem • Využití RRF a RLF jako u minulého programu

  4. 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

  5. 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)

  6. 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á.

  7. 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)

  8. Popis programu - Deklarace konst. vystup EQU h'06' i1 EQU h'20' i2 EQU h'21' i3 EQU h'22' • 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

  9. Popis programu - hlavička BSF STATUS,RP0 MOVLW b'00001010' MOVWF TRISA 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)

  10. Popis programu - hlavička BSF STATUS,RP0 MOVLW b'00001010' MOVWF TRISA MOVLW b'00000000' MOVWF TRISB BCF STATUS,RP0 • MOVLW b'00001010' - 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) • MOVWF TRISA - MOVe W to F - Přesun čísla z registru W do paměti (F) • TRISA - adresa kam zapsat hodnotu z W (střadač) • TRISA - konfigutační HW registr pro nastavení vstupů a výstupů portu A (RA) • Bit 0 - RA0 .....bit 7 - RA7 • 0 - výstup, 1 - Vstup

  11. Popis programu - hlavička BSF STATUS,RP0 MOVLW b'00001010' MOVWF TRISA 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) • 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

  12. Popis programu - hlavička BSF STATUS,RP0 MOVLW b'00001010' MOVWF TRISA 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.

  13. Popis programu - tělo programu kama CLRF PORTA BTFSS PORTA,1 GOTO shp BTFSS PORTA,3 GOTO shl GOTO kama shp MOVLW 128 MOVWF vystup CALL casovac doprava RRF vystup,1 CALL casovac BTFSS vystup,0 GOTO doprava CLRF vystup GOTO kama • Kama - návěstí (kudy) • CLRF - CLeaR F - vynuluje obsah bajtu

  14. Popis programu - tělo programu kama CLRF PORTA BTFSS PORTA,1 GOTO shp BTFSS PORTA,3 GOTO shl GOTO kama shp MOVLW 128 MOVWF vystup CALL casovac doprava RRF vystup,1 CALL casovac BTFSS vystup,0 GOTO doprava CLRF vystup GOTO kama • BTFSS - Bit Test F Skip if Set - otestuje hodnotu bitu PORTA,1 • 1 - přeskočí následující instrukci • 0 - pokračuje normálně dále na následující instrukci

  15. Popis programu - tělo programu kama CLRF PORTA BTFSS PORTA,1 GOTO shp BTFSS PORTA,3 GOTO shl GOTO kama shp MOVLW 128 MOVWF vystup CALL casovac doprava RRF vystup,1 CALL casovac BTFSS vystup,0 GOTO doprava CLRF vystup GOTO kama • GOTO - skok v programu na návěstí • Shl - návěstí pro "had doleva"

  16. Popis programu - tělo programu kama CLRF PORTA BTFSS PORTA,1 GOTO shp BTFSS PORTA,3 GOTO shl GOTO kama shp MOVLW 128 MOVWF vystup CALL casovac doprava RRF vystup,1 CALL casovac BTFSS vystup,0 GOTO doprava CLRF vystup GOTO kama • BTFSS - Bit Test F Skip if Set - otestuje hodnotu bitu PORTA,3 • 1 - přeskočí následující instrukci • 0 - pokračuje normálně dále na následující instrukci

  17. Popis programu - tělo programu kama CLRF PORTA BTFSS PORTA,1 GOTO shp BTFSS PORTA,3 GOTO shl GOTO kama shp MOVLW 128 MOVWF vystup CALL casovac doprava RRF vystup,1 CALL casovac BTFSS vystup,0 GOTO doprava CLRF vystup GOTO kama • GOTO - skok v programu na návěstí • Shp - návěstí pro "had doprava"

  18. Popis programu - tělo programu kama CLRF PORTA BTFSS PORTA,1 GOTO shp BTFSS PORTA,3 GOTO shl GOTO kama shp MOVLW 128 MOVWF vystup CALL casovac doprava RRF vystup,1 CALL casovac BTFSS vystup,0 GOTO doprava CLRF vystup GOTO kama • GOTO - skok v programu na návěstí kama • Kama - program opět zjišťuje zda nebylo stisknuto tlačítko • Z cyklu se odskočí až když je nějaké tlačítko zmáčknuto

  19. Popis programu - tělo programu kama CLRF PORTA BTFSS PORTA,1 GOTO shp BTFSS PORTA,3 GOTO shl GOTO kama shp MOVLW 128 MOVWF vystup CALL casovac doprava RRF vystup,1 CALL casovac BTFSS vystup,0 GOTO doprava CLRF vystup GOTO kama • Shp - návěstí shift na pravo • Nastavení (SET) posledního bitu, aby se mohlo "shiftovat" doprava • Lze zapsat i BSF vystup,7

  20. Popis programu - tělo programu kama CLRF PORTA BTFSS PORTA,1 GOTO shp BTFSS PORTA,3 GOTO shl GOTO kama shp MOVLW 128 MOVWF vystup CALL casovac doprava RRF vystup,1 CALL casovac BTFSS vystup,0 GOTO doprava CLRF vystup GOTO kama • CALL casovac - volání podprogramu pro vytvoření časové prodlevy

  21. Popis programu - tělo programu kama CLRF PORTA BTFSS PORTA,1 GOTO shp BTFSS PORTA,3 GOTO shl GOTO kama shp MOVLW 128 MOVWF vystup CALL casovac doprava RRF vystup,1 CALL casovac BTFSS vystup,0 GOTO doprava CLRF vystup GOTO kama • Doprava - návěstí (ukazatel) • RRF - Rotate Right F (paměť) posun doprava (jako minule) • CALL casovac - volání podprogramu pro časovou prodlevu

  22. Popis programu - tělo programu kama CLRF PORTA BTFSS PORTA,1 GOTO shp BTFSS PORTA,3 GOTO shl GOTO kama shp MOVLW 128 MOVWF vystup CALL casovac doprava RRF vystup,1 CALL casovac BTFSS vystup,0 GOTO doprava CLRF vystup GOTO kama • BTFSS - otestuje jestli je již nastaven nultý bit v bajtu výstup (konec) • 1- dále již neposouvat - vynulovat výstup, odskok na "kama" • 0 - ještě posouvat (nedokončeno) odskok na "doprava"

  23. Popis programu - tělo programu shl MOVLW 1 MOVWF vystup CALL casovac doleva RLF vystup,1 CALL casovac BTFSS vystup,7 GOTO doleva CLRF vystup GOTO kama • Podobně jako u shp • Na výstup nastavuji nejprva nultý bit ( lze i BSF vystup,0) • Shiftuje se doleva • Testuje se sedmý bit výstupu

  24. 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 end • "Známý" časovač z minulých úloh

  25. ÚKOL Připojit spínače na jiné piny Prohodit funkci tlačítek Pokud jsou zmáčknuty obě jet tam a zpět (ochrana proti záchvěvům)

More Related