MCS51 - wykład 2
description
Transcript of MCS51 - wykład 2
MCS51 - wykład 2
Wykład 2 2/17
Funkcjonowanie MCS51
Generator taktu
Cykle maszynowe i rozkazowe
Wbudowane porty równoległe
Zerowanie układu
MCS51 - układ taktowania 3/17
Standardowy zakres częstotliwości: 1,2 - 12MHz.
Mikrokontrolery - rozszerzenia MCS51 mogą być taktowane 0Hz - >> 12MHz
XTAL2
XTAL1
GND
rozwiązanieklasyczne
zewnętrznygenerator
XTAL2
XTAL1
GND
buforTTL
HMOS
zewnętrznygenerator
XTAL2
XTAL1
GNDbuforCMOS
CHMOS
wbudowanyoscylator
XTAL2XTAL1GND
Φ1 : 6MHz
Φ2 : 6MHz12MHz
1 cykl maszynowy
wykonanie 2 rozkazów 1-bajtowych zużywających po 1 cyklu maszynowym,np. MOV A,@R1, DEC R2. zał. odczyt z zewnętrznej pamięci programu
1 cykl maszynowy= 1 cykl rozkazowy
PCL
PCH
M PC+1L
PC+1H
N PC+1L
PC+1H
N PC+2L
PC+2H
O PC+2L
PC+2H
O
1 cykl maszynowy= 1 cykl rozkazowy
Φ1
Φ2
PSEN
ALE
P0
P2
M, N, O - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1], O=ROM[PC+2]
MCS51 - cykle maszynowe 4/17
1 cykl maszynowy= 1 cykl rozkazowy
PCL
PCH
M PC+1L
PC+1H
N PC+2L
PC+2H
O PC+3L
PC+3H
P PC+4L
PC+4H
Q
wykonanie 2 rozkazów 2-bajtowych zużywających po 1 cyklu maszynowym,np. MOV R3,#5; ADD A,B. zał. odczyt z zewnętrznej pamięci programu
1 cykl maszynowy= 1 cykl rozkazowy
Φ1
Φ2
PSEN
ALE
P0
P2
MN, OP, Q - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1], O=ROM[PC+2], P=ROM[PC+3], Q=ROM[PC+4]
MCS51 - cykle maszynowe 5/17
1 cykl maszynowy
PCL
PCH
M PC+1L
PC+1H
N PC+1L
PC+1H
N PC+1L
PC+1H
N PC+1L
PC+1H
N
wykonanie 1 rozkazu 1-bajtowego zużywającego 2 cykle maszynowenp. RET, INC DPTR. zał. odczyt z zewnętrznej pamięci programu
1 cykl maszynowy
Φ1
Φ2
PSEN
ALE
P0
P2
M, N - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1]
MCS51 - cykle maszynowe 6/17
1 cykl rozkazowy
1 cykl maszynowy
PCL
PCH
M PC+1L
PC+1H
N PC+2L
PC+2H
O PC+2L
PC+2H
O PC+2L
PC+2H
O
wykonanie 1 rozkazu 2-bajtowego zużywającego 2 cykle maszynowe,np. PUSH B, SJMP skok. zał. odczyt z zewnętrznej pamięci programu
1 cykl maszynowy
Φ1
Φ2
PSEN
ALE
P0
P2
MN, O - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1], O=ROM[PC+3]
MCS51 - cykle maszynowe 7/17
1 cykl rozkazowy
1 cykl maszynowy
PCL
PCH
M PC+1L
PC+1H
N PC+2L
PC+2H
O PC+3L
PC+3H
P PC+3L
PC+3H
P
wykonanie 1 rozkazu 3-bajtowego zużywającego 2 cykle maszynowe,np. LCALL 23AAh, MOV DPTR,#1. zał. odczyt z zewn. pamięci programu
1 cykl maszynowy
Φ1
Φ2
PSEN
ALE
P0
P2
MNO, P - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1], O=ROM[PC+2] P=ROM[PC+3]
MCS51 - cykle maszynowe 8/17
1 cykl rozkazowy
PCL
PCH
M PC+1L
PC+1H
N ADRL
ADRH / P2
DIN PC+1L
PC+1H
N
wykonanie 1 rozkazu realizującego odczyt z zewnętrznej RAM, np. MOVX A,@DPTR / MOVX A,@R0
M, N - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1]
MCS51 - cykle maszynowe 9/17
1 cykl maszynowy 1 cykl maszynowy
Φ1
Φ2
PSEN
ALE
RD
P0
P2
1 cykl rozkazowy
wykonanie 1 rozkazu realizującego zapis do zewnętrznej RAM, np. MOVX @DPTR,A / MOVX @R1,A.
M, N - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1]
MCS51 - cykle maszynowe 10/17
1 cykl maszynowy 1 cykl maszynowy
Φ1
Φ2
PSEN
ALE
WR
P0
P2
1 cykl rozkazowy
PCL
PCH
M PC+1L
PC+1H
N ADRL
ADRH / P2
DOUT PC+1L
PC+1H
N
D Q
C Q
Vcc
P0.X
zewn. magistrala/rejestr
wyj. adresów lub danych
odczyt rejestru
wewn. mag. danych
wpis do rejestru
odczyt pinu
10
MCS51 - port P0 11/17
Struktura bitu portu P0 - dwukierunkowego
MCS51 - port P2 12/17
Struktura bitu portu P2 - quasi-dwukierunkowego
D Q
C Q
Vcc
P2.X
zewn. magistrala/rejestr
wyj. adresów
odczyt rejestru
wewn. mag. danych
wpis do rejestru
odczyt pinu
10
MCS51 - port P1 13/17
Struktura bitu portu P1 - quasi-dwukierunkowego
D Q
C Q
Vcc
P1.X
odczyt rejestru
wewn. mag. danych
wpis do rejestru
odczyt pinu
MCS51 - port P3 14/17
Struktura bitu portu P3 - quasi-dwukierunkowego z funkcjami alternatywnymi
wyj. funkcja alternatywna
odczyt rejestru
wewn. mag. danych
wpis do rejestru
odczyt pinu
wej. funkcja alternatywna
D Q
C Q
Vcc
P3.X
! aby funkcja alternatywna danego bitu portu była aktywna, odpowiedni bit w rejestrze PX tego portu musi być ustawiony na „1”
MCS51 - port P3 15/17
Alternatywne funkcje bitów portu P3:
P3.0 - RxD - wejście portu szeregowego;
P3.1 - TxD - wyjście portu szeregowego;
P3.2 - INT0 - wejście przerwania zewnętrznego;
P3.3 - INT1 - wejście przerwania zewnętrznego;
P3.4 - T0 - zewnętrzne wejście timera 0;
P3.5 - T1 - zewnętrzne wejście timera 1;
P3.6 - WR - impuls zapisu do pamięci zewnętrznej;
P3.7 - RD - impuls odczytu z pamięci zewnętrznej.
W 80X52 także P1.0 i P1.1 mają funkcje alternatywne:
P1.0 - T2 - zewnętrzne wejście timera 2;
P1.1 - T2EX - wejście bramkujące timera 2.
MCS51 - porty Px 16/17
Struktura portów powoduje, że niektóre rozkazy są typu read-modify-write, tzn. czytają rejestr portu, modyfikują go w ALU i odsyłają z powrotem.
Są to rozkazy:
ANL Px,argORL Px,argXRL Px,argJBC Px.bit,adrrelDJNZ Px,adrrelCPL Px.bitCLR Px.bitSET Px.bitMOV Px.bit,CINC PxDEC Px
Rozkazy czytające bezpośrednio końcówki portów:
ANL arg,Px ORL arg,PxXRL arg,PxJB Px.bit,adrrelJNB Px.bit,adrrelCJNE A,Px,adrrelADD A,PxADDC A,PxSUBB A,PxMOV arg,PxXCH A,PxPUSH Px
MCS51 - zerowanie 17/17
Aby reset był skuteczny, należy utrzymać wysoki poziom napięcia na wejściu
RESET przez minimum 24 okresy pracy oscylatora (co odpowiada 2 c.m.).
Zawartość wewnętrznej RAM nie jest zmieniana w trakcie operacji zerowania. Rejestry SFR przyjmują wartości:
PC = 0000h A = 00h TMOD = 00h DPTR = 0000h B = 00h TCON = 00h PSW = 00h P0 = 0FFh TH0 = 00h SP = 07h P1 = 0FFh TL0 = 00h PCON = 00h P2 = 0FFh TH1 = 00h SCON = 00h P3 = 0FFh TL1 = 00h SBUF = ?? IP = 00h IE = 00h
Vcc
RESET
GND
Vcc Vcc
RESET
GND
Vcc