Upload
dinhthuy
View
223
Download
3
Embed Size (px)
Citation preview
Poglavlje II
Mikrokontroleri
Arhitektura mikrokontrolera familije MCS -51
8051• Preko 50 kompanija proizvodi razli čite
varijante 8051, preko 40% tržišta MC.
• 8051 corovi dostupni za implementaciju uFPGA ili ASIC kolima.
3
• Preko 100 million a 8051 se prodaju svake godine.
• Izuzetno uspešan MC, imao direktnog uticaja na mnoge arhitekture najnovijih mikrokontrolera.
MCS-51• MCS-51 is Intelova oznaka za MC -ove iz
familije 8051.
• Originalni 8051 bio dostupan u tri osnovne verzije.– 8051 – Sa fiksnim programom u ROM memoriji .
4
– 8051 – Sa fiksnim programom u ROM memoriji .– 8031 – Bez unutrašnjeg ROM -a, program je
smeštan u spoljašnji ROM .– 8751 – Program se smešta u unutrašnji
EPROM. Brisanje sadržaja izlaganjem čipa ultraljubi častim zracima tokom nekoliko minuta. Varijante sa EEPROM memorijom.
Osnovne k -ke jezgra 8051• 8-bitni CPU optimizovan za primene u kontrolama• Mogućnost jednobitnih Boolean operacija.• Podržava do 64K program ske memorije. • Podržava do 64K memorije za podatke.• 4 K bajtova programske memorije na čipu.• 128 ili 256 bajtova RAM memorije na čipu
5
• 128 ili 256 bajtova RAM memorije na čipu• Četri 8 bitna porta.• Dva 16-bit timera/broja ča• UART• Prekidi• Oscilator na čipu
Blok dijagram
CPU
On-chipRAM
On-chip ROM zaprogram
Timer 0
Interrupt Control
External interrupts
Timer 1
Timer/Counter
Counter Inputs
CPU
4 I/O PortsSerial PortOSC
Bus Control
TxD RxDP0 P1 P2 P3
Address/Data
Blok dijagram 8051(8052)
Podatak 8051 8052 8031ROM (bytes) 4K 8K 0KRAM (bytes) 128 256 128
Upoređenje podataka familije 8051
Thursday, January 17, 2013
Mahdi Hassanpour
Timers 2 3 2I/O pins 32 32 32 Serial port 1 1 1 Interrupt sources 6 8 6
Opis pinova 8051PDIP/Cerdip
123456789
403938373635343332
P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST
VccP0.0(AD0)P0.1(AD1)P0.2(AD2)P0.3(AD3)P0.4(AD4)P0.5(AD5)P0.6(AD6)P0.7(AD7)
8051(8031)
91011121314151617181920
323130292827262524232221
RST(RXD)P3.0(TXD)P3.1
(T0)P3.4(T1)P3.5
XTAL2XTAL1
GND
(INT0)P3.2(INT1)P3.3
(RD)P3.7(WR)P3.6
P0.7(AD7)EA/VPPALE/PROG
PSENP2.7(A15)P2.6(A14)P2.5(A13)P2.4(A12)P2.3(A11)P2.2(A10)P2.1(A9)P2.0(A8)
Pinovi 8051((((1/4))))
• Vcc((((pin 40):):):):– Vcc obezbeđuje napajanje čipu.
– Napon napjanja je +5V.
• GND((((pin 20):):):):masa
• XTAL1 and XTAL2 ((((pinovi 19,18):):):):– Obezbeđuju taktni signal.
– 12 taktova jedan mašinski ciklus.• Način 1::::primenom kvarcnog oscilatora• Način 2::::primenom TTL oscilatora
Povezivanje oscilatora Način 1: Primenom kvarcnog oscilatora
C2
30pFXTAL2
• Posmatranje talasnog oblika na pinu XTAL2.
30pF
C1
30pFXTAL1
GND
• Pin XTAL2 nepovezan. NC
EXTERNALOSCILLATOR
XTAL2
XTAL1
Povezivanje oscilatora Način 2: Primenom TTL oscilatora
OSCILLATORSIGNAL XTAL1
GND
Mašinski ciklus
Naći trajanje mašinskog ciklusa za (a) XTAL = 11.0592 MHz (b) XTAL = 16 MHz.
Rešenje :Rešenje :
(a) 11.0592 MHz / 12 = 921.6 kHz;machine cycle = 1 / 921.6 kHz = 1.085 µµµµs
(b) 16 MHz / 12 = 1.333 MHz;machine cycle = 1 / 1.333 MHz = 0.75 µµµµs
• RST((((pin 9):):):):Reset
– Ulazni pin sa aktivan sa jedinicom (u normalnom radu na nuli).
• Logička jedinica mora trajati najmanje 2 mašinska ciklusa.
• Ulazno šmitovo kolo
Pinovi 8051((((2/4))))
• Ulazno šmitovo kolo
– Mora biti aktivan u trenutku uklju čenja (power-on reset).
• Promena sadržaja registara.– Način 1::::Power-on reset kolo
– Način 2::::Power-on reset sa komandom “reset”
– Način 3 : Specijalizovana kola
Kola za resetovanje
10uF100
EA/VP 31RESET9
P10/T21
P11/T2EX2
P123
P134
P145
P156
P167
P178
P00 39
P01 38
P02 37
P03 36
P04 35
P05 34
P06 33
P07 32
30
U?
VCCVCC
reset
10kRESET
EA/VP
X119
X218
RESET
RD17 WR16
INT012
INT113
T014
T115
P20 21P21 22P22 23P23 24P24 25P25 26P26 27P27 28
PSEN 29ALE/P 30
TXD11 RXD10
8052 DIP
reset
STM1812
• /EA((((pin 31):):):):External Access
– Omogućava pristup spoljašnjoj programskoj memoriji.
– Pin /EA se spaja na GND ako se koristi spoljašnji ROM.• ALE ((((pin 30):):):):Address Latch Enable
– Koristi se za demultipleksiranje adresa A0-A7 i podataka
Pinovi 8051((((3/4))))
“/” ima zna čenje aktivno sa nulom (nadvučeno).
– Koristi se za demultipleksiranje adresa A0-A7 i podataka D0-D7 na portu P0 pomoću leča (74LS373).
– Aktivan sa jedinicom kada je na magistrali adresa.• /PSEN((((pin 29):):):):Program Store Eenable
– Izlazni pin koji generiše signal čitanja iz ROM -a.
– Spaja se za /OE (output enable) pin spoljašnjeg ROM-a.
– Generiše se kada se pristupa adresnom prostoru koji je veći od unutrašnjegt ROM-a.
I/O portovi (memorijski prostor, direktne adrese)Port 0 (0x80) P0:(P0.0~P0.7)/ AD0 – AD7
Port 1 (0x90) P1:(P1.0~P1.7)Port 2 (0xA0) P2:(P2.0~P2.7) / A8 – A15
Port 3 (0xB0) P3:(P3.0~P3.7) / Alternativne funkcije
Označavanje pinova.P0.X (X=0,1,...,7), P1.X, P2.X, P3.X ; “C” P0^X
Pr:P0.0 je bit 0(LSB)portaP0
Pinovi 8051((((4/4))))
Pr:P0.0 je bit 0(LSB)portaP0
Pr:P0.7 je bit 7(MSB)porta P0
Svi portovi mogu bit ulazni i izlazniInstrukcije “read”, “write”, “read-modify-write”
Biderekcionalni i kvazi-bidirekcionalniRad sa spoljnom memorijom;kvazi bider. ;biderekcionalni
MOV P1,#0x0F MOV P0,#0x0F
MOV A,P1 MOVX A,@R0 ;privremeno P0=0xFF
Alternativne funkcije porta P3 (0xB0)
• P3.0 prijem serijskih podataka -RXD,
• P3.1 predaja serijskih podataka -TXD,
• P3.2 spoljašnji prekidni signal /INT0,
• P3.3 spoljašnji prekidni signal /INT1,
• P3.4 ulaz u brojač T0
• P3.5 ulaz u brojač T1, • P3.5 ulaz u brojač T1,
• P3.6 kontr. signal za upis u spoljašnji RAM (/WR)
• P3.7 kontr. signal za čitanje iz spoljašnjeg RAMa (/RD)
Memorijski modelROMProgramska memorija
XRAMSpoljašnja memorija za podatke
65535
RegistriR0-R7, A, B,DPTR, PC
IRAMUnutrašnjamemorija za podatke
DRAMUnutrašnja memorija za podatke i UI
127
255
0
8191
4095
0
8K 8052
4K 8051
Programska memorija
ROMSpoljašnji
4K 80518K 805212K AT89S825364K AT8051RB2
Programiranje!Silabs!
Memorijski blokovi 256, 2K.
Apsolutni programski skokoviAJMPLJMP
64KROMSpoljašnji
64K
ROMUnutašnji
4K4K
0
LJMP
Relatini programski skokoviSJMP
Uslovni skokoviJCJNCJBJNB
EA = 1
0
EA = 0
Spoljašnji RAM - XRAM
RAMSpoljašnji
64K
Adresiranje pomo ću: DPTR, R0, R1
- MOVX –;citanje sadrzaja lokacije;1234h iz XRAM-a
MOV DPTR,#1234HMOVX A,@DPTR
MOV P2,#12HMOV R0,#34H
RAMSpoljašnji
64K
AT89S8253
EEPROMUnutrašnji
2K2K
0
MOV R0,#34HMOVX A,@R0
Unapređene varijanteAT89S8253
Silabs F310, F540, ... 1K XRAMBez EMI (External Memory Interface)uvek pristupaju unutrašnjoj memoriji- mapirano u stilu “po modulu”
Registar EMI0CN umesto P2MOVX se koristi i za programiranjeFLASH memorije 0
EECON.EEMEN = 0 EECON.EEMEN = 0
RegistriPosebna memorijska lokacija u unutrašnjoj memoriji
Adresiraju se registarski (kod instrukcije)Instrukcija eksplicitno definiše o kom se registru radi
A (ACC)
B
R7
DPH DPL
PC
DPTRDRAM
nevidljiv
C CY
R7
R6
R5
R4
R3
R2
R1
R0
PC
IRAM
nevidljiv
;primeri instrukcijaCLR CSETB C
MOV A,R3MOV R4,AMUL ABMOVC A,@A+DPTRMOVC A,@A+PC
IRAM
Bit adresabilno 202122232425262728292A2B2C2D2E2F
78797A7B7C7D7E7F
30
SlobodniRAM(40)
2F
7F80
FF
SlobodniRAM8052(128)
2425
2F…..
HEX adrese
HEX adrese
Mogućnost indirektnog adresiranjaAdresni registri R0 i R1Izbor aktivne registarske banke: sfr PSW
MOV A,@R0MOV @R1,A
RB1 (8)
RB2 (8)
RB3 (8)
RB0 (8)
Bit adresabilno polje(16)
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
R6
R5
R4
R3
R2
R1
R0
R7
0001020304050607
00
08
10
18
202021222324 MOV @R1,A
MOV R4,AMUL ABMOVC A,@A+DPTRMOVC A,@A+PC
DRAMFF
Specijalni registri i UI
prostor(?128)
HEX adrese
E0*
D0*
F0*B
PSW
ACC
B0*P3
A0*P2
90*P1
TCON 88*89
TL0
TMOD
8A8B
TL1
TH0
8C8D
IE
TH1
A8*
SCON
B8*IP
98*SBUF 99
HEX adrese HEX adrese
00
DRAMpreklopljen sa
IRAM(128)
7F80
Mogućnost samo direktnog adresiranjaAdresa registra je deo instrukcije
MOV A,80H ; A = sadržaj lokacije(80h)MOV P1,A ; P1 = Akumulator
“inc” i “h” fajlovi
80*P0
82DPH
DPL
83
87TCON
PCON
88*
81SP
Data Memory (DRAM )
27
28
Sfr registri MC Silabs 80C51F340
SFR REGISTRIProgram Status Word (PSW)Internal Address: D0HBit Addressable (PSW.0 - PSW.7)
Reset Value : 00H
CY AC F0 RS1 OVRS0 P--
F1 kod unapre đenih
BIT SYMBOL ADDRESS DESCRIPTIONPSW.7 CY D7H Carry flagPSW.6 AC D6H Auxiliary carry flagPSW.5 F0 D5H Flag 0PSW.4 RS1 D4H Register Bank Select 1PSW.3 RS0 D3H Register Bank Select 2PSW.2 OV D2H Overflow flagPSW.1 - D1H ReservedPSW.0 P D0H Even parity flag
Carry Flag (CY)
ADD A, #1
;aritmeticke operacije:MOV R5, #55HMOV A, #0AAHADD A, R5
Rezustat:
ACC = FFH
C = 0
ACC = 00H
C = 1
SUBB A, #1
;1-bitni registar;za boolove operacije
ANL C, ACC.0
ACC = FFH
C = 1
ACC = FFH
C = 1
Auxiliary Carry Flag (AC)
;Primer:MOV R5, #1MOV A, #9ADD A, R5
Rezultat:
ACC = 0AH
AC = 1
ACC = 0FH
Za sabiranje BCD brojeva. Kada postoji prenose sa bita 3na bit 4 ili kada je rezultat u nizem niblu > 09H
ADD A, #5
ADD A, #1
ACC = 0FH
AC = 1
ADD A, #1ACC = 11H
AC = 1
Flag 0 (F0)- Marker opšte namene za korisni čke aplikacije
;Primer:
SETB, F0
Rezultat:
PSW.5 = 1
CLR, F0 PSW.5 = 0
Register Bank Select (RS 0, RS1)
1FHBank 3
18H
17HBank 2
10H
SETB RS1CLR RS0MOV R7, # 1
SETB RS1SETB RS0MOV R7, #1
10H
0FHBank 1
08H
07HBank 0
00H
MOV R7, # 1
CLR RS1CLR RS0MOV R7, #1
CLR RS1SETB RS0MOV R7, #1
Overflow Flag (+127 to -128);PrimerMOV R7, #0FHMOV A, #7FHADD A, R7
Rezultat:
ACC = 8EH (-114)
OV = 1
MOV R7, #80HMOV A, # 10H
ACC = 90H
OV = 1
MOV R7, #0FFHMOV A, #0FHADD A, R7
ACC = 0EH
OV = 0
[C = 1]
MOV A, # 10HSUBB A, R7
OV = 1
Parity Bit;PrimerMOV A, #10101101B
Rezultat
P = 1
MOV A, #55H P = 0
MOV R7, #0FFHMOV A, #0FHADD A, R7
ACC = 0EH
P = 1
B Register (B)Internal Address: F0HBit Addressable (B.0 - B.7)
Reset Value : 00H
MOV A, #0E1HMOV B, #2MUL AB
ACC = C2H
B = 01H
MOV A, #0E1HMOV B, #2DIV AB
ACC = 70H
B = 01H
SP sadrži adresu podatka koji je trenutno na vrhu steka
7F
Stack Pointer (SP)Internal Address: 81HNot Bit Addressable
Reset Value : 07H
Inicijalna vrednost, veli čina steka!
7F......
6261605F
MOV SP, #5FH
PUSH ACC ;adresa!!!
PUSH PSW
PSWPOP PSW
POP ACCAACCPSACCW
PSW
Data Pointer (DPTR)Internal Address: 82H(DPL), 83H(DPH)Not Bit Addressable Reset Value : 00H
16-bitni registar za pristup spoljašnjoj memoriji z a podatke i podacim iz programske memorije
;Primer : upis 01H u ;Primer :MOV A, #01HMOV DPTR, #0FF38HMOVX @DPTR, A
upis 01H u spoljašnji ure đaj na lokaciji FF38H
Port Registri (Pn) Internal Address: 80H (Port 0)90H (Port 1)A0H (Port 2)B0H (Port 3)
Reset Value : FFH
Bit Addressable (Pn.0 - Pn.7)
SETB P1.7 97H = 1
MOV P2, #01H A0H = 00000001
Struktura portova - Port 1, 2 i 3
D Q
Vcc
Load(L1)
Read latch
Internal CPU P1.X pin
TB2
Clk Q
Read pin
Write to latch
Internal CPU bus
M1
pinP1.X
TB1
D Q
Read latch
Internal CPU P0.X
TB2
Struktura portova - Port 0
D Q
Clk Q
Read pin
Write to latch
Internal CPU bus
M1
P0.X pinP1.X
TB1
Primer generisanja logi čkih signala sa TTL nivoima
;Verzija 1START: JB P1.0,PULSE
CLR P1.7SJMP START
PULSE: SETB P1.7CLR P1.7AJMP START
;Verzija 2
Port pin
R
Cload
+5V DC
Signal
Brzina/disipacija
;Verzija 2START: JB P1.0,PULSE
CLR P1.7SJMP START
PULSE: SETB P1.7NOPNOPNOPCLR P1.7AJMP START
+5V DC
Port pin
R
LED
SINK
Port pin
R
LED
SOURCE
Primer aktiviranja LED diode
SINK SOURCE
8051ATMELSilabs
Silabs
Kako aktivirati aktuator koji radi na 12V DC?Kako upaliti sijalicu na 220V AC?
P0.0P0.1P0.2P0.38051
Vcc10 K
Port
0
Port 0 sapull-up otpornicima
P0.3P0.4P0.5P0.6P0.7
8051 0
Očitavanje tastature sa 8 tasteraOčitavanje tastature sa 8xN tasteraOčitavanje tastature sa 4x4 tastera
Basic Instruction CycleStart
Fetch Instruction “Fetch” ciklus
PC = 0000H
PC = PC + n
→→→→ Postavi stanje PC na Adr.mag.→→→→ Pročitaj “op-cod”
End
Execute Instruction “Execute” ciklus
PC = PC + n
n=1,2,3
→→→→ Dekodiranje instrukcije→→→→ Izvršenje instrukcije
Očitavanje ROMmemorije (1/2)
D
74LS373ALE
P0.0
P0.7
PSEN
A0
A7
OE
CEG
1. Slanje adrese kaROM-u
2. 74373 lečujeadresu šalje je
ROM-u
Address
D0
D7
P2.0
P2.7
A8
A12
EA
8051 ROM
D
74LS373ALE
P0.0
P0.7
PSEN
A0
A7
OE
CEG
2. 74373 latches the address and send to ROM
Address
Očitavanje ROMmemorije (2/2)
D0
D7
P2.0
P2.7
A8
A12
EA
8051 ROM
3. ROM send the instruction back
Pristup spoljašnjoj memoriji za podatke
Preklapanje spoljašnjeg ROM i RAM prostora (Von Nojman)
Omogućava da se u RAM:
� upisuje kao u memoriju za podatke, i
� čita kao memorija za podatke i kao programska memorija.programska memorija.
Ovo daje mogućnost da se program:
� “daunloaduje” od spolja u RAM kao podatak, i
� izvrši iz RAM memorije kao program.
Preklapanje spoljašnjeg ROM i RAM prostora ( Von Neumann )
RAM
WE
OERD
PSEN
WR
Razvojni sistem na bazi MCS51 ( small )
P0/A0-IN OUT D0-
80C51 6264HC573
RAM
D7AD0-AD7 A7
J1
P1
Latch
12345678
J3
PORT1
Bez spoljašnje memorije za podatke
P2
ALE
STB
A8-
P2.7/A15
CS1
P2.0-P2.6
8K x 8RAM
A14
8000-9FFF*P3.0/RxP3.1/TxRS2321
2
J1
DIN3P3.2-P3.7
GND
EA Vcc
PSEN
WR/P3.6
CS
OE WE
123456
J2
PORT3
Memorijska mapa “ small” sistema
Program XRAM
!!!!!!!!!!!!! !!!!!!!!!!!!!
Int. ROM0
0FFF
7FFF
9FFF
8000
0
7FFF
9FFF
8000
ERAM(8K) Wr
ERAM(8K)Rd(PSEN)
Razvojni sistem na bazi MCS51 ( large )
P0/A0-IN OUT D0-
80C51 6264HC573
ERAM
D7AD0-AD7 A7
J1
12345678
J3
PORT1 P1
Latch
A0- D0-
62256
RAM
D7A7
Sa spoljašnjom memorije za podatke
P2
ALE
STB
A8-
CS1
P2.0-P2.6
8K x 8ERAM
A13
8000-9FFF*P3.0/RxP3.1/TxRS2321
2
J1
DIN3
123456
J2
PORT3
P3.2-P3.7
GND
A8-
32K x 8RAM
A14
0000-7FFF
RD/P3.7
A15/P2.7
Za ERAM kapaciteta 32K x 8 ?
CS
OE WE CSOE WE
EA
PSEN
WR/P3.6
Vcc
Memorijska mapa “ large” sistema
Program
ERAM(8K)
XRAM
9FFFERAM(8K)
!!!!!!!!!!!!! !!!!!!!!!!!!!
9FFF
0
0FFFInt. ROM
ERAM(8K)
0
7FFF
ERAM(8K)
RAM(32K)Rd/Wr
Rd(PSEN) Wr8000
7FFF8000