poglavlje ii arhitektura mikrokontrolera familije...

39

Upload: others

Post on 18-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0
Page 2: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Poglavlje II

Mikrokontroleri

Arhitektura mikrokontrolera familije MCS -51

Page 3: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

TH18-bit

TL18-bit

TH08-bit

TL18-bit

Tajmeri/Broja čiTajmer 1 Tajmer 0

Timer Control (TCON)

Timer Mode (TMOD)

GATE C/T M1 M0 GATE C/T M1 M0

Tajmer 1 Tajmer 0

M1 M0

0 0 Mode 0 13 bitni brojač naviše

0 1 Mode 1 16 bitni brojač naviše

1 0 Mode 2 8 bitni brojač sa autoreload funkcijom

1 1 Mode 3 Kombinacija oba daje tri 8 bitna

TMOD

Page 4: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Tajmeri 0 (1)

Oscilator :12

TH0-8bitTL0-8bit TF0T0 pin

MOD1

C/T

TR0

GATE

Brojači navišeSa FFFFh prelaze na 0000h

GATE C/T M1 M0 GATE C/T M1 M0

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TMOD

TCON

Kontrola prekidnog sistema

INT0 pinTHn-8bitTLn-5bit

MOD0

TF0

Page 5: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Primer:Generisati simetričan talasni oblik frekvencije 1 kHz na liniji P1.7. Taktna frekvencija mikrokontrolera iznosi 11.0592 MHz

• Izbor načina rada brojača: kao negejtovani tajmer u režimu “mode 0”TMOD = xxxx0001b

GATE C/T M1 M0 GATE C/T M1 M0

• Određivanje taktne frekvencija brojaca/tajmeraFclk = 11.0592/12 MHzFclk = 921.6 kHzTclk = 1081.5487 ns

• Određivanje početne vrednosti brojača

GATE C/T M1 M0 GATE C/T M1 M0

Page 6: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Početak brojanja

FFFF

Kašnjenje

Određivanje po četne vrednsti broja ča

TF0=1

0000

TL0TH0

Početak brojanja = 65536 – KašnjenjeKašnjenje = 500/1.0815487 = 462

Početak brojanja = 65074Početak brojanja = FE32h

0000

TF0=1

Page 7: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

KASNI: MOV TH0,#0xFE ; postavljanje pocetne ..MOV TL0,#0x32 ; .. vrednosti brojacaSETB TR0 ; ukljuci brojac

FLAG: JNB TF0,FLAG ; cekaj dok se TF0 ne postavi

CLR TR0 ; iskljuci brojac

• Izrada procedure vremenskog kašnjenja

CLR TR0 ; iskljuci brojacCLR TF0 ; resetuj TF0 na nuluRET ; izlaz iz podprograma

;-------------------------------kasnjenje equ 462

MOV TH0,#high(-kasnjenje)MOV TL0,#low(-kasnjenje)

;-------------------------------

Page 8: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

;Program na asembleru

ORG 0 ; reset adresaSJMP START ; rezervisana oblast

ORG 40H ; start adresa na 0040HSTART: MOV TMOD,#01H ; put Timer 0 into mode 1PETLJA: SETB P1.7 ; logic 1 (5 volts)

ACALL KASNI ; 0.5ms kasnjenjeCLR P1.7 ; logic 0 (0 volts)CLR P1.7 ; logic 0 (0 volts)ACALL KASNI ; 0.5ms kasnjenjeSJMP PETLJA ; repeat

;--------------------------------------PETLJA: CPL P1.7

ACALL KASNI ; 0.5ms kasnjenjeSJMP PETLJA ; repeat

;--------------------------------------

Greške u generisanju vremenskog intervala

Page 9: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

;Program na C jeziku#include <reg51.h>#define on 1#define off 0sbit Izlaz = P1^7;void kasni(); // deklaracija funkcije koja ne vraca parametre

main() { // pocetak programaTMOD=0x01; // nacin rada tajmerawhile(1) { // beskonacna petlja

Izlaz = on; // P1.7 = 1kasni(); // kasnjenjeIzlaz = off; // P1.7 = 0Izlaz = off; // P1.7 = 0kasni(); // kasnjenje

}}

void kasni() {TH0 = -(462/256);TL0 = -(462%256);TR0 = on;while(!TF0);TR0 = off; // stop the timer0TF0 = off; // clear flag TF0

}

!!!

Page 10: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Oscilator :12

TH0-8bit

TL0-8bit TF0T0 pin

MOD2

C/T

TR0

reload

Tajmeri 0 (1)

INT0 pin

GATE

Automatsko reloadovanje broja čaMaksimalni moduo deljenja = 256 (za TH0=0)Tajmer 1 kao “baud rate” generator

Page 11: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Oscilator :12

TL0-8bit TF0T0 pin

MOD3

C/T

TR0

Fosc/12

Tajmer 0 u “mode 3”

TH0-8bit

INT0 pin

GATE

TF1

TR1

Fosc/12

Korisno kada je Tajmer 1 baud rate generatorUnapređene varijante sa velikim brojem tajmera!

Page 12: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2

Tajmer 2 (8052)Kontrolni registar T2CON

UART baud rate

Capture/Reload flagCP/RL2 = 1

External flag

Overflow flag

Tajmer/Broja č

Start/Stop

Enable external

Page 13: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

TF2 EXF2 RCLK TCLK EXEN2 TR2 CAT2 CP/RL2

Tajmer 2 (8052)Kontrolni registar T2CON

Capture/Reload flagCP/RL2 = 0

UART baud rate

External flag

Overflow flag

Tajmer/Broja č

Start/Stop

Enable external

Page 14: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

;Program na asembleru

ORG 0 ; reset adresaSJMP START ; rezervisana oblast

ORG 40H ; start adresa na 0040HSTART: MOV RCAP2L,#0x32

MOV RCAP2H,#0xFEMOV T2CON,#0 5H ; reload mod + STARTMOV T2CON,#0 5H ; reload mod + START

PETLJA: JNB TF2, $CPL P1.7CLR TF2SJMP PETLJA ; repeat

Page 15: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

UARTUniversal Asynchronous Receiver Transmitter

SM0 SM1 SM2 REN TB8 RB8 TI RI

Kontrolni registar SCON

9. bit zapredaju

Multiprocesorskirežim rada

Specifikacijanačina radaMODE

Prekidni markeriEnablereceiver

Primljeni9. bit

TI postavlja hardver kada se završislanje karaktera koji je upisan u SBUF

RI postavlja hardver kada u prijemniSBUF stigne novi karakter

b7 b6 b5 b4 b3 b2 b1 b0 SBUFPrijemnik/PredajnikIsta adresaMOV SBUF, #’A’

MOV A, SBUF

SM0 SM1

0 0 Mode 0 Sinhroni prenos, šift registri

0 1 Mode 1 UART promenljiva brzina, 8b podatak

1 0 Mode 2 UART fiksna brzina, 9b podatak

1 1 Mode 3 UART promenljiva brzina, 9b podatak

Page 16: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

UART - Mode 0

SBUF

TX Šift reg.

Oscilator :12

RX Šift reg.

b0 b1 b2 b3 b4 b5 b7 b7

P3.0/RXD

P3.1/TXD

Upis u SBUF

MOV SBUF, #76h

SBUF

RX Šift reg.

Čitanje iz SBUF

• Predaja podatka počinje upisom u SBUF. Kada se svih8 bitova pošalju, postavi se marker TI

• Prijem podatka započinje postavljanjem markera RE.Kada se učitaju svh 8 bitova postavi se marker RI

0 1 1 0 1 1 1 0

MOV SBUF, #76h

Page 17: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

SE

R1

4

SC

LK1

1

SC

LR1

0

RC

LK1

2

E1

3

O0

15

O1

1

O2

2

O3

3

O4

4

O5

5

O6

6

O7

7

Q7

'9

IC174HC595

SE

R1

4

SC

LK1

1

SC

LR1

0

RC

LK1

2

E1

3

O0

15

O1

1

O2

2

O3

3

O4

4

O5

5

O6

6

O7

7

Q7

'9

IC274HC595

SE

R1

4

SC

LK1

1

SC

LR1

0

RC

LK1

2

E1

3

O0

15

O1

1

O2

2

O3

3

O4

4

O5

5

O6

6

O7

7

Q7

'9

IC874HC595

Out 1 Out 64

+ + +

RXD

TXD

P1.0

DATA

CLOCK

LOAD

Primer: proširenje na 64 izlazne linije

;Upis 8 bajtova podataka koji se nalaze u;Upis 8 bajtova podataka koji se nalaze u;IRAM memoriji na adresi 40h na 64 izlazne linije 8 sift registara;(Serial In Paralel Out).

load sbit p1.0

out64: mov sbuf,#00h ; izbor rezima rada UART-aclr load ; inicijalno stanje linije “load” mov r0,#40h ; pocetna adresa bafera podatakamov r2,#8 ; broj bajtova

petlja: mov a,@r0 ; citanje podatka iz baferamov sbuf,a ; upis u UART, pocetak slanjajnb ti,$ ; cekanje na zavrsetak predajeclr ti ; brisanje TIdjnz r2,petlja ; petllja za upis potrebnog broja podatakasetb load ; generisanje impulsa za upis podatka u izlazni lecclr loadret

Page 18: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

SBUF

TX Šift reg.

Timer 1

Upis u SBUF

UART - Mode 1

:16

SM0 SM1 SM2 REN TB8 RB8 TI RI

SCON

b0 b1 b2 b3 b4 b5 b6 b7

Bit TI

0 1

0 1 0 1

SBUF

RX Šift reg.

Čitanje iz SBUF

Odmeravanje na 7., 8..i 9. taktu

)1256(1612 TH

FBaudrate osc

−××=

Baudrate

FTH osc

×−=

1922561

TH1 Baud

FD(-3) 9600

FA(-6) 4800

F4(-12) 2400

E8(-24) 1200

Za Fosc = 11.0592 MHz

b0 b1 b2 b3 b4 b5 b6 b7

Bit RI

0 1

Page 19: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

SBUF

TX Šift reg.

Upis u SBUF

UART - Mode 2

:16Oscilator :4

SM0 SM1 SM2 REN TB8 RB8 TI RI

SCON

b0 b1 b2 b3 b4 b5 b6 b7

START bit STOP bit

Bit TI

b80 1TXD

1 0 0 1

SBUF

RX Šift reg.

Čitanje iz SBUF

Odmeravanje na 7., 8..i 9. taktu

64oscF

Baudrate =

b0 b1 b2 b3 b4 b5 b6 b7

Bit RI

b80 1RXD

Page 20: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

SBUF

TX Šift reg.

Timer 1

Upis u SBUF

UART - Mode 3

:16

b0 b1 b2 b3 b4 b5 b6 b7

START bit STOP bit

Bit TI

b80 1TXD

SM0 SM1 SM2 REN TB8 RB8 TI RI

SCON

1 1 0 1

SBUF

RX Šift reg.

Čitanje iz SBUF

Odmeravanje na 7., 8..i 9. taktu

)1256(1612 TH

FBaudrate osc

−××=

Baudrate

FTH osc

×−=

1922561

TH1 Baud

FD(-3) 9600

FA(-6) 4800

F4(-12) 2400

E8(-24) 1200

Za Fosc = 11.0592 MHz

b0 b1 b2 b3 b4 b5 b6 b7

Bit RI

b80 1RXD

Page 21: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Osnovne procedure

;inicijalizacija serijskog kanalaIni9600:

mov tmod,#20h ;tajmer 1 u autoreload mode mov th1,#0fdh ;baudrate=9600mov scon,#50h ;SCON u mode 1, REN=1setb tr1 ;start tajmerret

;slanje karaktera iz akumulatora ;slanje karaktera iz akumulatora SendChar:

mov sbuf,a ;iniciranje transferajnb ti,$ ;cekaj dok se ne zavrsi predajaclr tiret

Page 22: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Osnovne procedure

B1200 equ -24B2400 equ -12B4800 equ -6B9600 equ -3

Baud set B9600

IniSerial:mov tmod,#20h ;tajmer 1 u autoreload mode mov tmod,#20h ;tajmer 1 u autoreload mode mov th1,#Baud ;baudrate=9600mov scon,#50h ;SCON u mode 1, REN=1setb tr1 ;start tajmerret

Page 23: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Primer: Slanje stringa “ELFAK” na RS232;program

org 0jmp start

org 40hStart: acall Ini9600Petlja: mov a,#’E’

acall SendCharmov a,#’L’acall SendCharmov a,#’F’acall SendCharmov a,#’A’acall SendCharmov a,#’K’acall SendCharmov a,#0ah ; “line feed”acall SendCharmov a,#0dh ; “carriage return”acall SendCharjmp Petlja

;inicijalizacija serijskog kanalaIni9600: mov tmod,#20h ;tajmer 1 u autoreload mode

mov th1,#0fdh ;baudrate=9600mov scon,#50h ;SCON u mode 1, REN=1setb tr1 ;start tajmerret

;slanje karaktera iz akumulatora SendChar: mov sbuf,a ;iniciranje transfera

jnb ti,$ ;cekaj dok se ne zavrsi predajaclr tiret

Page 24: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Primer: Prijem karaktera sa RS232

;prijem jednog karaktera ReadChar: jnb ri,$ ;cekaj dok karakter ne bude u SBUF

mov a,sbuf ;primljeni karakter u akumulatorclr riret

;programorg 0jmp startjmp start

org 40hStart: acall Ini9600Petlja: acall ReadChar

anl a,#0DFh ;mala slova -> velika slovaacall SendCharjmp Petlja

Page 25: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

ASCII tabela

Page 26: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Najraniji početak novog karaktera

stop

star

t

1 1 1 0 1 0 00

VTXD

vreme

+5V

star

t

stop1 1 1 0 1 0 00

VRxD

vreme

-12V

+12V

mov sbuf,#char1

mov sbuf,#char2

RXD

TXD

1

2

3

4

5

6

7

8

9

J1

DB9

14

11

12

9

13

10

15

8

C1+2

C2+5

GND16

C1-4 VCC17

C2-6

V-7

V+ 3

1 SHDN 18

MAX3222EEWN

100n

100n100n

100n

TxD

RxD

Vcc

Vcc

PC

Ženski ( Female ) Muški ( Male)

Page 27: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Multiprocesorska komunikacija

Uslov za upis karaktera iz prijemnog šift registra u SBUF:

(RI = 0) AND [(SM2 = 0) OR (primljeni 9.bit = 1)]

• Ako prethodni karakter nije o čitan (i obrisan RI) novi karakter se bespovratno gubi.

• Ako je SM2 = 1 i primljeni 9.bit = 0, marker RI ne će biti • Ako je SM2 = 1 i primljeni 9.bit = 0, marker RI ne će biti postavljen i prijem karaktera se ne signalizira (ne izaziva prekid)

8051slave N

RXD TXD

8051slave 2

RXD TXD

8051slave 1

RXD TXD

8051master

RXD TXD

Page 28: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Multiprocesorska komunikacijaMaster može da šalje podatke svima i da prima podat ke od svihSvaki slejv može da primi podatke samo od masteraSvaki slejv ima adresu kao jedinstveni 8-bitni poda tak

Protokol razmene podatka:SLAVE• Inicijalno su konfigurisani za prijem 9-bitnih poda taka i multiprocesorski rad,

SM2=1.

MASTER• Šalje adresu slejva kome su namenjeni podaci kao 9- bitni podatak sa TB8=1.

Šalje potreban broj bajtova podataka kao 9 -bitne sa TB8=0 • Šalje potreban broj bajtova podataka kao 9 -bitne sa TB8=0

SLAVE• Inicijalno su konfigurisani za prijem 9-bitnih poda taka i multiprocesorski rad,

SM2=1.• Svi slejvovi prime adresni bajt i upore đuju adresu sa sopstvenom.• Adresirani slejv vrši rekonfiguraciju tako da prima i bajtove sa 9. bitom

jednakim nuli, SM2=0, i nastavlja sa prijemom ostal ih bajtova podataka• Ostali slejvovi ne vrše rekofiguraciju i ne primaju podatke koji nisu

namenjeni njima.

Kako obezbediti da svako može sa svakim da komunicir a?

Page 29: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Prekidni sistemPrekid, interrupt , predstavlja pojavu nekog stanja (ili doga đaja -event ) koje uzrokuje privremenu suspenziju izvršenja tek ućeg programa i servisiranje novonastalog stanja.

Omogu ćava sistemu da odgovori na asinhrone doga đaje do kojih dolazi u toku izvršavanja drugih programa.

Interrupt driven system daje iluziju simultanog izvršavanja ve ćeg broja programa.broja programa.

Prekidna rutina, Interrupt Service Routine – ISR, interrupt handler ,je program koji se izvršava nakon pojave prekida. I SR se izvršava do instrukcije “povratak iz prekida”, ( RETurn from Interrupt ), nakon čega sa izvršenjem nastavlja suspendovani program.

Usvojena terminologija:Glavni program se izvršava na osnovnom nivou ( foreground ), a ISRna prekdnom nivou ( background )

Page 30: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Prekidni sistemGlavni program

Glavni

ISR

Glavni

ISR

Glavni

ISR

Glavni

vremeIzvršavanje bez prekida

background

foreground

RETI RETI RETIevent event event

Glavni Glavni Glavni Glavni

Izvršavanje sa prekidima

foreground

n n+1Instrukcija:

Event

Kompletiranje teku će instrukcije

SP++

low(adresa instr.(n+1) -> (SP),

SP++

high(adresa instr.(n+1) ->(SP)

PC <- adresa ISR (predefinisane vrednosti)

RETI

High(PC) <- (SP)

SP--

low(PC) <- (SP)

SP--

Početak izvršavanja sa (PC)

AT

OM

IČO

ST

Late

ncija

3-7

us

Page 31: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Prekidni sistemEA - ET2

8052 ES ET1 EX1 ET0 EX0Registar dozvole prekida IE

Automatsko brisanje markera pri izlazu iz prekidne rutene:IE0, IE1, TF0, TF1

Markeri koji se moraju brisati softverski:RI, TI, TF2, EXF2

0

1

0

IE0

TF0

EX0

ET0

"JMP to ..."

0x0003

0x000B

registar IE

IT0

INT0

TCON.0

TCON.1

TCON.5

Events

1IE1

TF1

TI

RI

EA

EX1

ET1

ES

0x0013

0x001B

0x0023

TF2

EXF2 ET2

0x002Bsamo u 8052

INT1

IT1TCON.2

TCON.3

TCON.7

Page 32: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Prekidni sistem

P(Ev2) > P(Ev1)

- - PT2 PS PT1 PX1 PT0 PX0

P(Ev2) <= P(Ev1)

IP

Prioritet prekida0 – niži prioritet1 – viši prioritet

Glavni

ISR1

Glavni

ISR2

Background 0

Foreground

ISR1

Background 1

Ev1

Ev2

Glavni

ISR1

Glavni

ISR2

Ev1 Ev2

Jedna instrukcija

Page 33: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Prekidni sistemMale prekidne rutine – Small interrupt service routines

ORG 0000HLJMP MAIN

ORG 000BHT0ISR: - - - - -

- - - - -- - - - -- - - - -RETI

Velike prekidne rutine – Large interrupt service routinesORG 0000HORG 0000HLJMP MAIN

ORG 000BHLJMP T0ISR

ORG 0040HMAIN: - - - - -

- - - - -- - - - -

T0ISR: - - - - -- - - - -- - - - -RETI

Page 34: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Primer – tajmerski prekidiNa linijama P1.6 i P1.7 generisati dva simetri čna talasna oblika frekvencija 7 kHz i 500 Hz respek tivno.Mikrokontroler koristi kvarcni oscilator frekvencije 12 MHz.

ORG 0000HLJMP MAIN

ORG 000BH ; vektorska adresa prekida T0CPL P1.6RETI

ORG 001BH ; vektorska adresa prekida T1JMP T1ISR

ORG 0040HORG 0040HMAIN: MOV TMOD,#12H ; T0 autoreload, T1 16 bit

MOV TH1,#-71 ; poluperioda signala 7kHz = 71usSETB TR0SETB TR1MOV IE,#8AH ; Dozvoli oba tajmerska prekidaSJMP $

T1ISR: CLR TR1MOV TH1,#HIGH(-1000)MOV TL1,#LOW(-1000)SETB TR1CPL P1.7RETI

Uticaj prioriteta prekida!

Page 35: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Primer – serijski prekidiPoruku odredjenog sadrzaja ispisivati na serijski ka nal svakih 50 ms. Ispisivanje vrsiti brzinom od 9600 bauda.

ORG 0000HLJMP MAIN

ORG 0023H ; vektorska adresa prekida serijskog kanalaJMP SKISR

ORG 0040HMAIN: MOV TMOD,#21H ; T0 autoreload, T1 16 bit

MOV TH1,#0FDH ; Baud=9600MOV SCON,#50H ; MODE 1, REN=1MOV IE,#90H ; Dozvoli serijski prekidSETB TR1 ; Start Baudrate generator - T1

PETLJA: CLR TR0MOV TH0,# HIGH( - 50000) ; poluperioda signala 7kHz = 71usMOV TH0,# HIGH( - 50000) ; poluperioda signala 7kHz = 71usMOV TL1,#LOW(-50000)SETB TR0JNB TF0,$MOV DPTR,#PORUKA ; Pointer na porukuSETB TI ; Aktiviranje slanjaJMP PETLJA

T1ISR: MOVC A,@A+DPTRINC DPTRCLR TIJZ $+3MOV SBUF,ARETI

PORUKA: DB “MIKROKONTROLERI IMAJU BUDUCNOST”,10,13,0

PUSH ACCPUSH PSWMOVC A,@A+DPTRINC DPTRCLR TIJZ $+3MOV SBUF,APOP PSWPOP ACCRETI

Page 36: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Spoljašnji prekidi• Do spoljašnjeg prekida dolazi pojavom logi čke nule ili negativne ivice na linijama porta

P3.2 (INT0) i P3.3 (INT1).

• Izbor osetljivosti na logi čki nivo ili ivicu signala – markeri IT0 i IT1 registra TCON.

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON

Kontrola prekidnog sistema

00

1

0

1

IE0

IE1INT1

IT0

IT1

INT0

TCON.0

TCON.1

TCON.2

TCON.3

Page 37: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Jedan ciklus Jedan ciklus

• Odmeravanje logi čkog nivoa ulazne linije u određenom trenutku mašinskog ciklusa - Najmanje vreme trajanja prekidnog signala 12xFosc.

S1 S2 S3 S4 S5 S6

Odmeravanje prekida

S1 S2 S3 S4 S5 S6

Odmeravanje prekida

Prekidni signal – propuštanje prekidaTLOW < 1us (FOSC = 12MHz)

Page 38: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

Spoljašnji prekidi - primerAlarmni sistem koji na aktiviranje prekida ča generiše zvu čni ton frekvencije 400 Hz trajanja jedne sekunde. Zvu čnik je preko izlaznog drajvera vezan za liniju P1.7 . Senzor-mikroprekida č koji detektuje negativnu ivicu je vezan za liniju /INT0.

ZVUCNIKPOJACAVAC

SENZOR

8051INT0 P1.7

1 sekunda

2.5 ms

otvaranjevrata

Generisanje velikih vremenskih intervala!

Page 39: Poglavlje II Arhitektura mikrokontrolera familije MCS-51es.elfak.ni.ac.rs/mikro/Materijal/PPT_to_PDF_uC_2012/03-Arhitektura... · Tajmeri 0 (1) Oscilator :12 TL0-8bit TH0-8bit TF0

ORG 0000HLJMP MAINORG 0003HLJMP EX0ISRORG 000BHLJMP T0ISRORG 001BHLJMP T1ISR

ORG 0040HMAIN: MOV TMOD,#11H ; T0, T1 16 bit

MOV IE,#8AH ; Dozvoli prekid sa /INT0SJMP $

EX0ISR: MOV R7,#20 ; perioda T1 kao 20x50ms = 1 sekSETB TF0 ; aktiviraj prekid tajmer 0 – softversko aktiviranjeSETB TF1 ; aktiviraj prekid tajmer 1SETB ET0 ; dozvoli prekide – za 1 sek.SETB ET1 ; za generisanje 400 Hz

Primer – generisanje alarma

SETB ET1 ; za generisanje 400 HzRETI

T0ISR: CLR TR0 ; zaustavi tajmer 0 DJNZ R7,SKIP ; da li je istekla jedna sekundaCLR ET0 ; istekla jedna sekunda, zabrani tonski signalCLR ET1 ; zabrani sopstveni prekidSJMP EXIT

SKIP: MOV TH0,#HIGH(-50000)MOV TL0,#LOW(-50000)SETB TR0

EXIT: RETI

T1ISR: CLR TR1 ;MOV TH1,#HIGH(-1250)MOV TL1,#LOW(-1250)SETB TR1CPL P1.7RETI