Pertemuan 10 Arsitektur Mikrokontroler 8051
Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu :
• Menjelaskan arsitektur mikrokontroler 8051
Arsitektur Mikrokontroller 8051 Materi: • Pengenalan Mikrokontroler 8051 • On-Chip Memory dan Register • Interrupt Control • Timer/Counter • Serial Port • Power Control
Pengenalan Mikrokontroler 8051 • Definisi Mikrokontroler • Perbedaan Mikrokontroler dan Mikroprosesor
Pengenalan Mikrokontroler 8051 • Blok Diagram 8051 • Komponen:
EXTERNAL INTERRUPTS
– – – – – – – –
CPU 8-Bit On-Chip Osc Interrupt Control Internal ROM Internal RAM Timer/Counter 4 I/O Ports Serial Port
INTERRUPT CONTROL
ROM
TIMER 0
128 BYTES RAM
TIMER 1
CPU
OSC
BUS CONTROL
4 I/O PORTS
SERIAL PORT
TX P0 P1 P2 ADDRESS/DATA
P3
RX
COUNTER INPUTS
On-Chip Memory dan Register • Program Memory (ROM) 0000
Reset
03
0B
13
1B
23
Interrupt Addresses
2B
User's Area
FFFF
On-Chip Memory dan Register • Data Memory (RAM) 0000 00
Register Bank 0
08
Register Bank 1
10
Register Bank 2
18
Register Bank 3
20
Bit-addressable Area
2F
Scratch Pad
FFFF
On-Chip Memory dan Register • Special Function Registers (SFR) F8 F0 E8 E0 D8 D0 C8 C0 B8 B0 A8 A0 98 90 88 80
B ACC PSW T2CON IP P3 IE P2 SCON P1 TCON P0
RCAP2L
RCAP2H
TL2
TH2
TL0 DPL
TL1 DPH
TH0
TH1
SBUF TMOD SP
PCON
Interrupt Control • Memiliki 3 jenis interrupt: – External Interrupt – Timer/Counter Interrupt – Serial Interrupt
• Alamat interrupt vector pada 8051: – – – – –
Interrupt 0 0003h Timer 0 000Bh Interrupt 1 0013h Timer 1 001Bh Serial Interrupt 0023h
• Pin interrupt sharing dengan pin port 3
Timer/Counter • Menghasilkan interrupt timer setelah interval waktu tertentu • Dapat juga difungsikan sebagai counter untuk menghitung jumlah kejadian • 8051 memiliki 2 timer/counter
Timer/Counter • Timer Register: – Timer 0 à TL0(8 bit), TH0(8 bit) – Timer 1 à TL1(8 bit), TH1(8 bit) – Timer 2 à RCAP2L (16 bit), RCAP2H (16 bit)
• SFR yang perlu diperhatikan – IE (EA, ET2, ET1, ET0) – TCON • TR0, TR1 à Set/Cleared by software to turn Timer/Counter ON/OFF – IP (PT2, PT1, PT0) à Only If needed
Timer/Counter Timer Mode: • Timer dalam mikrokontroler dapat berfungsi dalam beberapa mode. Untuk mengubah mode Timer 0 dan Timer 1, register yang diperlukan adalah TMOD. Khusus Timer 2, register yang digunakan adalah T2CON.
GATE à 0 artinya timer akan run pada saat TR menjadi 1 1 artinya timer akan run hanya pada saat TR = 1 dan pin INT bernilai 1 C/T à 0 artinya timer dioperasikan sebagai timer 1 artinya timer dioperasikan sebagai counter
Timer/Counter • M1 dan M0 adalah untuk memilih mode timer M1
M0 Mode
Keterangan
0
0
0
13-bit Timer/Counter
0
1
1
16-bit Timer/Counter
1
0
2
8-bit Auto-Reload Timer/Counter
1
1
3
(Timer 0) TL0 sebagai timer 8-bit dikontrol oleh bit kontrol dari timer 0 sedangkan TH0 sebagai timer 8-bit dikontrol oleh kontrol bit dari timer 1
1
1
3
(Timer 1) Timer/Counter 1 berhenti
Timer/Counter
• Mode 8 bit
Interval =
(256 − TL0)×12 s f Osc
• Mode 8 bit auto reload: Sama dengan yang sebelumnya, tetapi nilai ini diisikan ke TH0 juga agar pada saat terjadi overflow, nilai TH0 secara otomatis akan diisikan ke TL0.
• Mode16 bit:
( 65536 − (TH 0 × 100h + TL 0 )) × 12 Interval = s f Osc
• Mode16 bit auto reload: Sama dengan sebelumnya, tetapi khusus untuk Timer 2, dan nilai reloadnya di berikan di RCAP2H dan RCAP2L
Serial Port • •
•
Dalam komunikasi serial, perlu diperhatikan kecepatan transfer data atau disebut juga dengan baud rate. Untuk membangkitkan baud rate dapat digunakan timer 1 dengan mode 8 bit auto-reload maupun timer 2 dengan mode 16 bit autoreload. SCON SM0
•
SM1
SM2
REN
TB8
RB8
TI
RI
SERIAL MODE: SM0
SM1
Mode
Description
BaudRate
0
0
0
SHIFT REGISTER
Fosc./12
0
1
1
8-Bit UART
Variable
1
0
2
9-Bit UART
Fosc./64 OR Fosc./32
1
1
3
9-Bit UART
Variable
Serial Port Baud Rate • Mode 0 Baud Rate = Fosc./12 • Mode 1 – Using Timer 1:
k ∗ FOSC k ∗ FOSC Baud Rate = TH 1 = 256 − 32∗12∗ (256− TH1 ) 384 ∗ Baud Rate Nilai k tergantung pada bit SMOD (Register PCON) If SMOD = 0, then K = 1 If SMOD = 1, then K = 2 à Double BaudRate
Serial Port Baud Rate • Mode 1 – Using Timer 2, ada 2 macam: – Jika Timer 2 diclock dari pin T2 (P1.0) Baud Rate =
Timer 2 overflow Rate 16
– Jika Timer 2 diclock dari internal Baud Rate =
Fosc. 32 * (65536 − ( RCAP 2 H , RCAP 2 L))
RCAP 2 H , RCAP 2 L = 65536 −
• Mode 2 – If SMOD = 1, then BaudRate = Fosc./32 – If SMOD = 0, then BaudRate = Fosc./64
• Mode 3 à Same as Mode 1
Fosc. 32 * Baud Rate