LED

Rangkaian dan Program sistem minimum 8086
.
 

INTERFACE RUNNING LED MENGGUNAKAN MIKROPROSESOR 8086

  1. Tujuan [Kembali]

Mempelajari bagaimana cara interface LED menggunakan Mikroprosesor 8086 dan cara kerjanya serta programmnya. 

2. Alat dan Bahan [kembali]

2.1 Mikroprosesor 8086.

2.2 LED

2.3 Reisistor

 

3. Dasar Teori [kembali]

3.1. Mikroprosesor 8086

Mikroprosesor atau CPU adalah “otak” yang merupakan pengendali utama semua operasi dalam sistem komputer. Mikroprosesor mengambil instruksi biner dari memori, menerjemahkannya menjadi serangkaian aksi dan menjalankannya. Aksi tersebut bisa berupa transfer data dari dan ke memori, operasi aritmatika dan logika, atau pembangkitan sinyal kendali. Intel 8086 adalah mikroprosesor 16 bit, di mana dia dapat bekerja secara internal menggunakan operasi 16 bit dan secara eksternal dapat mentransfer data 16 bit melalui bus data.

  3.1.1 Arsitektur Mikroprosesor 8086

Prosesor 8086 dapat dihubungkan dengan bus alamat yang berukuran 20 bit, sehingga mampu mengalamati memori maksimal 220 = 1.048.576 byte (1 MB). Diagram blok arsitektur 8086 dapat dilihat pada Gambar . Mikroprosesor 8086 terbagi atas 2 unit, yaitu unit antarmuka bus (bus interface unit, BIU) dan unit pengeksekusi (execution unit, EU).

Unit Antarmuka Bus (BIU)
Unit ini merupakan bagian yang berhubungan langsung dengan “pihak luar”: bus alamat dan bus data. BIU mengirim alamat ke bus alamat, mengambil instruksi (fetch) dari memori, membaca data dari port dan memori, serta menulis data ke port dan memori (menangani transfer data antara bus dan unit eksekusi).
BIU tersusun atas:
1. Instruction Stream Byte Queue (ISBQ). 
BIU memfetch instruksi dari memori sebanyak-banyaknya 6 buah instruksi ke depan. Hal ini dilakukan agar eksekusi progam menjadi lebih cepat. Instruksi yang sudah diambil ini ditaruh di ISBQ yang berupa 6 buah register first-in-first-out. BIU dapat melakukan fetching selagi EU menerjemahkan dan mengeksekusi instruksi yang tidak membutuhkan penggunaan bus (misalnya operasi matematis menggunakan register internal). Ketika EU selesai melaksanakan suatu instruksi, maka dia tinggal mengambil perintah berikutnya di ISBQ, tanpa harus mengirim alamat ke memori untuk mengambil instruksi berikutnya, sehingga eksekusi akan lebih cepat. Kegiatan fetching instruksi berikutnya selagi menjalankan suatu instruksi disebut sebagai: pipelining. Pada mikroprosesor yang lebih baru, ukuran ISBQ tidak hanya 6 byte tetapi mencapai 512 byte, ini efektif untuk program yang mempunyai banyak kalang (struktur program yang berulang).
2. Register segmen.
BIU berisi 4 buah register segmen 16 bit, yaitu: code segment (CS), data segment (DS), extra segment (ES), dan stack segment (SS). Sistem komputer 8086 mempunyai bus alamat 20 bit, tetapi ukuran register - termasuk register alamat (memory address register) – yang dimilikinya hanya 16 bit, lantas bagaimana cara mengatasinya. Cara pemberian alamat 20 bit dilakukan menggunakan 2 komponen alamat: segmen dan offset, yang masing-masing berukuran 16 bit. BIU akan menggeser ke kiri nilai segmen sebanyak 4 bit (mengalikan dengan 16), kemudian menambahkan offset untuk memperoleh alamat fisik memori yang dikirimkan melalui bus alamat. Untuk lebih jelasnya, diberi contoh untuk memberi alamat fisik $38AB4( ) 3 , segmen dapat diisi dengan angka $348A, dan offset diisi dengan angka $4214, lihat Gambar. Cara penulisan kombinasi segmen dan offset adalah:
segment:offset

Sehingga untuk contoh ini, penulisannya adalah $348A:$4214. Perlu diingat bahwa kita bisa menggunakan kombinasi nilai segmen dan offset yang bervariasi untuk memberi alamat fisik yang sama, misalnya $38AB:$0004, $3800:$0AB4, dsb.
Secara umum, suatu program terdiri atas 4 bagian: segmen code yang berisi instruksi; segmen data, berisi data yang telah dialokasikan sebelumnya (statik); segmen ekstra, untuk variabel dinamik; serta segmen stack yang dipakai untuk menyimpan informasi pada saat pemanggilan subrutin. Informasi segmen disimpan dalam keempat register segmen sesuai dengan namanya.  
3. Instruction Pointer (IP) 
adalah register berisi informasi offset yang bersama-sama CS menunjuk posisi dalam memori di  mana instruksi berikutnya berada.

Unit Eksekusi (EU)
Unit ini memberitahu BIU di mana mengambil instruksi dan data, menerjemahkan kode instruksi, dan menjalankannya. EU tersusun atas:
1. Dekoder instruksi
, yang mengambil urut-urutan instruksi dari ISBQ kemudian menerjemahkannya ke runtutan aksi yang harus dikerjakan oleh EU.
2. Sistem kontrol
, merupakan rangkaian yang mengendalikan kerja mikroprosesor berdasarkan instruksi yang telah diterjemahkan oleh dekoder instruksi tadi.
3. Arithmetic Logic Unit (ALU)
, yaitu bagian dari mikroprosesor yang dapat melakukan operasi matematis (misalnya operasi penjumlahan, pengurangan, perkalian, dan pembagian) dan logika (misalnya operasi AND, OR, XOR, geser, dan rotasi) 16 bit.
4. Register flag (bendera)
, yaitu register flip-flop 16 bit yang menunjukkan kondisi yang dihasilkan oleh eksekusi suatu operasi oleh EU. Selain itu flag juga mengatur beberapa operasi tertentu. Terdapat 9 flag dalam register flag 8086, seperti terlihat pada Gambar

Sebanyak 6 buah flag merupakan flag kondisi yang menunjukkan keadaan setelah eksekusi suatu instruksi, yaitu: Carry Flag (CF), Parity Flag (PF), Auxiliary Carry Flag (AF), Zero Flag (ZF), Sign Flag (SF), dan Overflow Flag (OF). Sedangkan, 3 buah flag sisanya berupa flag kontrol yang mengendalikan operasi tertentu, yaitu: Single Step Trap Flag (TF), Interrupt Flag (IF), dan String Direction Flag (DF).
5. Register serbaguna
, merupakan register yang dapat digunakan untuk menyimpan data yang akan diolah atau hasil suatu operasi oleh ALU. Terdiri atas 8 buah register 8 bit, yaitu AH, AL, BH, BL, CH, CL, DH, dan DL. Register-register ini juga dapat digunakan secara berpasangan sehingga membentuk register 16 bit, yaitu; AX (gabungan dari AH dan AL), BX, CX, dan DX. AX biasanya digunakan untuk menyimpan hasil operasi, sehingga disebut akumulator. CX biasanya digunakan untuk pencacah untuk keperluan perulangan/kalang (loop), sehingga disebut counter. BX dan DX biasanya digunakan sebagai offset dari alamat data di memori (dengan segmen DS).
6. Register pointer dan indeks
, terdiri atas Stack Pointer (SP), Base Pointer (BP), Source Index (SI), dan Destination Index (DI). Stack (tumpukan) adalah bagian dari memori yang digunakan untuk menyimpan informasi alamat program yang ditinggalkan pada saat terjadi pemanggilan subrutin/subprogram. Demikian juga apabila subrutin tersebut berupa fungsi yang menggunakan parameter, maka data parameter akan disimpan pula di stack. Alamat tumpukan terluar dari stack ditunjuk oleh SS:SP. Sedangkan BP digunakan sebagai offset yang menunjuk ke parameter-parameter fungsi yang dipanggil. SI dan DI biasanya digunakan sebagai offset (masing-masing berpasangan dengan ES dan DS) yang menunjuk ke suatu variabel/data untuk operasi string (larik data).

3.1.2 Bahasa Mesin dan Bahasa Assembly

Instruksi yang difetch dari memori untuk kemudian diseksekusi oleh mikroprosesor berformat biner (kombinasi angka 0 dan 1), yang disebut bahasa mesin. Sebagai contoh, perintah untuk memindahkan data dalam register BX ke register CX adalah 10001011 11001011 ($8B CB), sedangkan bahasa mesin untuk menjumlahkan data dalam register AL dengan angka 7 adalah 00000100 00000111 ($04 07), dan perintah membaca dari port 5 diberikan dengan 11100100 00000101 ($E4 05).
Seperti terlihat pada ketiga contoh di atas, bahasa mesin tidak mudah untuk dimengerti dan dihapalkan oleh seorang programer, apalagi jumlah instruksi yang tersedia berkisar ribuan perintah. Di samping itu, akan mudah sekali terjadi kesalahan ketika menuliskan angka-angka biner yang tersusun atas angka 0 dan 1 yang banyak sekali. Oleh karena itu biasanya kita tidak memprogram komputer langsung dalam bahasa mesin, namun dalam bahasa assembly.
Dalam bahasa assembly, setiap instruksi diberi kata (mnemonic) yang sesuai dengan maksud perintah itu, sehingga dapat membantu pemrogram dalam mengingat instruksi kepada mikroprosesor tersebut. Kata yang dipakai biasanya berupa singkatan atau beberapa huruf awal dari kata dalam bahasa Inggris untuk perintah tersebut. Misalnya, mnemonic untuk perintah penjumlahan adalah ADD, untuk perintah pengurangan adalah SUB (dari kata subtract), dan untuk memindahkan data( ) 4 dari suatu register atau memori ke lokasi lain adalah MOV (dari kata move). Sebagian besar instruksi terdiri atas mnemonic dan operand yang merupakan parameter dari instruksi tersebut, yang dituliskan di belakang mnemonic tersebut. Contoh bahasa assembly dari perintah-perintah dengan bahasa mesin di atas diberikan dalam Tabel

3.1.3 Pin Diagram Mikroprosessor 8086

Mikroprosesor 8086 mempunyai 40 kaki (pin) yang masing-masing digunakan untuk melewatkan sinyal tertentu. Setiap pin sinyal diberi nama berupa mnemonic yang sesuai dengan fungsinya. Sistem komputer 8086 mempunyai bus data selebar 16 bit dan bus alamat selebar 20 bit, sehingga dapat mengalamati memori sampai dengan 220 atau 1 Mb. Untuk menghemat jumlah pin, maka antara pin untuk data dan pin untuk alamat digabungkan dengan diberi nama AD0-AD15 (dari kata address data), sedangkan 4 bit alamat sisanya diberi nama A16-A19 (pin-pin ini juga digunakan untuk sinyal status).
Terdapat juga pin-pin untuk catu daya yang disuplaikan, yaitu VCC dan GND, masing-masing untuk tegangan catu daya dan pentanahan. Untuk dapat bekerja, selain membutuhkan catu daya, mikroprosesor 8086 juga memerlukan sinyal detak (clock) secara eksternal dengan frekuensi sampai 10 MHz. Sinyal clock ini dilewatkan ke pin CLK yang ada pada kaki nomor 19.
Pin-pin lainnya digunakan untuk sinyal kendali. Mikroprosesor 8086 dapat digunakan dalam 2 mode, minimum dan maksimum, yang masing-masing menggunakan pin kendali secara berbeda. Mode ini ditentukan dengan memberi nilai pada pin MXMN/ ( ) 1 , nilai 1 (dihubungkan dengan Vcc) untuk mode minimum dan nilai 0 (ditanahkan) untuk mode maksimum. Kebanyakan aplikasi menggunakan mode minimum. Pada mode ini, nama pin yang dipakai pada kaki nomor 24 sampai dengan 31 adalah yang berada di dalam tanda kurung (sebelah kanan)
Sinyal RESET digunakan untuk memerintah mikroprosesor agar melakukan inisialisasi dengan cara memberi nilai 0 pada register DS, SS, ES, IP, dan flag; serta nilai $FFFF untuk CS( ) 2 . Pin INTR dan NMI digunakan untuk menginterupsi kerja mikroprosesor. Jika ada sinyal pada kedua pin itu, maka mikroprossor akan menghentikan eksekusi program yang sedang dijalankannya, kemudian menjalankan subrutin sesuai yang dikehendaki, dan setelah selesai kembali ke tempat semula di mana program diinterupsi. Sinyal INTR (interrupt) berupa permintaan untuk melakukan interupsi yang dapat dianulir /tidak dipenuhi jika flag IF direset, sedangkan sinyal NMI (non maskable interrupt) tidak dapat ditutup/ditolak, artinya interupsi harus dilakukan. Pin INTA (interrupt acknowledge) digunakan oleh mikroprosesor untuk menjawab bahwa permintaan interupsi dari sinyal INTR dapat diterima/dijalankan
Pin IO M/ (memory/IO), RD (read), dan WR (write) digunakan untuk mengendalikan memori dan port pada saat pemindahan data. Sinyal IO M/ digunakan untuk memilih apakah memori atau port yang akan diakses oleh mikroprosesor. Jika hendak menghubungi memori, maka mikroprosesor memberi nilai tinggi (1) pada sinyal ini dan jika port yang hendak diakses maka sinyal ini diberi nilai rendah (0). Sinyal RD akan diaktifkan (bernilai rendah) jika operasi yang dilakukan adalah membaca, yaitu transfer data dari memori/port ke mikroprosesor. Sementara sinyal WR digunakan untuk menulis, tranfer data dari mikroprosesor ke memori/port, jika aktif. Sinyal-sinyal lain adalah R DT/ (data transmit/receive), DEN (data enable), ALE (address latch enable), dan BHE (bus high enable) yang akan dibahas kemudian.

3.2. IC Latch 74273

Untuk menghubungkan address ke memori atau I-O maka diperlukan pemisahan address rendah yang multiplek dengan data dengan memakai rangkaian latch. Rangkaian latch akan selalu aktif dengan terhubungnya ke ground kaki LE maka untuk bekerjanya IC latch ini diperlukan sinyal kontrol yang di-input-kan ke kaki –OE. Pin -OE mendapat input dari pin ALE yang merupakan sinyal kontrol yang artinya pin ini akan aktif setiap mikroprosesor meng-output-kan address.



3.3. IC Decoder 74154

IC 74154 merupakan salah satu keluarga TTL yang dimana fungsi dari IC ini adalah sebagai dekoder/demultiplexter 4-16 saluran. Tiap decoder 4-saluran-ke 16-saluran monolit ini menerapkan rangkaian TTL untuk mengubah 4 input biner menjadi 16 jalur keluar, bila kedua input E1 dan E2 adalah rendah. Setiap komponen I-O harus diberi address. Misalkan, ada tiga komponen I-O yang yaitu PPI 8255, PIT 8253 dan PIC 8259 seperti maka untuk membedakannya dapat dibuatkan rangkaian decoder dengan memakai IC decoder 74154 yang keluarannya ada 16 .

3.4. PPI (Programmable Pheriperal Interface)

Untuk hubungan input-output, mikroprosesor memerlukan suatu rangkaian interface. Interface menggunakan IC Programmable Peripheral Interface (PPI) 8255 yang mempunyai 3 port dengan masing-masing berkapasitas 8-bit. Jika dalam merancang sistem minimum 8088 ternyata memerlukan interface lebih dari 3 port maka dapat ditambahkan IC PPI 8255 sesuai kebutuhan dengan menambahkan rangkaian decoder-nya

3.5. Pengertian LED

Light Emitting Diode atau sering disingkat dengan LED adalah komponen elektronika yang dapat memancarkan cahaya monokromatik ketika diberikan tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang dipergunakannya.

4. Gambar rangkaian [kembali]


Prinsip kerja dari rangkaian di atas adalah, ketika diaktifkan, mikroproseor akan membuat LED bergrak dari kiri ke kanan, kemudian kanan ke kiri, begitu seterusnya. Prinsipnya, pertama mikrokontroler mengirimkan alamat untuk mengakses I/O IC 8255 melewati A0-A15, kemudian masuk ke IC 74273 D0-D7. Alamat tersebut akan dilewatkan dari D0-D7 ke Q0-Q7 apabila sinyal kontrol alih dikeluarkan oleh pin ALE mikroprosesor dan diinverterkan sebelum diumpankan ke CLK IC 74273.  Apabila telah aktif sinyal CLK, maka alamat akan ditahan di Q0-Q7 IC 74273. kemudian jika Q1-Q5 IC 74273 yang membawa alamat dari AD9-AD11 dihubungkan dengan decoder 74154. maka ketika nilai AD9-AD11 ini berlogika 0 semua dan E1 E1 IC ini juga berlogika 0, maka pin 0 IC 75154 akan berlogika nol yang kemudian pin ini dihubingkan dengan CS pada IC 8255. sehingga alamat yang dikirimkan adalah untuk akses IC 8255.<br>
    Kemudian untuk mengirim data dari Mikroprosesor 8086 ke IC I/O 8255, pin AD0-AD7 mikroprosesor dihubungkan dengan pin D0-D7 IC 8255. PORTA IC 8255 menjadi output bagi mikroprosesor untuk kemudian dihubungkan dengan 4 buah LED yang akan digerakkan dari kiri ke kanan dan kembali lagi ke kiri dengan settingan program di bawah ini.



5. Listing Program [kembali]

CODE_SEG SEGMENT ; code_seg sebagai segment
ASSUME CS:CODE_SEG,DS:CODE_SEG,SS:CODE_SEG
ORG 100H ; program ditulis mulai origin 100h
start: jmp mulai ; Awal program pada Org 0100H
porta equ 00h ; Menentukan alamat port A,B,C
portb equ 01h ; dan ctrlword sesuai dengan
portc equ 02h ; hardwarenya
cw equ 03h
mulai:
; TEMPAT PROGRAM UTAMA
putar:
jmp putar
delay proc near ; Procedure delay
push cx ; simpan cx
mov cx,02fffh ; isi cx dengan lama delay
loop $ ; loopng sampai cx=0
pop cx ; keluarkan cx
ret ; kembali ke program utama
delay endp ; akhir procedure delay
; KHUSUS UNTUK EPROM 2764 ATAU 2864
ORG 20F0H ; alamat yang dituju setelah reset
DB 0EAH ; JMP reset ke
DW 0100H ; alamat offset 0100h
DW 0FDF0H ; alamat segmen 0FDFh
CODE_SEG ENDS ; batas segment code_seg

END START ; akhir program

6. Flowchart [kembali]

7. Video Rangkaian [kembali]




8. Link Download [kembali]

rangkaian dan program klik : https://drive.google.com/open?id=1tYZkiGMCi6HxcvvKAxSgZiyq1G7MEiRo

presentation HTML : https://drive.google.com/open?id=11yZyMxuqbQ229xWa5Ou9VYEB3qOAY1AZ

simulasi video : https://drive.google.com/open?id=1RRLRJgn-KBoP8DiUH3hgOTl3odkSbZ1c

simulasi rangkaian klik : https://youtu.be/1xkxPGBF2tc

 


[menuju awal]

SERIAL

menuju akhir



           a.    Module PIC 16F84A
             b.    LED
          c.    Jumper
          d.    Rangkaian reset
          e.    LCD
        
2. Dasar Teori [kembali]
A. Mikrokontroler PIC16F877A   
     Mikrokontroler PIC16F877A merupakan salah satu mikrokontroler dari keluarga PICmicro yang popular digunakan sekarang ini, mulai dari pemula hingga para profesional. Hal tersebut karena PIC16F877A sangat praktis dan menggunakan teknologi FLASH memori sehingga dapat di program-hapus hingga seribu kali. Keunggulan mikrokontroler jenis RISC ini dibanding dengan mikrokontroler 8-bit lain dikelasnya terutama terletak pada kecepatan dan kompresi kodenya. Selain itu, PIC116F877A juga tergolong praktis dan ringkas karena memiliki kemasan 40 pin dengan 33 jalur I/O.
    Anggota keluarga PICmicro buatan Microchip Inc. cukup banyak. Ada yang menggunakan FLASH memori dan ada pula yang jenis OTP (One Time Programmable). Mikrontroler dari keluarga PICmicro yang popular, antara lain PIC2C08, PIC16C54, PIC16F84. Agar lebih mengenal PIC16F877A, berikut ini diberikan fitur-fitur penting yang terdapat pada PIC16F877A.
MIkrokontroller PIC16F877A

Deskripsi Pin Pin
   Mikrokontroler PIC16F877A di produksi dalam kemasan 40 pin PDIP (Plastik Dual In Line) maupun 40 pin SO (Small Outline). Namun yang banyak terdapat dipasaran adalah kemasan PDIP. Pin-pin untuk I/O sebanyak 33 pin, yang terdiri atas 6 pada Port A, 8 pada Port B, 8 pada Port C, 8 pada Port D, 3 pada Port E. Ada pula beberapa Pin pada mikrokontroler yang memiliki fungsi ganda.


Organisasi Memori
   Memori pada PIC16F877A dapat dipisahkan menjadi dua blok memori, satu untuk memori program dan satu untuk memori data. Memori EEPROM dan register GPR didalam RAM merupakan memori data, sedangkan memori FLASH merupakan memori program.

  Pembangkit Clock-Oscilator
Suatu mikrokontroler tidak akan dapat bekerja jika tidak diberi detak (clock) melalui suatu osilator. Osilator adalah rangkaian yang akan memberikan pulsa pada mikrokontroler dan berguna untuk mensinkronkan sistem dalam mikrokontroler tersebut. Untuk mengaktifkan sumber clock ini cukup dengan menambahkan rangkaian pasif saja seperti resistor dan kapasitor (RC Oscilator), kristal atau keramik resonator. Salah satu keistimewaan mikrokontroler PIC16F84 adalah terdapatnya 4 pilihan penggunaan osilator. Untuk pemakaian yang tidak memerlukan pewaktu kritis, bahkan dapat menggunakan sepasang resistor dan kapasitor saja sebagai osilator.

Nilai kristal yang dapat dipakai maksimum adalah 4 MHz atau 10 MHz, hal ini karena mikrokontroler PIC16F84 dibuat dalam 2 versi frekuensi kerja. Untuk menentukan frekuensi maksimumnya dapat dilihat pada badan mikrokontroler. Jika terdapat tulisan PIC16F84-04/P berarti frekuensi maksimum yang diijinkan adalah 4 MHz.

 7-Segment
     Seven Segment Display (7 Segment Display) dalam bahasa Indonesia disebut dengan Layar Tujuh Segmen adalah komponen Elektronika yang dapat menampilkan angka desimal melalui kombinasi-kombinasi segmennya. Seven Segment Display pada umumnya dipakai pada Jam Digital, Kalkulator, Penghitung atau Counter Digital, Multimeter Digital dan juga Panel Display Digital seperti pada Microwave Oven ataupun Pengatur Suhu Digital . Seven Segment Display pertama diperkenalkan dan dipatenkan pada tahun 1908 oleh Frank. W. Wood dan mulai dikenal luas pada tahun 1970-an setelah aplikasinya pada LED (Light Emitting Diode).
     Seven Segment Display (7 Segment Display) dalam bahasa Indonesia disebut dengan Layar Tujuh Segmen adalah komponen Elektronika yang dapat menampilkan angka desimal melalui kombinasi-kombinasi segmennya. Seven Segment Display pada umumnya dipakai pada Jam Digital, Kalkulator, Penghitung atau Counter Digital, Multimeter Digital dan juga Panel Display Digital seperti pada Microwave Oven ataupun Pengatur Suhu Digital . Seven Segment Display pertama diperkenalkan dan dipatenkan pada tahun 1908 oleh Frank. W. Wood dan mulai dikenal luas pada tahun 1970-an setelah aplikasinya pada LED (Light Emitting Diode).
 Switch
     Switch / Saklar adalah sebuah perangkat yang digunakan untuk memutuskan dan menghubungkan aliran listrik. Jadi saklar pada dasarnya adalah suatu alat yang dapat atau berfungsi menghubungkan atau pemutus aliran listrik (arus listrik) baik itu pada jaringan arus listrik kuat maupun pada jaringan arus listrik lemah.





6. Listing Program
 [kembali]

sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;

sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

char receive;                                       // Deklarasi variabel receive sebagai penyimpan data inputan

void main() {
UART1_Init(9600);                           // Inisialisasi Pin Serial pada PIC dengan nilai baudrate 9600
delay_ms(100);                                  // delay 100 ms
TRISB=0x00;                                    // Menyatakan PORTB sebagai output
PORTB=0x00;                                   // Nilai Awal PortB adalah low

UART1_Write_Text("Type Your Text Here");        // Mencetak tulisan pada Virtual terminal

UART1_Write(13);                            // Baris baru pada virtual Terminal
UART1_Write(13);

Lcd_Init();                                         // Inisialisasi LCD

Lcd_Cmd(_LCD_CLEAR);              // Bersihkan Layar LCD
Lcd_Out(1,1,"Your Text is :");          // Mencetak tulisan di baris 1 kolom 1 LCD
Lcd_Out(2,1,"");                               // Menempatkan cursor di baris kedua

while(1){                                          // Perulangan


 if(UART1_Data_Ready()){                        // Memantikan pin RX menerima data dari Virtual Terminal

 receive=UART1_Read();                           // Memasukkan data yang diinput ke variabel receive

 if(receive==13){                                        // Jika yang diinput adalah ENTER, Maka

 Lcd_Cmd(_LCD_CLEAR);                      // Bersihkan Layar LCD
 Lcd_Out(1,1,"Your Text is :");
 Lcd_Out(2,1,"");                                       // Menempatkan cursor di baris kedua
 }
 else if(receive==8){                        // Jika yang diinputkan adalah BACKSPACE (Delete), Maka

 Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);          // Di LCD Karakter sebelumnya dihapus

 Lcd_Chr_Cp(32);
 Lcd_Cmd(_LCD_MOVE_CURSOR_LEFT);
 }
 else {                                         // Jika yang diinputkan selain dua di atas, Maka
 Lcd_Chr_Cp(receive);                           // Mencetak karakter yang diinput ke LCD
 }}}}
7. Video Rangkaian [kembali]


8. Link Download [kembali] 

simulasi rangkaian klik :  https://youtu.be/AECIcbUfmkY
html : https://www.dropbox.com/preview/HTML%20mikroprosessor%208086.rar?role=personal
program :  https://drive.google.com/open?id=1YgvIUomCQHsu0sDZrlEpVhFm4RYygua5
rangkaian : https://drive.google.com/open?id=13bHUoIqJbIaR2beaBxE3hoe3tKh6Wrpp
 

UTS 8086

Rangkaian dan Program sistem minimum 8086
.
 

7 SEGMEN DAN KEYPAD 8086

1. Latar Belakang [kembali]

Perancangan sistem minimum 8086 adalah perancangan peta memori dan peta I/O. Pada sistem minimum 8086 untuk pemetaan memori dan I/O dapat digabung dalam suatu peta atau dapat juga terpisah. Untuk perancangan peta memori ada dua lokasi address yaitu program disimpan pada lokasi address memori ROM dan data disimpan pada lokasi address RAM. Salah satu aplikasi dari mikroprosesor 8086 adalah peta keypad dan seven segmen. Secara garis besar, rangkaian bermula dari pemasukan input yang berasal dari keypad lalu diproses sehingga berjalan ke mikroprosesor dan menghasilkan output yaitu seven segmen.

2. Gambar rangkaian [kembali]



3. Listing Program [kembali]

; multi-segment executable file template.

data segment
    ; add your data here! 
    task_data db 100 dup(0) 
    task_id   dw 0 
   PORTA EQU 00H
   PORTB EQU 02H
   PORTC EQU 04H
   PCW   EQU 06H
   
ends

stack segment
    dw   128  dup(0)
ends

code segment
start:
; set segment registers:

    mov ax, data
    mov ds, ax
    mov es, ax 
    MOV DX,PCW
    MOV AL,10000010B
    OUT DX,AL 
   BEGIN:
    MOV CX,00FFH
    MOV AL,0FEH
    MOV DX,PORTA
    OUT DX,AL
    
    EELOOP:
    ;MOV AL,PORTB
     IN AL,PORTB
     CMP AL,0FEH
     JNE NEXT1
     MOV AL,001H;
     OUT PORTC,AL;
     OUT PORTC,AL 
     JMP GO
     NEXT1: CMP AL,0FDH
     JNE NEXT2
     MOV AL,004H;
     OUT PORTC,AL;
     OUT PORTC,AL
     JMP GO
     NEXT2:
     CMP AL,0FBH
     JNE NEXT3
     MOV AL,007H;
     OUT PORTC,AL;
     OUT PORTC,AL
     JMP GO
      NEXT3:
      CMP AL,0F7H
     JNE GO
     MOV AL,00BH;
     OUT PORTC,AL;
     OUT PORTC,AL
     GO:
    LOOP EELOOP 
   
       MOV CX,00FFH
    MOV AL,0FDH
    MOV DX,PORTA
    OUT DX,AL
    
    EELOOP2:
    ;MOV AL,PORTB
     IN AL,PORTB
     CMP AL,0FEH
     JNE NEXT12
     MOV AL,002H;
     OUT PORTC,AL;
     OUT PORTC,AL
     JMP GO2
     NEXT12: CMP AL,0FDH
     JNE NEXT22
     MOV AL,005H;
     OUT PORTC,AL;
     OUT PORTC,AL
      JMP GO2
     NEXT22:
     CMP AL,0FBH
     JNE NEXT32
     MOV AL,008H;
     OUT PORTC,AL;
     OUT PORTC,AL
     JMP GO2
      NEXT32:
      CMP AL,0F7H
     JNE GO2
     MOV AL,000H;
     OUT PORTC,AL;
     OUT PORTC,AL
   
     GO2:
    LOOP EELOOP2
    
       MOV CX,00FFH
    MOV AL,0FBH
    MOV DX,PORTA
    OUT DX,AL
   
     EELOOP3:
    ;MOV AL,PORTB
     IN AL,PORTB
     CMP AL,0FEH
     JNE NEXT13
     MOV AL,003H;
     OUT PORTC,AL;
     OUT PORTC,AL
     JMP GO3
     NEXT13: CMP AL,0FDH
     JNE NEXT23
     MOV AL,006H;
     OUT PORTC,AL;
     OUT PORTC,AL
     JMP GO3
     NEXT23:
     CMP AL,0FBH
     JNE NEXT33
     MOV AL,009H;
     OUT PORTC,AL;
     OUT PORTC,AL
     JMP GO3
      NEXT33:
      CMP AL,0F7H
     JNE GO3
     MOV AL,00CH;
     OUT PORTC,AL;
     OUT PORTC,AL
     GO3:
    LOOP EELOOP3
    JMP BEGIN
    JMP BEGIN

4. Video Rangkaian [kembali]



5. Link Download [kembali]

rangkaian dan program klik

https://drive.google.com/open?id=1Ae7l5CndleJaCDRmmyvNzIU3f6E2dEAH

simulasi rangkaian klik https://youtu.be/ZJFevlSuO10

 

[menuju awal]