Pengertian Flip-Flop Flip-Flop adalah rangkaian arus listrik yang bekerja berdasarkan arus listrik dari berbagai macam gerbang sederhana dari arus listrik yang berhubungan saling menyilang. flipflop biasa digunakan sebagai pengolahan data digital yang di terapkan ke perangkat elektronik. Jenis - Jenis Flip-Flop: 1. JK Flip-Flop (Master Slave JK Flip-Flop)
Flip-Flop ini terdiri dari 3 inputan yaitu :
J K Dan Clock
Kelebihan JK Flip-flop adalah tidak adanya kondisi terlarang atau yang berarti di beri berapapun inputan asalkan terdapat clock maka akan terjadi perubahan pada keluarannya / outputnya. berikut adalah symbol dan tabel kebenaran dari JK Flip-Flop. 2. RS Flip-Flop RS FF ini adalah dasar dari semua Flip-flop yang memiliki 2 gerbang inputan / masukan yaitu R dan S. R artinya "RESET" dan S artinya "SET". Flip-flop yang satu ini mempunyai 2 keluaran / outputyaitu Q dan Q`. Bila S diberi logika 1 dan R diberi logika 0, maka output Q akan berada pada logika 0 dan Q not pada logika 1. Bila R diberi logika 1 dan S diberi logika 0 maka keadaan output akan berubah menjadi Q berada pada logik 1 dan Q not pada logika 0. Sifat paling penting dari FlipFlop adalah bahwa sistem ini dapat menempati salah satu dari dua keadaan stabil yaitu stabil I diperoleh saat Q =1 dan Q not = 0, stabil ke II diperoleh saat Q=0 dan Q not . Berikut adalah Symbol dan Tabel kebenaran dari RS Flip-Flop:
3. D Flip-Flop D Flip-flop merupakan salah satu jenis Flip-flop yang dibangun dengan menggunakan Flip-flop RS. Perbedaan dengan Flip-flop RS terletak pada inputan R, pada D Flip-flop inputan R terlebih dahulu diberi gerbang NOT. maka setiap masukan ke D FF ini akan memberi keadaan yang berbeda pada input RS, dengan demikian hanya terdapat 2 keadaan "SET" dan "RESET" S=0 dan R=1 atau S=1 dan R=0, jadi dapat disi. Berikut adalah gambar dari symbol dan data sheet D Flip - flop.
4. CRS Flip-Flop Adalah clocked RS-FF yang dilengkapi dengan sebuah terminal pulsa clock. Pulsa clock ini berfungsi mengatur keadaan Set dan Reset. Bila pulsa clock berlogik 0, maka perubahan logik pada input R dan S tidak akan mengakibatkan perubahan pada output Q dan Qnot. Akan tetapi apabila pulsa clock berlogik 1, maka perubahan pada input R dan S dapat mengakibatkan perubahan pada output Q dan Q not. Berikut adalah gambar dari Symbol dan Tabel kebenaran dari RS Flip - flop.
5. T Flip-Flop T Flip-flop merupakan rangkaian flip-flop yang telah di buat dengan menggunakan flip-flop J-K yang kedua inputnya dihubungkan menjadi satu maka akan diperoleh flip-flop yang memiliki watak membalik output sebelumnya jika inputannya tinggi dan outputnya akan tetap jika inputnya rendah. Berikut adalah gambar tabel kebenaran gerbang logika dan symbol dari T Flip - flop.
Prinsip Kerja Flip-Flop Bila pulsa penabuh flip-flop induk berkeadaan 1,maka keluarannya akan berubah menurut keadaan masukan J dan K pada saat itu, sesuai dengan tabel Tetapi, karena adanya inverter pada masukan flip-flop budak, maka masukan S dan R flip-flop budak itu akan tetap 0 dan keluarannya tidak mengalami perubahan. Tetapi pada saat penabuh induk kembali 0, yang berarti keluaran inverter menjadi 1, maka keluaran budak berubah menurut keadaan keluaran induk saat itu, yaitu keadaannya sesudah ditabuh. Perhatikan bahwa bila penabuh berkeadaan 0 (CP= 0, dan CP=1), maka gerbanggerbang AND pada masukan budak menjadi aktif dan keluaran Q akan mengikuti keadaan P karena hanya ada dua kemungkinan kombinasi RS untuk budak, yaitu : "RS= 10 atau RS= 01. Bila P=1 maka RS=01 dan Q menjadi 1 sedangkan bila P=0, maka RS=10 dan Q menjadi 0. Dengan susunan ini, dapat dijamin bahwa persamaan flip-flop Q=QK+Q J akan tetap dipenuhi sejauh keadaan J dan K hanya berubah di antara dua pulsa penabuh positif (selagi CP=1). Bila J dan/atau K berubah selagi CP=0, maka apa yang dipindahkan ke flip-flop budak adalah keadaan P akibat perubahan terakhir sebelum CP berubah."
UNIT INPUT-OUTPUT UNTUK I/O PARALEL Z-80 PIO Input Output (I/O) merupakan komponen pokok dari sistem mikroprosesor. Informasi di luar CPU harus dikumpulkan dan diproses. Begitu diproses informasi harus disajikan dan dikirim untuk mengendalikan berbagai alat Input Output. Perkembangan mikroelektronika telah mendukung perkembangan I/O dari unprogrammable ke programmable sistem. Input Output (I/O) terbagi menjadi dua macam yaitu I/O Paralel dan I/O Serial. Beberapa komponen I/O paralel terprogram yang sangat populer dalam sistem mikroprosesor adalah Z-80 PIO (Programable Input Output) dan (Programable Peripheral Interface) PPI 8255. Namun pada pertemuan kelima untuk sesi sistem mikroprosesor kali ini kita hanya membahas tentang I/O Paralel Z-80 PIO, sedangkan yang lainnya akan kita bahas pada pertemuan selanjutnya. IC Z-80 PIO adalah IC I/O paralel terprogram yang perilakunya dapat disetel menggunakan program. Z-80 PIO adalah salah satu chip yang diproduksi untuk fasilitas antar muka dengan Z-80 CPU. Z-80 PIO memiliki kelengkapan : - Dua periperal port antar muka paralel 8 bit independent dengan kendali jabat tangan. - Penggerak I/O terinterupsi. - Empat mode operasi, yaitu : 1. Mode 0 : Byte Output dengan jabat tangan 2. Mode 1 : Byte Input dengan jabat tangan 3. Mode 2 : Byte Bidirectional dengan jabat tangan (hanya untuk Port A) 4. Mode 3 : untuk Bit Control - Logika interupsi dengan prioritas daisy chain. - Semua input dan output kompatibel dengan TTL. - Susunan pin IC Z-80 PIO dilukiskan seperti Gambar 1 dan 2 berikut ini.
Z-80 PIO terdiri dari dua port yaitu Port A dan Port B. Masing-masing port dilengkapi dengan pena-pena jabat tangan. Dengan 40 pin dalam dua lajur fungsi masing-masing pin dapat dikelompokkan dalam empat kelompok yaitu : a.
Kelompok Bus Data
- D0 – D7 adalah bus data 8 bit dua arah digunakan sebagai saluran data dan kata perintah. - A0 - A7 adalah saluran dua arah untuk transfer data atau status dan sinyal kontrol antara peralatan I/O dan Port A. - B0 – B7 merupakan saluran dua arah untuk transfer data atau status dan sinyal kontrol antara I/O dan Port B. b.
Kelompok Kontrol
- B/A* sel adalah pin saluran sinyal pemilih port. Pada kondisi rendah (0) yang aktif adalah Port A, dan Port B aktif jika pin ini berkondisi tinggi (1). - C/D* sel adalah pin saluran sinyal pemilih register kontrol atau register data. Jika C/D* = 0 register yang aktif adalah register data dan C/D* = 1 register yang aktif adalah register perintah. - CE* adalah sinyal aktif rendah yang berfungsi sebagai pin pengaktif chip Z-80 PIO. - M1* adalah sinyal aktif rendah bekerja mensinkronkan kerja interrupt logic. Pada saat M1* dan RD* aktif, Z-80 CPU melakukan fetching sebuah instruksi ke memori. Sebaliknya pada saat M1* dan IORQ* aktif, CPU melakukan pengenalan interupsi. Dan jika M1* aktif tanpa IORQ* atau RD*, Z-80 PIO ada dalam keadaan reset. - IORQ* adalah sinyal Input Output Request aktif rendah bekerja pada saat CPU mentransfer perintah atau data ke Z-80 CPU. - READ* adalah sinyal aktif rendah yang menunjukkan CPU membaca data dari I/O. c.
Kelompok Interrupt
- INT* adalah sinyal interrupt aktif rendah yang digunakan oleh PIO untuk memintan layanan interupsi. - IEI adalah sinyal Interrupt Enable Input aktif tinggi yang menunjukkan PIO siap menerima layanan interupsi. - IEO adalah sinyal Interrupt Enable Output aktif tinggi yang menunjukkan PIO telah melayani interupsi. d.
Kelompok Status Kontrol Port
1) ASTB* adalah sinyal strobe Port A, aktif rendah yang operasinya tergantung pada mode operasi yang dipilih. - Mode 0 : menunjukkan keadaan peralatan I/O telah menerima data yang dikirim oleh PIO. - Mode 1 : menunjukkan keadaan data telah dikirim ke register Port A oleh peralatan I/O. - Mode 2 : menunjukkan keadaan data dari register Port A telah diletakkan pada bus data dan kemudian data telah diterima oleh peralatan I/O. - Mode 3 : pulsa ini secara internal ditahan oleh PIO (tidak dimanfaatkan).
2) A RDY adalah sinyal ready aktif tinggi untuk Port A bekerja tergantung mode operasi sebagai berikut: - Mode 0 : menunjukkan register Port A berisi data byte dan telah disiapkan pada saluran bus data untuk ditransfer ke peralatan I/O. - Mode 1 : menunjukkan keadaan register data Port A kosong dan siap menerima data word berikutnya. - Mode 2 : menunjukkan keadaan register data Port A telah siap untuk diambil oleh peralatan I/O. Data akan dikeluarkan jika ada sinyal STB*. - Mode 3 : tidak dimanfaatkan 3) B STB* adalah sinyal masukan strobe untuk Port B aktif rendah dimana operasinya sama dengan sinyal A STB*..Modul Sistem Mikroprosesor – Putu Sudira -- halaman 32. 4) B RDY adalah sinyak keluaran ready aktif tinggi untuk Port B dengan operasi kerja sama dengan A RDY.0
Masing-masing Port dilengkapi dengan dua register, yaitu register data dan register perintah. Selengkapnya register pada Z-80 PIO terdapat empat buah register yaitu : - Register Data A - Register Data B - Register Perintah A - Register Perintah B Register data digunakan untuk memegang data dan register perintah digunakan untuk mengatur mode kerja dan perilaku masing-masing port. Pemilihan register-register pada Z-80 CPU dikerjakan melalui pena port B/A dan pena Control/Data seperti Tabel 1 berikut ini :
RISC & CISC Reduced Instruction Set Computing (RISC) atau “Komputasi set instruksi yang disederhanakan” pertama kali digagas oleh John Cocke, peneliti dari IBM di Yorktown, New York pada tahun 1974 saat ia membuktikan bahwa sekitar 20% instruksi pada sebuah prosesor ternyata menangani sekitar 80% dari keseluruhan kerjanya. Komputer pertama yang menggunakan konsep RISC ini adalah IBM PC/XT pada era 1980-an. Istilah RISC sendiri pertama kali dipopulerkan oleh David Patterson, pengajar pada University of California di Berkely. Definisi RISC, yang jika diterjemahkan berarti “Komputasi Kumpulan Instruksi yang Disederhanakan”, merupakan sebuah arsitektur komputer atau arsitektur komputasi modern dengan instruksi-instruksi dan jenis eksekusi yang paling sederhana. Arsitektur ini digunakan pada komputer dengan kinerja tinggi, seperti komputer vektor. Selain digunakan dalam komputer vektor, desain ini juga diimplementasikan pada prosesor komputer lain, seperti pada beberapa mikroprosesor Intel 960, Itanium (IA64) dari Intel Corporation, Alpha AXP dari DEC, R4x00 dari MIPS Corporation, PowerPC dan Arsitektur POWER dari International Business Machine. Selain itu, RISC juga umum dipakai pada Advanced RISC Machine (ARM) dan StrongARM (termasuk di antaranya adalah Intel XScale), SPARC dan UltraSPARC dari Sun Microsystems, serta PA-RISC dari Hewlett-Packard. Selain RISC, desain Central Processing Unit yang lain adalah CISC (Complex Instruction Set Computing), yang jika diterjemahkan ke dalam Bahasa Indonesia berarti Komputasi Kumpulan Instruksi yang kompleks atau rumit. 1. Processor RISC (Reduced Instruction Set Computer) RISC adalah sebuah arsitektur komputer modern dengan instruksi-instruksi dan jenis eksekusi yang paling sederhana. Arsitektur ini digunakan pada komputer dengan kinerja tinggi, seperti komputer vektor. Selain digunakan dalam komputer vektor, desain ini juga diimplementasikan pada prosesor komputer lain, seperti pada beberapa mikroprosesor Intel 960, Itanium (IA64) dari Intel Corporation, Alpha AXP dari DEC, R4x00 dari MIPS Corporation, PowerPC dan Arsitektur POWER dari International Business Machine. Selain itu, RISC juga umum dipakai pada Advanced RISC Machine (ARM) dan StrongARM (termasuk di antaranya adalah Intel XScale), SPARC dan UltraSPARC dari Sun Microsystems, serta PARISC dari Hewlett-Packard. 2. Processor CISC (Complex Instruction-Set Computer) CISC merupakan suatu bentuk arsitektur komputer yang mana pada setiap instruksi akan menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari memory, operasi aritmetika, dan penyimpanan ke dalam memory, semuanya sekaligus hanya di dalam sebuah instruksi. Contoh-contoh prosesor CISC adalah System/360, VAX, PDP-11, varian Motorola 68000 , dan CPU AMD dan Intel x86. Tujuan utama dari arsitektur CISC adalah melaksanakan suatu instruksi cukup dengan beberapa baris bahasa mesin yang relatif pendek sehingga implikasinya hanya sedikit saja RAM yang digunakan untuk menyimpan instruksi-instruksi tersebut. Arsitektur CISC menekankan pada perangkat keras karena filosofi dari arsitektur CISC yaitu bagaimana memindahkan kerumitan perangkat lunak ke dalam perangkat keras.
Perbedaan antara processor RISC dan CISC dapat dilihat dari hal-hal berikut :
Daya yang dibutuhkan RISC membutuhkan sedikit daya dibandingkan dengan CISC. Kecepatan komputasi CISC jauh lebih unggul, kemudian dengan metode pengalamatan RISC lebih unggul dalam kecepatan dengan menggunakan pengalamatan secara langsung. Harga CISC puluhan kali lipat dari RISC karena kompleksotas dari CISC. Keduanya mengemisikan panas hanya saja pada CISC dibutuhkan sistem pendinginan. Untuk interrupt pada RISC lebih mudah diterapkan dan lebih cepat.
Keuntungan dari CISC pada sistem operasi yang lebih mudah pengimplementasiannya dibandingkan dengan RISC. Kelebihan CISC terdapat dalam pengimplementasian menggunakan software dimana akan lebih memudahkan programmer, dimana untuk RISC software yang dibuat akan jauh lebih kompleks dikarenakan instruksinya yang sedikit Kelebihan dari RISC yaitu kesederhanaan dari instruksinya. Dengan jumlah instruksi yang lebih sedikit maka jumlah transistor yang dibutuhkan semakin sedikit yang tentu saja berujung pada murahnya sistem ini dibandingkan dengan seterunya. Selain itu dengan lebih sedikitnya instruksi hanya pada instruksi yang sering digunakan saja maka waktu komputasi komputer akan semakin sedikit. Kelebihan utama dari RISC adalah fasilitas prefatch dan pipe line, untuk CISC sendiri eksekusi dilakukan secara sekuensial. CISC adalah singkatan dari Complex Intruction Set Computer dimana prosesor tersebut memiliki set instruksi yang kompleks dan lengkap. Sedangkan RISC adalah singkatan dari Reduced Instruction Set Computer yang artinya prosesor tersebut memiliki set instruksi program yang lebih sedikit. Karena perbedaan keduanya ada pada kata set instruksi yang kompleks atau sederhana (reduced). Pendekatan CISC Tujuan utama dari arsitektur CISC adalah melaksanakan suatu perintah cukup dengan beberapa baris bahasa mesin sedikit mungkin. Hal ini bisa tercapai dengan cara membuat perangkat keras prosesor mampu memahami dan menjalankan beberapa rangkaian operasi. Untuk tujuan contoh kita kali ini, sebuah prosesor CISC sudah dilengkapi dengan sebuah instruksi khusus, yang kita beri nama MULT. Saat dijalankan, instruksi akan membaca dua nilai dan menyimpannya ke 2 register yag berbeda, melakukan perkalian operan di unit eksekusi dan kemudian mengambalikan lagi hasilnya ke register yang benar. Jadi instruksi-nya cukup satu saja MULT 2:3, 5:2 MULT dalam hal ini lebih dikenal sebagai “complex instruction”, atau instruksi yang kompleks. Bekerja secara langsung melalui memori komputer dan tidak memerlukan instruksi lain seperti fungsi baca maupun menyimpan. Satu kelebihan dari sistem ini adalah kompailer hanya menerjemahkan instruksi-instruksi bahasa tingkat-tinggi ke dalam sebuah bahasa mesin. Karena panjang kode instruksi relatif pendek, hanya sedikit saja dari RAM yang digunakan untuk menyimpan instruksi-instruksi tersebut.
Pendekatan RISC Prosesor RISC hanya menggunakan instruksi-instruksi sederhana yang bisa dieksekusi dalam satu siklus. Dengan demikian, instruksi ‘MULT’ sebagaimana dijelaskan sebelumnya dibagi menjadi tiga instruksi yang berbeda, yaitu “LOAD”, yang digunakan untuk memindahkan data dari memori ke dalam register, “PROD”, yang digunakan untuk melakukan operasi produk (perkalian) dua operan yang berada di dalam register (bukan yang ada di memori) dan “STORE”, yang digunakan untuk memindahkan data dari register kembali ke memori. Berikut ini adalah urutan instruksi yang harus dieksekusi agar yang terjadi sama dengan instruksi “MULT” pada prosesor RISC (dalam 4 baris bahasa mesin): LOAD A, 2:3 LOAD B, 5:2 PROD A, B STORE 2:3, A Awalnya memang kelihatan gak efisien iya khan? Hal ini dikarenakan semakin banyak baris instruksi, semakin banyak lokasi RAM yang dibutuhkan untuk menyimpan instruksiinstruksi tersebut. Kompailer juga harus melakukan konversi dari bahasa tingkat tinggi ke bentuk kode instruksi 4 baris tersebut. Bagaimanapun juga, strategi pada RISC memberikan beberapa kelebihan. Karena masing-masing instruksi hanya membuthukan satu siklus detak untuk eksekusi, maka seluruh program (yang sudah dijelaskan sebelumnya) dapat dikerjakan setara dengan kecepatan dari eksekusi instruksi “MULT”. Secara perangkat keras, prosesor RISC tidak terlalu banyak membutuhkan transistor dibandingkan dengan CISC, sehingga menyisakan ruangan untuk register-register serbaguna (general purpose registers). Selain itu, karena semua instruksi dikerjakan dalam waktu yang sama (yaitu satu detak), maka dimungkinkan untuk melakukan pipelining. Memisahkan instruksi “LOAD” dan “STORE” sesungguhnya mengurangi kerja yang harus dilakukan oleh prosesor. Pada CISC, setelah instruksi “MULT” dieksekusi, prosesor akan secara otomatis menghapus isi register, jika ada operan yang dibutuhkan lagi untuk operasi berikutnya, maka prosesor harus menyimpan-ulang data tersebut dari memori ke register. Sedangkan pada RISC, operan tetap berada dalam register hingga ada data lain yang disimpan ke dalam register yang bersangkutan.
Pengenalan Timer & Counter Timer & Counter merupakan fitur yang telah tertanam di mikrokontroler AVR yang memiliki fungsi terhadap waktu. Fungsi pewaktu yang dimaksud disini adalah penentuan kapan program tersebut dijalankan, tidak hanya itu saja fungsi timer yang lainnya adalah PWM, ADC, dan Oscillator. Prinsip kerja timer dengan cara membagi frekuensi (prescaler) pada clock yang terdapat pada mikrokontroler sehingga timer dapat berjalan sesuai dengan frekuensi yang di kehendaki. Timer merupakan fungsi waktu yang sumber clocknya berasal dari clock internal. Sedangkan counter merupakan fungsi perhitungan yang sumber clocknya berasal dari external mikrokontroler. Salah satu contoh penggunaan fungsi timer yaitu pada jam digital yang sumber clocknya bisa menggunakan crystal oscillator dan contoh penggunaan counter pada penghitung barang pada konveyor yang sumber clocknya berasal dari sensor yang mendeteksi barang tersebut. Pada mikrokontroler ATMEGA 16 memiliki 3 buah timer yaitu timer 0 (8bit), timer1 (16bit), dan timer 2 (8bit). Untuk mengenai register lengkapnya bisa dibaca pada datasheet. Namun yang akan dibahas pada tulisan kali ini hanya timer 0(8bit) dan timer1 (16 bit) saja. Register yang Digunakan untuk Timer & Counter TCNT0 = Register Timer 1 TCNT 1 = Register Timer 0 Ttimer0 = Periode Timer 0 Ttimer 1 =Periode Timer 1 Tosc = Periode Clock Fosc = Frekuensi Crystall Clock N = Prescaler (1, 8, 64, 256, 1024) Prescaler Pada dasarnya Timer hanya menghitung pulsa clock. Frekuensi pulsa clock yang dihitung tersebut bisa sama dengan frekuensi crystal yang digunakan atau dapat diperlambat menggunakan prescaler dengan faktor 8, 64, 256 atau 1024. Contoh penggunaan prescaler : Suatu mikrokontroler menggunakan crystal dengan frekuensi 8 MHz dan timer yang digunakan adalah Timer 1 (16 Bit) maka maksimum waktu Timer yang bisa dihasilkan adalah : TMAX = 1/fCLK x (FFFFh + 1) = 0.125 µs x 65536 = 0.008192 s Untuk menghasilkan waktu Timer yang lebih lama dapat menggunakan prescaler 1024, maka waktu Timer yang bisa dihasilkan adalah : TMAX = 1/fCLK x (FFFFh+1) x N
= 0.125 µs x 655536 x 1024 = 8.388608 s Tujuan Penggunaan Timer & Counter
Melaksanaan tugas secara ber-ulang Mengendalikan kecepatan motor DC (PWM) Melakukan perhitungan (Counter) Membuat penundaan waktu (delay)
TIMER 0 (8 Bit)
Untuk perhitungan timer 0 dapat menggunakan rumus :
Ttimer0 = Tosc*(256-TCNT0)*N
→ (8 Bit = 256 ≈ 2^8)
Sebenarnya Timer 0 tidak dapat menghasilkan periode selama 1 detik karena keterbatasan jumlah bit nya (8 bit = 256). Namun dengan penggunaan rumus dapat dilakukan pemanipulasian agar timer 0 dapat menghasilkan periode waktu selama 1 detik. Dengan cara membuat timer selama 0.01 detik lalu dilakukan perulangan sebanyak 100 kali sehingga akan menghasilkan waktu 1 detik (0.01 detik x 100 kali = 1 detik). Contoh penggunaan untuk timer 0 dengan crystal 12 MHz dan menggunakan skala clock 1024 maka akan menghasilkan : Tosc = 1/Fosc = 1/12 = 0,083 0.01 = 0.083*(256-TCNT0)*1024 TCNT = 128= 8A (Hexadesimal)
Berdasarkan perhitungan tersebut di dapatkan 8A, maka nilai tersebut harus di inputkan ke register TCNT0 agar timer 0 bernilai 1 detik. Berikut ini contoh penggunaan nya pada Codevision AVR :
TIMER 1 (16 Bit)
Untuk perhitungan timer 1 dapat menggunakan rumus Ttimer 1 = Tosc*(65536-TCNT1)*N
→(16 Bit = 65536 ≈ 2^16)
Contoh penggunaan untuk timer 1 detik (Timer1 = 1 detik) dengan crystal 12 MHz dan menggunakan skala clock 1024 maka akan menghasilkan : Tosc = 1/Fosc = 1/12 = 0,083 1 = 0.083*(65536-TCNT1)*1024 TCNT = 53818 = D23A (Hexadesimal) Berdasarkan perhitungan tersebut di dapatkan D23A, maka nilai tersebut harus di inputkan ke register TCNT1 agar timer 1 bernilai 1 detik. Berikut ini contoh penggunaan nya pada Codevision AVR :
TUGAS MIKROKONTROLER Dosen Pengampu : Rizar Romiyadi, S.Pd, M.Kom
OLEH: MUHAMMAD ANDIN FIKRIE 3101 1702 3210
PROGRAM STUDI TEKNIK INFORMATIKA SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER (STMIK) BANJARBARU BANJARBARU 2019