Programování mikrokontrolerů PIC 16F84A

Slides:



Advertisements
Podobné prezentace
Výukový program: Mechanik - elektrotechnik Název programu: Číslicová technika - mikroprocesory III. ročník Mikrořadiče Vypracoval : Vlastimil Vlček Projekt.
Advertisements

Programování mikrokontrolerů PIC 16F84A
Programování mikrokontrolerů PIC 16F84A
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
Technologie počítačů 4. Sběrnice © Milan Keršlágerhttp:// Obsah: ● ISA, EISA, VL-BUS,
CZ.1.07/1.5.00/ Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/ Střední odborná škola elektrotechnická, Centrum odborné přípravy.
Odborný výcvik ve 3. tisíciletí Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky MEIII Dekodéry pro.
Výukový materiál zpracovaný v rámci projektu EU peníze školám Registrační číslo projektu:CZ.1.07/1.4.00/ Šablona:III/2 Inovace a zkvalitnění výuky.
Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen.
PAMĚTI Paměť počítače je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje Paměť počítače je zařízení, které slouží k ukládání.
Orbis pictus 21. století Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Vnitřní paměti.
MIKROPROCESOROVÁ TECHNIKA
Microsoft Excel verze 2010 Mgr. Přemysl Kejzlar.
Název projektu: Moderní výuka s využitím ICT
Počet čísel Počet hodnot
Proudové chrániče.
Inicializace portů mikrokontroléru
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
IDENTIFIKÁTOR MATERIÁLU: EU
Výukový materiál zpracován v rámci projektu
Obrázky Ram Rom Nástupci ROM Počítačová pamět Obrázky Paměti Ram rom
Kurz algoritmizace a programování v jazyce C
Název projektu: Moderní výuka s využitím ICT
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Název projektu: Moderní výuka s využitím ICT
jednočipových počítačů II
Název projektu: Moderní výuka s využitím ICT
Výukový materiál zpracován v rámci projektu
Databáze MS ACCESS 2010.
Řadič Orbis pictus 21. století
Výukový materiál zpracován v rámci projektu
Financováno z ESF a státního rozpočtu ČR.
Datové typy v jazyce C Datové typy void skalární aritmetické
Mikroprocesor.
PLC Časovače a čítače.
Souběh Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Lexikální atomy jazyka C
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Výukový materiál zpracován v rámci projektu
NÁZEV ŠKOLY: Základní škola a Mateřská škola Nedvědice, okr
SÁRA ŠPAČKOVÁ MARKÉTA KOČÍBOVÁ MARCELA CHROMČÁKOVÁ LUKÁŠ BARTOŠ B3E1
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
jednočipových počítačů I
Výukový materiál zpracován v rámci projektu
Stavební fakulta ČVUT, B407
Paměti typu ROM.
Výukový materiál zpracován v rámci projektu
Číslicové měřící přístroje
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
Programovatelné automaty (Programmable logic controllers – PLC)
Digitální učební materiál
Logické funkce a obvody
Aritmetické operace s binárními čísly
Datové typy v jazyce C Datové typy void skalární aritmetické
Název projektu: Moderní výuka s využitím ICT
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Využití ICT pro rozvoj klíčových kompetencí CZ.1.07/1.5.00/
Projekt Anglicky v odborných předmětech, CZ.1.07/1.3.09/
Matematika – 7.ročník Mnohočleny VY_32_INOVACE_
Projekt Anglicky v odborných předmětech, CZ.1.07/1.3.09/
Projekt Anglicky v odborných předmětech, CZ.1.07/1.3.09/
Projekt Anglicky v odborných předmětech, CZ.1.07/1.3.09/
Algoritmizace a datové struktury (14ASD)
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Transkript prezentace:

Programování mikrokontrolerů PIC 16F84A NC řídící systémy

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

Vlastnosti PIC 16F84A 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 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í

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)

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

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)

Popis programu - Deklarace konst. vystup EQU h'06' i1 EQU h'20' i2 EQU 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 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)

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

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

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.

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

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

Popis programu - tělo programu zacatek BSF vystup,0 CALL casovac BCF vystup,0 GOTO zacatek casovac MOVLW 255 MOVWF i2 pauza2 MOVLW 255 MOVWF i1 pauza1 DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return end CALL - Volání podprogramu Casovac - návěstí definované v programu

Popis programu - tělo programu zacatek BSF vystup,0 CALL casovac BCF vystup,0 GOTO zacatek casovac MOVLW 255 MOVWF i2 pauza2 MOVLW 255 MOVWF i1 pauza1 DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return end Casovac, pauza2, 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 vystup,0 CALL casovac BCF vystup,0 GOTO zacatek casovac MOVLW 255 MOVWF i2 pauza2 MOVLW 255 MOVWF i1 pauza1 DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return end 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 (slovo) ≠0 - pokračuje na další instrukci

Popis programu - tělo programu zacatek BSF vystup,0 CALL casovac BCF vystup,0 GOTO zacatek casovac MOVLW 255 MOVWF i2 pauza2 MOVLW 255 MOVWF i1 pauza1 DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 return end GOTO pauza1 - 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 vystup,0 CALL casovac BCF vystup,0 GOTO zacatek casovac MOVLW 255 MOVWF i2 pauza2 MOVLW 255 MOVWF i1 pauza1 DECFSZ i1,1 goto pauza1 DECFSZ i2,1 goto pauza2 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 diody 00000001 - 00000010 - 00000100 - 00001000 - 00010000 - 00100000 - 01000000 - 10000000 a znova 00000001..