LOGO
Oleh: Junartho Halomoan (juned_new@yahoo.com)
Mikroprosesor dan Antarmuka
Antarmuka I/O
Komunikasi I/O [1]
Selain bisa berkomunikasi dengan memori melalui rangkaian antarmuka memori, mikroprosesor 8088 bisa mengakses port I/O. Port tersebut diakses untuk membawa data ke mikroprosesor/CPU (input) atau mengirim data dari mikroprosesor
JUN
Komunikasi I/O [2]
CPU (µP) dapat transfer data dari/ke I/O dengan 2 cara: parallel dan serial.
Komunikasi Parallel cepat dan efisien.
Komunikasi parallel mengunakan lebih dari 8 kabel, digunakan untuk mentransfer data dalam jarak beberapa kaki (Cth. printer, hard disk dll).
Komunikasi I/O [3]
Dahulu komunikasi paralel dapat transfer data lebih cepat daripada komunikasi serial. Sekarang komunikasi serial dapat lebih cepat dibandingkan komunikasi paralel (cth.SATA)
komunikasi paralel sangat tidak efisien untuk komunikasi jarak jauh karena membutuhkan sejumlah kabel dan
sinkronisasi pensinyalan komunikasi paralel juga menyulitkan
JUN
Komunikasi I/O [4]
Komunikasi serial mengirimkan 1 bit pada suatu waktu, sehingga lebih lama
dibandingkan paralel (dahulu)
Komunikasi serial merupakan solusi terbaik untuk komunikasi jarak jauh. Karena tidak ada masalah sinkronisasi. Komunikasi
serial membutuhkan lebih sedikit kabel. Contoh komunikasi serial: Modem,
keyboard, USB, dll
Komunikasi I/O – memory [5]
JUN
Pemrograman I/O [1]
Ada dua instruksi assembly yangmelakukan pemrograman input/ output data yakni “IN” dan “OUT”. Dengan menggunakan instruksi tersebut data dikirim dari akumulator (AX,AL, atau AH) ke port atau menerima data dari port ke dalam akumulator
Pemrograman I/O - 8bit data [2]
Instruksi pemrograman I/O data 8 Bit
JUN
Pemrograman I/O- 8bit data [3]
Keterangan Instruksi I/O data 8 bit (AL) format (1), port# merupakan alamat portdari 00 sampai FFh pengalamatan 8 bit berarti dapat mengakses port sebanyak 256 input dan 256 output. Tidak ada
register segment apapun digunakan di sini format (2) , port# merupakan alamat port
dari 0000 sampai FFFFh pengalamatan 16 bit berarti dapat mengakses port sebanyak 65.536 input dan 65.536 output. Tidak ada register segment apapun digunakan di sini.
Pemrograman I/O – contoh A [4]
Buat urutan program I/O yangmengirimkan data FFh ke port alamat ABh?
MOV AL,FFH OUT ABH,AL
Buat urutan program I/O yang
mengirimkan data FFh ke port alamat B000h?
MOV DX,B000H ;karena pengalamatan 16
bit maka digunakan reg. DX
JUN
Pemrograman I/O – contoh B [5]
Diasumsikan port alamat 22h merupakanmasukan untuk monitor suhu. Buat urutan program untuk memonitor secara kontinu pada temperatur 100 derajat. Ketika
mencapai 100, maka register BH mengandung nilai “Y”
BACK: IN AL,22H ; monitor suhu @ 22h
CMP AL,100 ;apakah temp =100?
JNZ BACK ; jika tidak, terus monitor
MOV BH,‟Y‟ ;temp =100, salin „Y‟ ke BH
Pemrograman I/O - 16bit data [6]
JUN
Pemrograman I/O – contoh C [7]
Diasumsikan data 16 bit reg AX=98F6hdan port alamat = 47h maka instruksi pemrograman I/Onya adalah:
MOV AX,98F6h OUT 47H,AX
Penjelasan: data 8bit low “F6” ke port alamat 47h dan 8bit high “98” ke port alamat 48h. Ingat prinsip “little endian”!
Komunikasi PPI [1]
Programmable Peripheral Interface (PPI) merupakan suatu perangkat antarmuka I/O yang dapat diprogram untuk
melakukan komunikasi paralel. Contoh I/O: keyboard, printer, dll
Chip 8255 PPI merupakan salah satu chip yang dapat melakukan antarmuka I/O dengan komunikasi paralel dari/ke
mikroprosesor. Chip 8255 memiliki 3 port terpisah yang bisa diakses A, B, dan C.
JUN
Komunikasi PPI [2]
Komunikasi PPI [3]
JUN
Komunikasi PPI [4]
Komunikasi PPI [5]
PA0-PA7 (Port A) : 8 bit port yang dapat diprogram sebagai input atau output atau bi-directional input/output.
PB0-PB7 (Port B) : 8 bit port yang dapat diprogram sebagai input atau output atau bi-directional input/output.
PC0-PC7 (Port C) : 8 bit port yang dapat diprogram sebagai input atau output. Port C bisa dibagi 2 bagian yakni: CU (Upper 4
JUN
Komunikasi PPI [6]
RD and WR : Pin ini merupakan sinyal masukan aktif rendah (low) ke 8255
digunakan untuk membaca/ menulis dari/ ke I/O. Jika tipe isolated I/O, maka µP menghubungkan pin IOR dan IOW ke PIN RD dan WR. Jika tipe memory-mapped I/O, maka µP menghubungkan pin MEMR dan MEMW ke PIND RD dan WR
RESET: pin masukan aktif tinggi ke 8255 digunakan untuk mereset control register. Ketika reset diaktifkan semua port bekerja sebagai port input
Komunikasi PPI [7]
A0, A1, dan CS: Pin CS (masukan aktif rendah) digunakan untuk me-enable chip 8255, Pin A0 dan A1 digunakan untuk mengakses salah satu port atau control register/ command byte/ control word register
JUN
Komunikasi PPI [8]
Komunikasi PPI [9]
JUN
Komunikasi PPI – MODE 0 [10]
PPI dapat diprogram 3 jenis mode:1) Mode 0:mode sederhana input atau output mode 0 merupakan mode dasar I/O. Pada mode ini port A,B atau C bisa diprogram sebagai input atau output. Mode ini tidak ada proses handshaking
Catatan:pada mode ini, port tidak dapat bekerja sebagai port input dan port output pada saat bersamaan. Karakteristik port C bisa diprogram terpisah pada CL (PC0-PC3) dan CU (PC4-PC7). CL dan CU independen.
Komunikasi PPI – soal A [11]
Antarmuka I/O 8255 dalam mode 0 dengan konfigurasi port: port A sebagai input, B sebagai output, dan semua bit dalam port C sebagai output.Tentukan isi control
register dan buat program input data pada port A dan output data pada port B dan C. base address 60h!
Control register = “1 0 0 1 0 0 0 0” = 90h
JUN
Komunikasi PPI – soal A [12]
Program:MOV AL,90H ; inisialisasi 8255
MOV DX,63H ; alamat control register
OUT DX,AL ;output Control Byte ke Control
register
MOV DX,60H ;alamat Port A
IN AL,DX ;input data Port A
MOV DX,61H ; alamat Port B
OUT DX,AL ;output data Port B
MOV DX,62H ; alamat Port C
OUT DX,AL ;output data Port C
Komunikasi PPI – soal B [13]
Antarmuka I/O 8255 dalam mode 0 dengan konfigurasi port: port A sebagai input, B sebagai output, dan port CL sebagai input, port CU sebagai output.Tentukan isi control register dan buat program input data pada port A, output data pada port B, input data pada port CL, dan output data padaPort CU.base address 60h!
Control register = “1 0 0 1 0 0 0 1”
JUN
Komunikasi PPI – soal B [14]
Program:MOV AL,91H ; inisialisasi PPI
MOV DX,63H ;alamat Control Register
OUT DX,AL ; output Control Byte ke
Control register
MOV DX,60H ;alamat Port A
IN AL,DX ;input data Port A
MOV DX,61H ; alamat Port B
OUT DX,AL ; alamat Port B
Komunikasi PPI – soal B [15]
; Port CL sebagai inputMOV DX,62H ; alamat Port C
IN AL,DX ;input data port C
AND AL,0FH ;dapatkan lower nibble bits
Port CL
; Port CU sebagai output
MOV CL,4 ;rotate count =4
ROL AL,CL ;shift bit ke posisi upper nibble
bit
OUT DX,AL ;output PCL to PCU
JUN
Komunikasi PPI - MODE 1 [16]
2) Mode 1(mode I/O dengan kemampuanhandshaking). Handshaking mengacu pada proses komunikasi antara perangkat I/O dengan PPI 8255. Sebagai contoh Perangkat Printer. Pada Mode ini, Port A dan Port B digunakan Input atau Output, sedangkan port C digunakan untuk
pensinyalan handshaking
Komunikasi PPI - MODE 1 [17]
JUN
Komunikasi PPI - MODE 1 [18]
uP PPI Perangkat I/O STB IBF INTR RDKomunikasi PPI - MODE 1 [19]
Proses Input Data Mode 11) Sinyal strobe/STB dari I/O ke pin PC.4 2) Data masuk dari perangkat
I/O ke port A
3) Sinyal IBF (buffer full) dari pin PC.5 ke perangkat I/O 4) Sinyal INTR (interrupt req)
dari pin PC.3 ke µP
5) Sinyal µP (pin RD) ke 8255 (pin RD) untuk membaca 8255 µP
JUN
Komunikasi PPI - MODE 1 [20]
Komunikasi PPI - MODE 1 [21]
uP PPI Perangkat I/O OBF INTR WR ACK
JUN
- ITTELKOM
Komunikasi PPI - MODE 1 [22]
Proses Output Data Mode 11) Sinyal dari µP (WR) ke 8255 (WR)
2) Sinyal INTR (interrupt req) dari pin PC.3 ke µP
3) Data keluar µP 8255 I/O
4) Sinyal OBF (buffer full) dari pin PC.5 ke perangkat I/O
5) Sinyal ACK (acknowledge) dari I/O ke pin 8255 (ACK)
6) Data sudah ditulis ke I/O
Komunikasi PPI - MODE 2 [23]
3) Mode 2(Bi-directional I/O dengankemampuan handshaking). Salah satu port mempunyai 2 fungsi mentransfer data input dan output – bi-directional. Komunikasinya diatur dengan pensinyalan handshaking. Pada Mode ini Port A
digunakan port bi-directional dan port C digunakan untuk pensinyalan
handshaking. Port B bisa dikonfigurasikan sebagai mode 0 atau 1. Mode 2
merupakan gabungan mode1 input dan output (pensinyalan handshaking sama).
JUN
Komunikasi PPI - MODE 2 [24]
Komunikasi PPI - Keypad [25]
JUN
Komunikasi PPI – 7segment [26]
Komunikasi PPI - Keypad [26]
Buat urutan program I/O keypad 4x4dengan PPI 8255 dan buat rangkaian decodernya. Alamat PPI 70-73
Buat urutan program I/O seven segment dengan PPI 8255 dan buat rangkaian decodernya. Alamat PPI 80-83
Buat urutan program PWM duty cycle sebesar 50% dengan perioda sebesar 10ms menggunakan PPI 8255
JUN
Komunikasi Paralel-Program [1]
Standard Parallel PortPort Parallel merupakan port yang paling sering digunakan untuk antarmuka. Port tersebut bisa digunakan untuk input data samapai 9 bit atau output data sampai 12 bit.walau membutuhkan rangkaian
eksternal
Port parallel dapat ditemukan di belakang PC anda dengan konektor female D-Type 25 pin
Komunikasi Paralel-Program [2]
Port parallel distandarisasikan oleh IEEE1248, release pertama pada tahun 1994 Standar tersebut mendefinisikan 5 mode
operasi yakni,
1. Compatibility Mode. (Centronics Mode) 2. Nibble Mode
3. Byte Mode √
4. EPP Mode (Enhanced Parallel Port).
5. ECP Mode (Extended Capabilities Mode).
JUN
Komunikasi Paralel-Program [3]
Compatibility mode disebut juga"Centronics Mode". Pada mode ini, anda hanya bisa melakukan output data. Untuk menerima data, anda harus merubah ke Nibble atau Byte mode.
Nibble mode melakukan input data 4 bit (nibble) dari perangkat ke komputer
Byte mode menggunakan fitur Parallel's bi-directional melakukan input data 8 bits (byte)
Komunikasi Paralel-Program [4]
Extended dan Enhanced Parallel Portsmenggunakan rangkaian tambahan untuk mengendalikan dan membangkitkan sinyal handshaking
JUN
Komunikasi Paralel-Port [5]
Port parallel biasanya menggunakan 3 base address. LPT1 biasanya pada base address 378h, sedangkan LPT2 biasanya pada base address 278h. 378h & 278h biasa
digunakan untuk akses port parallel
Komunikasi Paralel-H/W [6]
H/W yang digunakan untuk komunikasi paralel konektor D-type 25 pin dan centronics 36 pin
Konektor female D-Type 25 pin biasa ditemukan di komputer dan konektor Centronics 36 pin
ditemukan pada printer D-Type 25 pin
JUN
Komunikasi Paralel-H/W [7]
Komunikasi Paralel-S/W [8]
Port data Data 0–Data 7 Pin 2 – Pin 9 Note1:Jika port merupakan Bi-Directional
maka operasi baca dan tulis bisa dilakukan. Base address disebut data port atau data
JUN
Komunikasi Paralel-S/W [9]
Status Port menggunakan 5 input (Pins 10,11,12,13 & 15), sebuah register status IRQ dan 2 bit reserved. Port Status hanya bisa digunakan untuk membaca saja
Komunikasi Paralel-S/W [10]
Mode bi-directional bisa diaktifkan dengan memberikan tegangan 5 volt pada port control bit ke-5. Dengan mengaktifkan
bi-JUN
Komunikasi Paralel- S/W [11]
Buat urutan program I/O paralel untukmenulis data 11111111B ke port data SPP dengan base address 378h?
MOV DX,378H ; base address SPP =378H,
offset yang digunakan base+0 = 378 +0 = 378h
MOV AL,11111111B ; data diletakkan pada
register AL
OUT DX,AL; data ditulis ke port data
Komunikasi Paralel – S/W [12]
Buat urutan program I/O paralel untuk membaca data dari port data SPP dengan base address 378h dan mode bi-directional?
MOV DX,378H ; base address SPP =378H, offset yang digunakan base+2 = 378 +2 = 37Ah port control
MOV AL,00000100B ; data diletakkan pada register AL enable bi-directional
OUT DX,AL; data ditulis ke port control
MOV DX,378H ; base address SPP =378H, offset yang digunakan base+0 = 378 +0 = 37Ah port data
JUN
Komunikasi Paralel-soal C [13]
Buat rangkaian address decoder untukmengaktifkan controller port parallel dengan base address 378h (cat.controller diasumsikan hanya mempunyai satu pin chip select – aktif rendah/ low)?
Komunikasi Serial [1]
Komunikasi Serial terbagi 2 metode: a) Komunikasi sinkron (Synchronous)
membutuhkan sinyal pewaktuan yang sama untuk sinkronisasi. Hal ini berarti sinyal clock harus ditransmisikan. Pada metode sinkron satu blok data suatu waktu tertentu ditransmisikan
JUN
Komunikasi Serial [2]
b) Komunikasi Asinkron (asynchronous) merupakan komunikasi yang tidak membutuhkan pesinyalan clock yang sama dan mentransmisikan data (single byte) pada suatu waktu tertentu. Contoh: bit start dan stop digunakan untuk
mengindikasikan penerimaan sebuah byte
Komunikasi Serial [3]
Jenis transmisi pada komunikasi serial a) Transmisi simpleks (simplex): Transmisi
hanya satu arah saja
JUN
Komunikasi Serial [4]
b) Transmisi Half Duplex: Transmisi dua arah tetapi hanya satu arah pada suatu waktu c) Transmisi Full Duplex: Transmisi dua arah
pada suatu waktu
Jenis Perangkat yang menggunakan komunikasi serial terbagi 2 macam DCE (Data Communications Equipment) dan DTE (Data Terminal Equipment.)
Komunikasi Serial [5]
DTE mengacu pada terminal end dan komputer yang menerima dan mengirim data, sedangkan
DCE mengacu pada perangkat komunikasi yang bertanggung jawab untuk
mentransfer data. Contoh Perangkat DTE: komputer dan DCE: modem
JUN
Komunikasi Serial [6]
uP UART Data 8 bit TTL BipolarUART (Universal Asynchronous Receiver Transmitter) Bipolar TTL Modem/ Printer Level tegangan RS-232 Level tegangan TTL DCE/ DTE DTE
Komunikasi Serial [7]
Chip UART mentransmisikan data paralel dari µP ke serial (dalam format tegangan TTL) lalu diterima oleh IC MC1488
(mengubah tegangan TTL menjadi bipolar
① ② ③ ④ ④
JUN
- ITTELKOM
Komunikasi Serial [8]
MAX 232 = MAX1488 + MAX 1489
Komunikasi Serial [9]
Agar dua perangkat dapat berkomunikasi serial maka diperlukan suatu protokol. Protokol pada komunikasi serial asinkron dikirim/diterima dalam satu frame data, yang diawali oleh start bit dan diakhiri oleh stop bit
JUN
Komunikasi Serial [10]
Pengiriman data komunikasi asinkron menggunakan orientasi karakter
(character-oriented) Kode ASCII Start bit selalu berjumlah satu bit dan
selalu bernilai “0” (low) sedangkan stop bit bisa berjumlah dua bit dan selalu bernilai “1” (high). Sebagai contoh dikirim data ascii karakter “A” (nilai biner 0100 0001) maka 1 frame data terdiri dari:
Start bit + 0100 0001 + stop bit
Data LSB dikirim terlebih dahulu
Komunikasi Serial – RS232 [11]
Spesifikasi kelistrikan komunikasi serialyang biasa digunakan komputer adalah EIA (Electronics Industry Association) RS232C standard. Parameternya mencakup:
1. "Space" atau logic 0 antara +3V dan +25V 2. "Mark" atau logic 1 antara +3V dan +25 V 3. Tegangan antara +3 and -3 volts tidak
terdefinisikan
4. Tegangan Open circuit tidak lebih dari 25V 5. Arus Short circuit tidak lebih dari 500mA
JUN
Komunikasi Serial – RS232 [12]
Komunikasi Serial – RS232 [13]
JUN
Komunikasi Serial – RS232 [14]
Komunikasi Serial – UART [15]
Chip UART (Universal AsynchronousReceiver-Transmitter) merupakan chip yang digunakan untuk komunikasi serial pada komputer dan level tegangannya TTL Contoh: Chip 8250 series, 16450, 16550, 16650, & 16750 yang paling sering
digunakan
JUN
Komunikasi Serial – UART [16]
Komunikasi Serial – UART [17]
Perbedaan 16550 dan 8250adalah pin 24 dan 29. Pin transmit ready dan receive ready digunakan untuk
menandakan aktif/ tidaknya suatu chip
Chip 16550 bisa digunakan untuk transmitter dan
receiver. Jenis transmisi yang digunakan bisa
JUN
Komunikasi Serial – UART [18]
Pin A2,A1,A0 register internal untuk mengatur pemrograman dan transfer data Pin CS0,CS1,CS2 untuk meng-enablekan
IC
Pin D0-D7 Pin data dari/ke µP
Komunikasi Serial – UART [19]
Pin TXRDY,RXRDY, RTS,CTS, DCD,DSR,RI Pin Kontrol
Pin Baudout Sinyal Clock masukan Pin MR Master reset
Pin RD digunakan untuk membaca data dari port address serial
Pin WR digunakan untuk mentransfer data ke port address serial
JUN
Komunikasi Serial – S/W [20]
COM 1 port komunikasi serial no.1, memiliki base address di 3F8h
Komunikasi Serial – S/W [21]
Untuk bisa mengetahui alamat base address COM1, kita dapat mengakses ke memori BIOS
JUN
Komunikasi Serial – S/W [22]
Komunikasi Serial – S/W [23]
DLAB kepanjangan dari Divisor LatchAccess Bit. Ketika DLAB diset '1' melalui line control register, dua register (Divisor latch low byte dan Divisor latch high byte) bisa digunakan untuk mengatur kecepatan komunikasi biasa disebut baudrate dalam satuan bit per second. UART bekerja pada frekuensi clock 1,8432MHz dibagi 16 didapatkan baud rate maksimum 115.200 bps
JUN
Komunikasi Serial – S/W [24]
Komunikasi Serial – S/W [25]
Line Control Register (√)JUN
Komunikasi Serial – S/W [26]
Line Status Register (√)Komunikasi Serial – S/W [27]
Modem Control RegisterJUN
Komunikasi Serial – S/W [28]
Modem Status RegisterKomunikasi Serial – S/W [29]
Jika diinginkan baudrate 2400 bps, carinilai divisor, nilai divisor latch low byte, nilai divisor latch low byte? (Cat. Clock referensi 1,8432MHz)
Divisor =(1,8432 * 106 )/ (16*2400) =48
Divisor latch = 0030h (nilai 48 dalam desimal)
Div.latch low = 30h Div.latch high = 00h
JUN
Komunikasi Serial – S/W [30]
Buat urutan instruksi pemrograman serialdengan baudrate yang diinginkan 9600 bps
MOV AL,80H ;10000000B enable DLAB
MOV DX,3FBH; alamat line control register
(3F8H+03)
OUT DX,AL ; DLAB enable
;kemudian mengirim nilai divisor
MOV AL,12 ;9600 baud rate
MOV DX,3F8H ;alamat divisor latch Low
byte (3F8H+0)
Komunikasi Serial – S/W [31]
OUT DX,AL ; kirim Div.latch low byte
MOV AL,00
INC DX ; alamat divisor latch high byte
(3F8H+01)
OUT DX,AL ; kirim Div.latch high byte
MOV AL,00H ;00000000B disable DLAB
MOV DX,3FBH; alamat line control register
(3F8H+03)
OUT DX,AL ; DLAB disable
JUN
Komunikasi Serial – S/W [32]
(mengacu soal sebelumnyabaudrate=9600) Tambahkan urutan instruksi untuk mengirimkan data biner “10001000” dengan format data 8 bit, 1 stop bit, tanpa parity
;Didapatkan dari tabel Line Control
Register 0000 0111B = 0AH dikirimkan ke alamat LCR (base+03H)
MOV DX,3FBH ;3F8H+03
Komunikasi Serial – S/W [33]
MOV AL,0AH ; data 8 bit , 1 stop bit, no
parity
OUT DX,AL;mengeluarkan data
MOV DX,3FDH; (3F8+05) cek line status
register apakah siap mentransmisikan data? bit ke-5 LSR
BACK: IN AL,DX CMP AL,10H JNZ BACK
JUN
Komunikasi Serial – S/W [34]
MOV DX,3F8H ;3F8H+0 Transmitter
holding buffer
MOV AL,88H ; data yang ditransmisikan
OUT DX,AL; data ditransmisikan ke port
(mengacu soal sebelumnya
baudrate=9600) Tambahkan urutan
instruksi untuk menerima data biner dngan format data 8 bit, 1 stop bit, tanpa parity ;Didapatkan dari tabel Line Control
Register 0000 0111B = 0AH dikirimkan ke alamat LCR (base+03H)
Komunikasi Serial – S/W [35]
MOV DX,3FBH ;3F8H+03
MOV AL,0AH ; data 8 bit , 1 stop bit, no
parity
OUT DX,AL ;mengeluarkan data
MOV DX,3FDH; (3F8+05) cek line status
register apakah data siap diterima? bit ke-0 LSR BACK: IN AL,DX CMP AL,01H JNZ BACK
JUN
- ITTELKOM
Komunikasi Serial – S/W [36]
MOV DX,3F8H ;3F8H+0 receive buffer
IN AL,DX; data dibaca dari port