Professional Documents
Culture Documents
Pictanf
Pictanf
KÖRNYEZET (KÜLVILÁG)
Adatok és utasítások
Dr. Kónya László: memória
(tároló) tárolása
http://alpha1.obuda.kando.hu/~konya BEMENET KIMENET
beviteli központi kiviteli
konya@novserv.obuda.kando.hu eszközök egység eszközök
Utasítások végrehajtása
PIC MIKROKONTROLLEREK
Algoritmus: hogyan hozzuk létre a kimeneti információit a
bemeneti információból.
ALKALMAZÁSTECHNIKÁJA Program: az algoritmus számítógépen történő megvalósítása,
utasítások sorozata
A program határozza meg hogy mit végezzen el, és ez
Tanfolyami tananyag cserélhető!!!
2000 Megvalósítás: digitális áramkörökkel: MIÉRT két állapottal?
2000.09.02
1 PIC TANFOLYAM 3 PIC TANFOLYAM
BEMENETI
& A B
& & & +
& C i -1
csak 28 év !!! 1=ENG
TELJES ÖSSZEADÓ
Ci
1
+
KAPUZÁS S=A+B+D & 1 &
&
CLOCK V0 V1
1-bites ALU
A B
BEIRÓJEL UTASITÁS = MŰVELETI KÓD + OPERANDUSOK
TÁROLÓSOR=REGISZTER
2 PIC TANFOLYAM 4 PIC TANFOLYAM
1.3 A MIKROSZÁMÍTÓGÉPEK ÁLTALÁNOS FELÉPÍTÉSE 1.5 CISC PROCESSZOROK - MIKROPROGRAMOZÁS
Belső busz
mikrokontroller
ADATBUSZ Latch Adatszámláló DC
= (mikrovezérlő)
Sín, vagy busz: azonos funkciójú vezetékek összessége (cím, Összeadó CÍM BUSZ
Címregiszter A0-A15
adat, és vezérlő busz Boole-logika
Időzítő/számláló egység
Minden utasítás egyszavas
Reset áramkör Aritmetikai - logikai egység
Regiszter fájl szervezés
(ALU) Soros I/O Harvard felépítés két külön
Óragenerátor
Vezérlő egység Párhuzamos I/O LWI (Long Word Instruction) tárolót: egy adat és egy
Utasításszámláló Egyéb Utasítás csővonal (pipelining) programtárolót használ,
Központi egység (CPU)
Egyciklusos utasítások
megszűnik a sorban állás a
Programtároló Adat tároló
memóriáért
Csökkentett utasításkészlet
Cimzés PERIFÉRIÁK
Ortogonális utasításkészlet
A mikrokontroller belső felépítése Nagyobb áteresztő-képesség
Q1 Q2 Q3 Q4 Q1 Q2 Q3 Q4
LOGIKAI: AND, OR, XOR, NOT
OSC1 ARITMETIKAI + SHIFT: ADD, SUB, CLR, DEC, DECSZ,
Q1 INC, INCSZ,RL,RR, SWAP, TEST
Q2
BIT: CLRB, SETB, SB, SNB
Q3
Q4
ADATMOZGATÓ: MOV
OSC2 PROGRAMVEZÉRLŐ: CALL, JMP, NOP, RET, RETI,
1
instruction RETLW
cycle
RAM FELÉPÍTÉSE 1F
7F Példaprogram:ADVBANK.ASM
PIC TANFOLYAM PIC TANFOLYAM
2.8 ÓRAJEL 2.9.1 MICROCHIP RESET ÁRAMKÖRÖK
GENERÁLÁS The Microchip Supervisor
Device Family
Utáp ÚJ!!!
PIC PIC Külső órajel PIC
Ez általában: 4 MHz Push-Pull Push-Pull Open-Drain Open-Drain
OSC1 OSC1 OSC1 Két láb felszabadul (Active Low) (Active High) (no pull-up) (internal pull-up)
Nincs külső RF MCP100/MCP809 MCP101/MCP810 MCP120 MCP130
fosc/4
OSC2 OSC2 OSC2 sugárzás
2.9.2 BROWN-
2.9 RESET KEZELÉS OUT
RESET FELADATA A BELSŐ TÁROLÓK ALAPÁLLAPOTBA HOZÁSA. EHHEZ A HA A TÁPFESZÜLTSÉG RÖVID IDŐRE LEESIK, AZ RESET-ET OKOZ.
BELSŐ ÓRAJEL STABIL MŰKÖDÉSE SZÜKSÉGES!
MI VAN, HA A RESET ALATT ISMÉT LEESIK A FESZÜLTSÉG ? HIBÁS RESET !!!
BEKAPCSOLÁSKOR ELINDUL EGY FÜGGETLEN BELSŐ RC OSZCILLÁTORÓL
A MEGOLDÁS: MINDIG AZ UTOLSÓ TÁPCSÖKKENÉSTŐL INDUL A RESET
MŰKÖDŐ SZAMLÁLÓ (POWER UP TIMER). ENNEK SZEREPE AZ ESETLEGES LASSÚ
FOLYAMAT!
TÁPFESZÜLTSÉG NÖVEKEDÉSÉNEK A KOMPENZÁLÁSA.
AMIKOR EZ TÚLCSORDUL, ELINDUL EGY, AZ OSZCILLÁTOR ESETLEGES LASSÚ
BEREZGÉSE MIATTI HIBÁS MŰKÖDÉS KIVÉDÉSÉT CÉLZÓ MÁSODIK KÉSLETETÉST V DD
BIZTOSÍTÓ SZÁMLÁLÓ (OSC START-UP TIMER) Ez majdnem mindig elegendő ! BV DD Max
Vdd BV DDMin
Internal
Tápfesz (VDD)
V DD Reset 72 ms
MCLR PIC
V DD
További megoldások: BV DDMax
MCLR
BV DDMin
TPWRT •Tranzisztoros áramkör használata
Internal
Power-up Reset
<72ms 72 ms
Timer V DD
TOST BV DDMax
OSC Start-up BV DDMin
Timer
Internal
Reset 72 ms
Reset Működés
Brown-Out védelem
•Külső reset áramkör használata Ez majdnem mindig elegendő !
PIC TANFOLYAM PIC TANFOLYAM
2.10 A TOKOK FELPROGRAMOZÁSA 3. PIC PERIFÉRIÁK
FOGALMAK: PÁRHUZAMOS PROGRAMOZÁS, SOROS PROGRAMOZÁS FEJLESZTŐI VANNAK KÖZÖS ELEMEK („SZÉRIATARTOZÉKOK” ;-)) )
PROGRAMOZÓ, IPARI PROGRAMOZÓ
I/O LÁBAK
PROGRAMOZÓI ÁLLAPOTBA KERÜLÜNK: HA AZ MCLR LÁBAT VPP FESZÜLTSÉGRE
8 BITES SZÁMLÁLÓ/IDŐZÍTÓ (RTCC vagy TMR0)
(12V) EMELJÜK. EZUTÁN A PROGRAMOZÓ BERENDEZÉS A CLOCK LÁBON
ÓRAJELEKKEL ÉRVÉNYESÍTVE ELKÜLD EGY PARANCSOT (PL. 6 BITES A PARANCS), WATCHDOG
MAJD A TOK AZ ÓRAJELLEL ÜTEMEZVE AZ RB7 LÁBÁN KERESZTÜL VÁLASZOL.
CSALÁDELVET MEGVALÓSÍTÓ PERIFÉRIÁK: CSALÁDELV:
HÁROM TOKTÍPUS: OTP (=One Time Programming), EPROM, (ABLAKOS), FLASH TMR1, TMR2 időzítők CPU AZONOS
A/D ADAT ÉS
Soros programozás SOROS I/O PROGRAM MEMÓRIA
PWM MÉRETE
• Csak 2 láb kell a programozáshoz CAPTURE/COMPARE PERIFÉRIÁK SZÁMA
MCLR/VPP
PÁRHUZAMOS (SLAVE) PORT FAJTÁJA
VPP
• RB6 az órajel bemenet I2C/SPI KÜLÖNBÖZIK
VDD VDD
• RB7 az adat be/ki- vagy a parancs bemenet A PERIFÉRIÁK MŰKÖDTETÉSE ÁLTALÁBAN NÉGY REGISZTER SEGÍTSÉGÉVEL
VALÓSÍTHATÓ MEG, EZEK:
VSS VSS
• Parancsok: BEMENETI
KIMENETI
RB6 Clock - Load data (adatírás) ÁLLAPOT (STÁTUSZ)
RB7
- Read data (adatolvasás) VEZÉRLŐ (CONTROL) REGISZEREK
Data/in/out - Begin programming (programozás indul)
PIC16CXX
Command in - End programming (programozás vége) EZEK A REGISZTERFÁJL ADOTT CÍMEIN HELYEZKEDNEK EL
- Increment address (memóriacím növelése)
PIC TANFOLYAM PIC TANFOLYAM
"CLRWDT" Túlcsordulás
A programozó engedélyezése Reset reseteli
a chip-et
RC 8 bites számláló
Programozás, a beírt program ellenőrzése oscillator
Utóosztó
A programozóba helyezett PIC tok olvasása
A tok ürességének (memória + konfigurációs bitek) vizsgálata • Segít, ha a program „elkószál”
OTP tok ürességének vizsgálata
• Saját szabadonfutó RC oszcillátors van
A programozás vagy ellenőrzés során kiírt hibák megnézése
A program memória puffer törlése • WDT programból nem kezelhető, csak a CLRWDT utasítással, ami törli
Konfigurációs bitek törlése • WDT túlcsordulás reszeteli és újraindítja a kontrollert
• Programozható időtartam (time-out period): 18 ms-tól 2.5 sec-ig
Programozó alaphelyzetbe állítása
• SLEEP-ben is működik. A túlcsordulás felébreszti a CPU-t
EPROMOS ÉS FLASH EPROMOS TOKOK PROGRAMOZÁSÁRA IS • WDT egedélyezés/tiltása a programozható biztosítékkal (WDT_ON/OFF)
ALKALMAS !
• Egyszerű 8 bites számláló
FEJLESZTŐI ÉS IPARI PROGRAMOZÓK VANNAK, PICSTART AZ ELŐBBI
KATEGÓRIÁBA TARTOZIK • Mivel saját belső RC oszcillátor működteti, ezért kristályhibát is jelez
Meleg reset: tápfesz. megvan, és úgy reset !!! ! Az egyes megszakításforrások engedélyezése/tiltása az INTCON, PIE1 és
PIE2 regiszterek segítségével lehetséges
! A megszakítások globális engedélyezése/tiltása GIE bittel lehetséges
A STÁTUSZ regiszter T0 (watchdog állítja) és PD (sleep állítja)
! A megszakítás kiszolgálásának kezdetekor a hardver törli a GIE bitet és a
bitje alapján dönthető el: visszatérési címet a verembe rakja
TO PD RESET oka ! A megszakítási esemény az INTCON, PIR1 és PIR2 regiszterek bitjeit állítja
be, Ezeket programból kell törölni!
0 0 WDT időtúlfutás energiatakarékos (SLEEP) üzemben
! RETFIE utasítás GIE-t 1 be állítja és verem tetején lévő címet a PC-be tölti
0 1 WDT időtúlfutás normál üzemben ! HARDVER MEGOLDÁSA: TÖBBI
1 0 külső RESET (MCLR) energiatakarékos SLEEP) üzemben MEGSZAKÍTÁSFORRÁS
RTS PSA
RS
RA x
V T = 0.6V
Ric = 1Kž SS R SS # VREN kapcsolja (ON/OFF) a feszültséget a referencia áramkörre
VA Cpin V T = 0.6V I leakage
Chold = DAC # D/A átalakítónak használható
capacitance
5 pF ±500nA
51.2 pF
V SS
PIC TANFOLYAM PIC TANFOLYAM
Ub
DC 1/T 3/T 5/T
FOURIER SPEKTRUM
W T
PIC TANFOLYAM PIC TANFOLYAM
3.5 CAPTURE/COMPARE/PWM (CCP) MODUL II. 3.7.1 I2C BUSZ (FAKULTATIV)
Capture Mód
Az adatforgalom két vezetéken történik. Az SCL vezeték az órajelet szolgáltatja , az SDA jelű végzi az
CAPTURE (BEÍRÁS): Egy lábon
Prescaler Set CCPxIF adatforgalmazást. A közös potenciált a GND összekötés biztosítja. Az SCL és SDA vonalak kimenetei nyitott
÷ 1, 4, 16
interrupt
fellépő szintváltás hatására a
RCy/CCPx
PIR<2>
CCPRxH CCPRxL kollektoros megoldásúak, így a vonalak alaphelyzetben magas állapotban vannak. Ennek elônye ebben
Capture
TMR1 számláló 16 bites tartalmát a rejlik, hogy nem csupán két , hanem számos eszközt köthetünk össze.
and
edge detect Enable <CCPRxH:CCPRxL> 16 bites Minden egység lehet Adó ill Vevô. Ezen felül megkülönböztetünk Master és Slave eszközöket.:
TMR1H TMR1L
regiszterbe írjuk. A funkciók: TRX = Transmitter (adó): Az az egység amelyik adatot küld a buszra. RCV = Recevier (vevô): Az az
Q's CCPCONx
<3:0> egység amelyik adatot fogad a buszról.
A szerepek: MST = Master (mester): Az az egység amelyik kezdeményezi az átvitelt, az átvitelhez az órajelet
Compare Mód COMPARE (ÖSSZEHASONLÍTÁS): generálja, és be is fejezi az átvitelt. SLV = Slave (szolga): A mester által megcímzett egység.
Trigger Set CCPxIF
A TMR1 számláló 16 bites
VCC
Special event † interrupt ADAT stabil
PIR<2>
CCPRxH CCPRxL tartalmát a <CCPRxH:CCPRxL> SDA
SDA
SCL
Q S Output Comparator
16 bites regiszterben lévő SDA1 KI SCL1 KI SDA2 KI SCL2 KI
Logic match SCL
RCy/CCPx R tartalommal hasonlítjuk össze.
SDA1 BE SCL1 BE SDA2 BE SCL2 BE
TMR1H TMR1L
TRISC<y> CCPxCON<3:0> Egyezés esetén egy lábon kiadunk BIT átvitel az I2C buszon
Output Enable Mode Select
† For CCP1 (if enabled), reset Timer1.
egy jelet, illetve megszakítást EGYSÉG I. EGYSÉG II.
For CCP2 (if enabled), reset Timer1 one set GO bit (ADCON0<2>).
generálunk. SDA
Bit szintű átvitel: az eredetileg magas szinten lévő SDA vonalra
Duty cycle registers CCPxCON<5:4>
PWM Mód kerül a 0 vagy 1 szint. Az SCL vonal magas szintje alatt
CCPRxL A KITÜLTÉSI TÉNYEZŐ SCL
S P érvényes az adat. Az adat csak az SCL vonal alacsony szintje
A FREKVENCIÁTÓL START
START és STOP feltételek
STOP alatt változhat.
CCPRxH (Slave) FÜGGETLEN, DE A A busz aktív és inaktív állapotát a START és STOP
feltételekkel tudjuk definiálni.
Comparator R Q FREKVENCIA A SDA
START feltétel akkor lép fel és a busz aktív lesz amikor SCL
TMR2 (Note 1)
S
RCy/CCPx FELHARMONIKUS TAR- SLAVE KÜLDI AZ ADATOT
magas állapotában az SDA vonalon egy H-L átmenet van.
Comparator
Reset
Timer TRISC<y>
TALMAT SLAVE VESZI AZ ACK- OT STOP feltétel akkor lép fel, amikor SCL magas állapotában az
BEFOLYÁSOLJA SDA vonalon egy L-H átmenet van.
PR2 SCL 1 2 8 9 A START és STOP állapotokat csak a mester generálhatja. A
(SZŰRÉS) S ACK
Note: 8-bit timer is concatenated with 2-bit internal Q clock MASTER ADJA busz aktív a START és STOP állapot között.
or 2 bits of the prescaler to create 10-bit time base.
BÁJT átvitel az I2C buszon
PIC TANFOLYAM PIC TANFOLYAM
I 2 C™/ACCESS.bus Mód
MSB MESTER LSB MSB SZOLGA LSB
Internal
• 7 vagy 10 bites cím data bus MISO MISO
Rea Write SHIFT REGISZTER SHIFT REGISZTER
• Standard (100 KHz) d
(8BIT) (8BIT)
• gyors (400 KHz) mód támogatás SSPBUF MOSI MOSI
Shift
RC3/SCK clock
SSPSR SCK SCK
RC4/SDA MSB
SPI
Match detect Addr Match ÓRAJEL SS SS
• A szolga funkciók teljes HW
SSPADD
kialakítása VCC GND
• HW segíti a mester és a multi- Start and
Stop bit detect Set, Reset S, P
mester funkciókat bits
(SSPSTAT Reg)
PIC TANFOLYAM PIC TANFOLYAM
3.8 PÁRHUZAMOS SZOLGA PORT 3.10 BELSŐ FLASH EEPROM PROGRAM ÉS ADAT MEMÓRIA
Data bus
D Q RDx pin
"WR
Port"
CK
Q D
"RD Port" CK
One bit of PortD
TTL
Read
RD
Chip Select
CS
EZ KISEBB
Write
WR PROGRAM
Note: I/O pins have protection diodes to V DD and V SS .
MEMÓRIÁJÚ
TÍPUSOKNÁL
8 bites mikroprocesszor adatbuszához direkt köthető
CSAK 128
Aszinkron működés (a külvilág felé) BÁJT
A párhuzamos port külső írásakor vagy olvasásakor megszakítás generálódik
A Port D és Port E portokat használja
A PROGRAM-MEMÓRIA PROGRAMBÓL ÍRHATÓ, OLVASHATÓ !!!
Port D Adatbusz
Port E vezérlő jelek (read, write, és chip select)
PIC TANFOLYAM PIC TANFOLYAM
PIC16CXX
OERR FERR
RC7/RX/DT • 93LCXX család 3(4)-vezetékes SPI interfészű
RSR
RXDATA • Max. 16Kbit EEPROM
RCCLK TO RC6, RC7 • Egyszerű rutin ≈ 20 sor !!!
I/O Port Logic
RC8/9 RCD8
RCREG Baud Rate
Clock
RCIF
I 2 C Bus • • •
SPBRG Tcy SSP • • •
RCIE SDA Serial
EEPROM
SCI Aszinkron Mód SCI Szinkron Mód
Adás Adás SCL
Adó regiszter kettős pufferelésű Adó regiszter kettős pufferelésű
Ha az adó kész az adatátvitelre, megszakítást Egymást követő bájtokat úgy viszi át, hogy PIC16CXX 24LCXX
generál lehetséges 16 bites szavak átvitele, vagy akár
8/9 bites adás hosszabbakat is • 24LCXX család 2-vezetékes I2 C buszt használ
Vétel 8/9 bites adás • Maximum 64 Kbit EEPROM
Vevő regiszter kettős pufferelésű Vétel •
• Program: ≈ 100 sor
Felülírási hiba jelzőbit Vevő regiszter kettős pufferelésű Több periféria esetén jó választás
Keretezési hiba detektálása 8/9 bites vétel
Minden adatbit többségi detektálása (zajvédelem) Egymást követő bájtokat úgy veszi, hogy
Ha bejött egy teljes adat, megszakítást generál lehetséges 16 bites szavak vétele, vagy akár
hosszabbaké is
PIC TANFOLYAM PIC TANFOLYAM
4. PIC CSALÁD (RÉGEN)
4.2 PIC16F87X FLASH EEPROM-OS KONTROLLER TULAJDONSÁGAI
TIPUSOK PIC16C5X PIC16CXX PIC17CXX
Utasítás-
hossz (bit): 12 14 16
Jellemzők 54 54A R54 55 56 57 57A 58A 61 64 71 74 84 42
SEBESSÉG 20 20 20 20 20 20 20 20 20 20 20 20 10 20
EPROM 512 512 512 1K 2K 2K 1K 2K 1K 4K 2K
ROM 512 2K
EEPROM 1K
RAM 25 25 25 25 25 72 72 72 36 128 36 192 36 232
EEPROM 64
IDŐZÍTŐK 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 3+WDT 1+WDT 3+WDT 1+WDT 4+WDT
CAPTURE/COM-
PARE/PWM 1 2 2
SOROS PORT SPI/I2C SCI
PÁRHUZAMOS
SLAVEPORT IGEN IGEN
8 bites A/D 4 8
MEGSZAKÍTÁ-
SOK 3 8 4 12 4 11
I/Ovonalak 12 12 12 20 12 20 20 12 13 33 13 33 13 33
Tápfesz (V) 2.5-6.2 2.5-6.2 2.0-6.2 2.5-6.2 2.5-6.2 2.5-6.2 2.5-6.2 2.5-6.2 3.0-6.0 2.5-6.0 3.0-6.0 3.0-6.0 2.0-6.0 4.5-5.5
Utasításszám 33 33 33 33 33 33 33 33 35 35 35 35 35 55
• Flash EEPROM program-memóriájú eszközök megjelenése Device PIC16F873 PIC16F876 PIC16F874 PIC16F877
• Gyors és egyszerű újra programozhatóság Operating Freq. DC-20MHz DC-20MHz DC-20MHz DC-20MHz
Resets/Delays POR,BOR POR,BOR POR,BOR POR,BOR
• In-Circuit Debugging (ICD) - azaz lépésenkénti ill.
PWRT,OST PWRT,OST PWRT,OST PWRT,OST
töréspontos programfuttatás
Prog. Mem 4K FLASH 8K FLASH 4K FLASH 8K FLASH
• Választható belső oszcillátor Data Mem 192 368 192 368
• Nagyobb órajelsebesség - nagyobb teljesítmény (MIPS) EEPROM 128 256 128 256
• Nagyobb kapacítású belső EEPROM-os adatmemória Interrupts 13 13 14 14
• Programozható, feszültségcsökkenést figyelő áramkör I/O Ports 22 22 33 33
• Új eszközök: Timers 3 3 3 3
CCP 2 2 2 2
• RESET áramkörök
SPI Y, Enh. Y, Enh. Y, Enh. Y, Enh.
• Műveleti erősítők I2C Mstr/Slave Mstr/Slave Mstr/Slave Mstr/Slave
• 10 és 12 bites AD átalakítók USART Y, 9-bit Y, 9-bit Y, 9-bit Y, 9-bit
• CAN interfész (MCP2510 CAN kontroller SPI illesztéssel) Parallel Port N N Y Y
• RFID : rádiófrekvenciás azonosító eszközök 10-bit A/D 5 ch 5 ch 8 ch. 8 ch.
ICSP/ICD Y/Y Y/Y Y/Y Y/Y
PARALLAX MICROCHIP ..
125kHz, passzív (nem kell elem), 128 vagy 96 bit RÁDIÓFREK- Szövegszerkesztővel A KÖVETELMÉNYEK ALAPJÁN
A RENDSZERTERV ELKÉSZÍTÉSE
VENCIÁS forráskód megírása
MCRF200: EM, Temic, Philips kompatibilis AZONOSÍTÓ *.SRC *.ASM
A HARDVER KIALAKITÁSA
MCRF202: Binaris érzékelő bemenet ELEM PASM MPASM
Assemblálás
MCRF250: Többszörös olvasás, ütközést kivédő *.LST - szimulátornak *.OBJ - szimulátornak PROGRAMTERVEZÉS
KÓDOLÁS
PSIM program MPSIM program
MCRF355/360 Clearview ICE PICMASTER ICE
A PROGRAM MEGIRÁSA
All: 13.56MHz, paszív, anti-collision, cloaking A fordítás eredménye (EDITOR)
RÉSZEK KIPROBÁLÁSA
(SZIMULÁTOR)
• Programtár nagysága
A RENDSZERFEJLESZTÉS BLOKKVÁZLATA
• A megfelelő mikroszámítógép kiválasztása
PIC TANFOLYAM PIC TANFOLYAM
% Harvard architektúra, külön program és @ Insert one line of assembly language code. ON INTERRUPT Execute BASIC subroutine on an interrupt.
5.1 PIC16/17 adatmemória ASM..ENDASM Insert assembly language code section. OUTPUT Make pin an output.
MIKROKONTROLLEREK: % Kis áramfelvétel (15 mA tipikusan 3V, 32 KHz-nél) BRANCH Computed GOTO (equiv. to ON..GOTO).
BRANCHL BRANCH out of page (long BRANCH).
PAUSE Delay (1mSec resolution).
Teljes statikus kialakítás PAUSEUS Delay (1uSec resolution).
HARDVER ÁTTEKINTÉS %
BUTTON Debounce and auto-repeat input on specified pin. PEEK Read byte from register.
% Kisfogyasztású SLEEP (szundi) üzemmód (< 1 mA CALL Call assembly language subroutine. POKE Write byte to register.
3V-nál) CLEAR Zero all variables. POT Read potentiometer on specified pin.
% Minden utasítás egyszavas COUNT Count number of pulses on a pin. PULSIN Measure pulse width on a pin.
% Minden utasítás (kivéve az ugrások) egy ciklusú DATA Define initial contents of on-chip EEPROM. PULSOUT Generate pulse to a pin.
% Watchdog időzítő belső RC oszcillátorral DEBUG Asynchronous serial output to fixed pin and baud. PWM Output pulse width modulated pulse train to pin.
DISABLE Disable ON INTERRUPT processing. RANDOM Generate pseudo-random number.
% Kódvédelem
DTMFOUT Produce touch-tones on a pin. RCTIME Measure pulse width on a pin.
% A digitális I/O vonalak nagy meghajtó/nyelő árama EEPROM Define initial contents of on-chip EEPROM. READ Read byte from on-chip EEPROM.
(25 mA) ENABLE Enable ON INTERRUPT processing. RESUME Continue execution after interrupt handling.
% Beépített reszet, feszültségcsökkenés figyelő END Stop execution and enter low power mode. RETURN Continue at statement following last GOSUB.
(brown-out) FOR..NEXT Repeatedly execute statements. REVERSE Make output pin an input or an input pin an output.
FREQOUT Produce up to 2 frequencies on a pin. SERIN Asynchronous serial input (BS1 style).
&Duál 10-bit / 20 KHz, 8-bit / 80 KHz PWM
GOSUB Call BASIC subroutine at specified label. SERIN2 Asynchronous serial input (BS2 style).
&8-bites max 8 csatornás, 26 msec konverziós idejű SAR A/D GOTO Continue execution at specified label. SEROUT Asynchronous serial output (BS1 style).
&16-bites 16 csatornás integráló A/D HIGH Make pin output high. SEROUT2 Asynchronous serial output (BS2 style).
&Duál 5 mV-os ofszetű komparátor HSERIN Hardware asynchronous serial input. SHIFTIN Synchronous serial input.
&8-bites DAC HSEROUT Hardware asynchronous serial output. SHIFTOUT Synchronous serial output.
&Belső hőméréséklet érzékelő I2CREAD Read bytes from I2C device. SLEEP Power down processor for a period of time.
&Belső feszültség referencia I2CWRITE Write bytes to I2C device. SOUND Generate tone or white-noise on specified pin.
&Belső oszcillátor IF..THEN..ELSE..ENDIF Conditionally execute statements. STOP Stop program execution.
&116 pixeles 32 X 4 multiplexelt LCD meghajtó INPUT Make pin an input. SWAP Exchange the values of two variables.
&8/9-bites soros USART {LET} Assign result of an expression to a variable. TOGGLE Make pin output and toggle state.
&Telepes óra LCDOUT Display characters on LCD. WHILE..WEND Execute statements while condition is true.
&Duál 16-bites 200 nsec-os capture regiszter
LOOKDOWN Search constant table for value. WRITE Write byte to on-chip EEPROM.
LOOKDOWN2 Search constant / variable table for value.
&Duál 16-bites 200 nsec-os komparátor kimenet XIN X-10 input.
LOOKUP Fetch constant value from table. XOUT X-10 output.
&SPI / I2C busz illesztés
LOOKUP2 Fetch constant / variable value from table.
&Párhuzamos slave port
&64 bájtos EEPROM adatmemória
LOW Make pin output low. 5.3 PICBASIC- PRO COMPILER
NAP Power down processor for short period of time.
PIC TANFOLYAM UTASÍTÁSOK PIC TANFOLYAM
" Hardver és szoftver tervezés mikroszámítógéppel? • definiálhatók szimbólumok (pl. EQU, DATA)
Ember-gép kapcsolat HATAR EQU 120 ; pl. MOV A,#HATAR A tartalma 120 lesz
" Programírás (editálás) (forráskód készítése) megtervezése !!!!!! BEM1 DATA 20H ;20H mem.címre BEM1 néven hivatkozunk
" Gépi kód (tárgykód) előállítása assembler, compiler Be- és kimenetek száma, • foglalhatók le és inicializálhatók mem. területek (pl. DS, DB, DW)
típusa (analóg, digitális) DS 20 ;20 bájt lefoglalása a memóriában
" program jóságának ellenőrzése
Programtár nagysága SZOV: DB ’EZT ÍROM KI’ ;szöveg definiálása
– szimulátor (program) A megfelelő • állíthatók be címek (ORG, END)
– emulátor (hardver) mikroszámítógép START ORG 1000H ;1000H címen kezdődik a program
– programozó kiválasztása END ;ez a program vége
PIC TANFOLYAM PIC TANFOLYAM
5.5.1.2 MPASM UNIVERZÁLIS ASSEMBLER : INCLUDE DIREKTÍVA 5.5.1.4 MPASM UNIVERZÁLIS ASSEMBLER: MACRO, ENDM
# Speciális funkcójú regisztereket, (STATUS, PORTok, stb.) a “Processor Definition” include
fájlokban kell megadni, pl.: DIREKTÍVÁK
#P16C74A.INC ) Felhasználó által definiált utasítás sorozat forrásszövegbe illesztése
#P17C44.INC
) Makrók előnyei:
) Gyakran használt megoldások következetes alkalmazása
# A felhasználói könyvtárak, szubrutinok szintén include fájlba helyezhetők
) A forráskód egyszerűbb módosíthatósága
# Assembler az include fájlokat úgy kezeli, mint forráskódot ) Könyebb tesztelhetőség
# Szintaktika: ) Használat előtt kell definiálni !!!
Szintakszis:
# #include <path><FILENAME.INC> ! Definíció:
# #include C:\MPLAB\P16C74.INC <macro_name> MACRO [<arg1>, ... ,<argn>]
...
# A proceszort az #include előtt kell definiálni ENDM
! Használat:
ORG, CBLOCK, EQU direktívák <macro_name> [<arg1>, ... , <argn>]
ORG: Beállítja a program kezdőcímét ! Pl.: LEDon MACRO ; ledon makró megadása
ORG 0x04 ; a követekező utasítás 4H címen lesz BSF PORTA,1 ; LED világít
ENDM
EQU: Értékhez szimbólumot rendel, adatmemória címek helyett szimbólumok használhatók ....
LEDon ; LED be, makróhívás
COUNT EQU 0x020 ; COUNT használható 20H című regiszter helyett Feltételes assemblálás
INPULSES EQU 0x021 ; INPULSES használható 21H című reg. helyett A forráskód feltételtől függően fordítható
CBLOCK: Szimbólumtömböt definiál, jól használható regiszterek megadására Moduláris programírást tesz lehetővé
Szimulátoros hibakeresés
CBLOCK 0x20 ; A definíció a 20H című regiszternél kezdődik IF - Ezzel kezdődika feltételes blokk
COUNT ; COUNT a 20H cimű fájlregisztert használja
INPULSES ; INPULSES pedig a 21H-t Szintakszis: IF <expr>
ENDC ENDIF - a feltételes blokk vége ENDIF
PIC TANFOLYAM PIC TANFOLYAM
5.5.2.1 MPLAB-SIM I. 5.5.2.3 MPLAB-SIM III.
" Univerzális szimulátor PIC16/17 családhoz
" PC Windows és MPLAB-kompatibilis * A nyomkövetés során fájlban tárolhatjuk el az
Diszkrét esemény, utasítás alapú szimuláció
"
utasításokat és a regiszterek állapotát
" Teljes forrásszintű hibakeresés (debugging)
" Korlátok nélküli összetett töréspontok
" Megszakítás és perifériaműködés szimulációja (A/D és soros I/O nem!) * A fájlt a szimulátor hozza létre és többek között
" Stimulus fájlok tartalmazza:
" A DOS alapú MPSIM-et helyettesíti * Lépésszám
# Hasonló az előbbi táblához GOTO utasítás van a CALL és RETLW helyett ! FSR használható az első adatelemre mutatónak. Példa:
# Használatával a veremszintek száma csökkenthető CLK_MIN_LD EQU 0x0C ALM_MIN_LD EQU 0x10
CLK_MIN_HD EQU 0x0D ALM_MIN_HD EQU 0x11
MOVF NEXT_STATE,W CLK_HOUR_LD EQU 0x0E ALM_HOUR_LD EQU 0x12
GOTO jump_table CLK_HOUR_HD EQU 0x0F ALM_HOUR_HD EQU 0x13
...
jump_table ; PC felső felét inicializáni kell MOVLW CLK_MIN_LD
ADDWF PCL, F MOVWF FSR
GOTO state0_routine CALL inc_time
MOVLW ALM_MIN_LD
GOTO state1_routine MOVWF FSR
GOTO state2_routine CALL inc_time
Példa: ADVJUMP.ASM
PIC TANFOLYAM PIC TANFOLYAM
Példa: A + B -> A U1
14. LAB = VCC
17
RA0 18 imp. be
VCC
kodbe R10
MOVF A,W MOVF B,W 4 RA1
MCLR RA2 1
RA3 2
kodaki
kodbki
RA4 3
ADDWF B,W ADDWF A,F RB0 6
7
R1 D1 VCC
RB1
MOVWF A REZONATOR 16 RB2
OSC1 RB3
8
9
10
470
R2 D2
A+B
RB4
3 utasítás 2 utasítás 15 OSC2 RB5
RB6
RB7
11
12
13
470
R3 D3 TÖRLŐ KULCS
4 MHz
+ Egy bit átvitel két regiszter között (REGA-ból REGB-be) PIC16C84 470 4
U2B
R4 D4 6
+ REGB bit előzetes beállítása A
U2A
5
U2D
470 1 12
+ REGA bit-je tesztelése alapján a bitet esetleg megváltoztatjuk IC1
R5 D5
2
3 7400
U2C
13
11
VÉGE
PIC TANFOLYAM PIC TANFOLYAM
AZONOSITÓ RÉSZ
HOZZÁNYÚLÁST ÉS MÓDOSÍTÁST MUTATÓ SORSZÁM
VERZIÓSZÁM 7.2.4 ASM
UTOLSÓ MODOSÍTÁS DÁTUMA
FÁJLNÉV
PROGRAM ;===================[ F Ő P R O G R A M K E Z D E T E ]============
;
SZERZŐ FELÉPÍTÉSE ;------------------[ INICIALIZALASOK ]------------------------------
CÉG INI_MAIN
A PROGRAM RÖVID LEIRÁSA
INI_PORT
A PROGRAM TÖRTÉNETE DÁTUMOZVA
A PROGRAM RÉSZLETESEBB LEÍRÁSA ÉS SPECIFIKÁCIÓJA BANKSEL TRISC 7.2.5
CLRF TRISC ;PORTC mind kimenet
DEFINICIÓK, DEKLARÁCIÓK BANKSEL PORTC FUTÓFÉNY SW
PROCESSZOR TÍPUS, KONFIGURÁCIÓ, INCLUDE FÁJLOK INI_REG
I/O PORTOK CLRF SEG ;SEG=0 IDŐZÍTÉSSEL
BEMENETEK INI_BITS
KIMENETEK BSF SEG,0 ;SEG='00000001'B II.
ALLANDOK INI_MISC
;------------------[ PROGRAM TENYLEGES KEZDETE ]--------------------
VALTOZOK MAIN
BITES VALTOZOK ;ADOTT REGISZTER ROTÁLÁSA CARRY KIHAGYÁSÁVAL
MAKROK RRF SEG,W ;ELŐTTE:SEG=76543210 UTÁNA:W=C7654321 CY=.0
PROGRAM KEZDETE RRF SEG,F ;SEG=07654321 CY=CY
MEGSZAKITASVEKTOR MOVF SEG,W ;W=SEG
MEGSZAKITAS AZONOSITAS, FELDOLGOZAS
REGISZTEREK VISSZAALLITASA MOVWF PORTC ;PORTC-N VANNAK A LEDEK
CALL WAIT ;SW KÉSLELTETÉS
FOPROGRAM KEZDETE GOTO MAIN ;UJRA
INICIALIZALASOK ;==================[ S Z U B R U T I N O K ]========================
PORTOK WAIT
REGISZTEREK CLRF TIMER1
BITEK CLRF TIMER2
EGYEB DLY1
NOP
TENYLEGES FOPROGRAM KOD DECFSZ TIMER1,F
SZUBRUTINOK GOTO DLY1
MI A FELADATA DECFSZ TIMER2,F
BEMENET GOTO DLY1
KIMENET RETURN FELADAT:
HASZNALT REGISZTEREK END ;PROGRAM VÉGE
NYOMOGOMBRA
KOD
PROGRAM VÉGE LÉPKEDJEN!!!
105 PIC TANFOLYAM 107 PIC TANFOLYAM
7.3.4 MINIPROGRAMOK
AZ ELKÉSZÍTETT ÁRAMKÖR KIPRÓBÁLÁSÁHOZ (ÉS A
GYAKORLÁSHOZ) HÁROM PROGRAM KÉSZÜLT.
VILLOG.ASM: AZ RC PORT 4. LÁBÁRA KÖTÖTT LED-ET
KAPCSOLJUK PERIODIKUSAN KI ÉS BE, SZOFTVER IDŐZÍTÉST
HASZNÁLVA.
LEPTET.ASM: A LETÖLTŐ KULCS NYOMÓGOMBJÁT NYOMKODVA
A AZ RC PORT 4. LÁBÁRA KÖTÖTT LED-ET KAPCSOLJUK KI ÉS BE.
VALTVIL.ASM: A PROGRAM AZ A/D EGYSÉG 0. CSATORNÁJÁN
LÉVŐ FESZÜLTSÉGET ALAKÍTJA ÁT DIGITÁLIS ÉRTÉKKÉ, ÉS EZ A
SW IDŐZÍTÉST ÁLLÍTJA. ÍGY A PORTC, 4. BITJÉNEK VILLOGÁSI
SEBESSÉGE FOG VÁLTOZNI
EZT A HÁROM PROGRAMOT AZ MPLAB PROGRAMMAL
LEFORDÍTVA, AZ LDR-KEY-EL LETÖLTHETJÜK. A KÉNYELME-
SEBBEKNEK MEGTALÁLHATÓK A KÖZVETLENÜL LETÖLTHETŐ
VILLOG.HEX, LEPTET.HEX VALTVIL.HEX FÁJLOK IS.
LETÖLTÉSI HELY: http://alpha1.obuda.kando.hu/~konya
114 PIC TANFOLYAM