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 zewnętrzny generator XTAL2 XTAL1 GND bufor TTL HMOS CHMOS XTAL2 XTAL1 GND rozwiązanie klasyczne XTAL2 XTAL1 GND bufor CMOS zewnętrzny generator wbudowany oscylator XTAL2 XTAL1 GND Φ1 : 6MHz Φ2 : 6MHz 12MHz 1 cykl maszynowy
M, N, O - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1], O=ROM[PC+2] MCS51 - cykle maszynowe 4/17 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 Φ2 PSEN ALE P0 P2 PCL M PC+1L N PC+1L N PC+2L O PC+2L O PCH PC+1H PC+1H PC+2H PC+2H 1 cykl maszynowy = 1 cykl rozkazowy 1 cykl maszynowy = 1 cykl rozkazowy M, N, O - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1], O=ROM[PC+2]
MCS51 - cykle maszynowe 5/17 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 Φ2 PSEN ALE P0 P2 PCL M PC+1L N PC+2L O PC+3L P PC+4L Q PCH PC+1H PC+2H PC+3H PC+4H 1 cykl maszynowy = 1 cykl rozkazowy 1 cykl maszynowy = 1 cykl rozkazowy 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]
M, N - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1] MCS51 - cykle maszynowe 6/17 wykonanie 1 rozkazu 1-bajtowego zużywającego 2 cykle maszynowe np. RET, INC DPTR. zał. odczyt z zewnętrznej pamięci programu Φ1 Φ2 PSEN ALE P0 P2 PCL M PC+1L N PC+1L N PC+1L N PC+1L N PCH PC+1H PC+1H PC+1H PC+1H 1 cykl maszynowy 1 cykl maszynowy 1 cykl rozkazowy M, N - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1]
MN, O - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1], O=ROM[PC+3] MCS51 - cykle maszynowe 7/17 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 Φ2 PSEN ALE PCL PCH M PC+1L PC+1H N PC+2L PC+2H O P0 P2 1 cykl maszynowy 1 cykl maszynowy 1 cykl rozkazowy MN, O - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1], O=ROM[PC+3]
MCS51 - cykle maszynowe 8/17 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 Φ2 PSEN ALE PCL PCH M PC+1L PC+1H N PC+2L PC+2H O PC+3L PC+3H P P0 P2 1 cykl maszynowy 1 cykl maszynowy 1 cykl rozkazowy MNO, P - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1], O=ROM[PC+2] P=ROM[PC+3]
M, N - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1] MCS51 - cykle maszynowe 9/17 wykonanie 1 rozkazu realizującego odczyt z zewnętrznej RAM, np. MOVX A,@DPTR / MOVX A,@R0 Φ1 Φ2 PSEN ALE RD PCL PCH M PC+1L PC+1H N ADRL ADRH / P2 DIN P0 P2 1 cykl maszynowy 1 cykl maszynowy 1 cykl rozkazowy M, N - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1]
M, N - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1] MCS51 - cykle maszynowe 10/17 wykonanie 1 rozkazu realizującego zapis do zewnętrznej RAM, np. MOVX @DPTR,A / MOVX @R1,A. Φ1 Φ2 PSEN ALE WR PCL PCH M PC+1L PC+1H N ADRL ADRH / P2 DOUT P0 P2 1 cykl maszynowy 1 cykl maszynowy 1 cykl rozkazowy M, N - bajty kodów rozkazów: M=ROM[PC], N=ROM[PC+1]
Struktura bitu portu P0 - dwukierunkowego MCS51 - port P0 11/17 Struktura bitu portu P0 - dwukierunkowego 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 1
Struktura bitu portu P2 - quasi-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 1
Struktura bitu portu P1 - quasi-dwukierunkowego 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,arg ORL Px,arg XRL Px,arg JBC Px.bit,adrrel DJNZ Px,adrrel CPL Px.bit CLR Px.bit SET Px.bit MOV Px.bit,C INC Px DEC Px Rozkazy czytające bezpośrednio końcówki portów: ANL arg,Px ORL arg,Px XRL arg,Px JB Px.bit,adrrel JNB Px.bit,adrrel CJNE A,Px,adrrel ADD A,Px ADDC A,Px SUBB A,Px MOV arg,Px XCH A,Px PUSH 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