• Tidak ada hasil yang ditemukan

BAB IV HASIL DAN PEMBAHASAN

4.2 Perangkat Lunak Alat Penguji Kebenaran

4.2.3 Pengujian Gerbang Logika dan Rangkaian Logika

Perintah pada program untuk sub rutin pengujian gerbang logika dan rangkaian logika adalah: Pengujian: If R = 1 Then Goto Gnand End If If R = 2 Then Goto Gnor End If If R = 3 Then Goto Gnot End If If R = 4 Then Goto Enkoder End If If R = 5 Then Goto Adder End If If R = 6 Then Goto Jkff End If Gnand: I0 = 0 O = 1 For A = 1 To 4 Step 1

Msk = Lookup(i0 , Tpnand) : Klr = Lookup(o , Tpnand) : Gosub Kesini If Pind.2 = Klr.2 Then Incr B Else B = B End If Cls

Locate 1 , 1 : Lcd A : Locate 1 , 7 : Lcd "AB X" : Locate 1 , 16 : Lcd B Locate 2 , 7 : Lcd Porta.1 ; Porta.0 ; " " ; Pind.2

Wait 1 I0 = I0 + 2 O = O + 2 Next Return Gnor: I0 = 0 O = 1 For A = 1 To 4 Step 1

Msk = Lookup(i0 , Tpnor) : Klr = Lookup(o , Tpnor) : Gosub Kesini If Pind.2 = Klr.2 Then Incr B Else B = B End If Cls

Locate 1 , 1 : Lcd A : Locate 1 , 7 : Lcd "AB X" : Locate 1 , 16 : Lcd B Locate 2 , 7 : Lcd Porta.1 ; Porta.0 ; " " ; Pind.2

Wait 1 I0 = I0 + 2 O = O + 2 Next Return Gnot: I0 = 0 O = 1 For A = 1 To 2 Step 1

Msk = Lookup(i0 , Tpnot) : Klr = Lookup(o , Tpnot) : Gosub Kesini If Pind.2 = Klr.2 Then Incr B Else B = B End If Cls

Locate 1 , 1 : Lcd A : Locate 1 , 8 : Lcd "A X" : Locate 1 , 16 : Lcd B Locate 2 , 8 : Lcd Porta.0 ; " " ; Pind.2

Wait 1 I0 = I0 + 2 O = O + 2 Next Return Enkoder: I0 = 0 O = 1 For A = 1 To 15 Step 1

Msk = Lookup(i0 , Tpenkoder) : Klr = Lookup(o , Tpenkoder) : Gosub

Kesini

If Pind.6 = Klr.6 And Pind.5 = Klr.5 And Pind.4 = Klr.4 And Pind.3 =

Klr.3 And Pind.2 = Klr.2 Then

Incr B Else

B = B End If

Cls

Locate 1 , 1 : Lcd "I01234567 A210GO"

Locate 2 , 1 : Lcd Pinc.7 ; Pina.7 ; Pina.6 ; Pina.5 ; Pina.4 ; Pina.3 ;

Pina.2 ; Pina.1 ; Pina.0 ; " " ; Pind.6 ; Pind.5 ; Pind.4 ; Pind.3 ; Pind.2 Wait 1 I0 = I0 + 2 O = O + 2 Next Return Adder: I0 = 0 O = 1 For A = 1 To 10 Step 1

Msk = Lookup(i0 , Tpadder) : Klr = Lookup(o , Tpadder) : Gosub Kesini If Pind.6 = Klr.6 And Pind.5 = Klr.5 And Pind.4 = Klr.4 And Pind.3 =

Klr.3 And Pind.2 = Klr.2 Then

Incr B Else

End If

Cls

Locate 1 , 1 : Lcd "C43214321 C44321"

Locate 2 , 1 : Lcd Pinc.7 ; Pina.7 ; Pina.6 ; Pina.5 ; Pina.4 ; Pina.3 ;

Pina.2 ; Pina.1 ; Pina.0 ; " " ; Pind.6 ; Pind.5 ; Pind.4 ; Pind.3 ; Pind.2 Wait 1 I0 = I0 + 2 O = O + 2 Next Return Jkff: I0 = 0 O = 1 For A = 1 To 7 Step 1

Msk = Lookup(i0 , Tpjkff) : Klr = Lookup(o , Tpjkff) : Gosub Kesini Portc.7 = 1

Cls

Locate 1 , 1 : Lcd " Ck PC JK QQn"

Locate 2 , 1 : Lcd " " ; Pinc.7 ; " " ; Pina.3 ; Pina.2 ; " " ; Pina.1

; Pina.0 ; " " ; Pind.3 ; Pind.2 Wait 1

Portc.7 = 0 Cls

Locate 1 , 1 : Lcd " Ck PC JK QQn"

Locate 2 , 1 : Lcd " " ; Pinc.7 ; " " ; Pina.3 ; Pina.2 ; " " ; Pina.1

; Pina.0 ; " " ; Pind.3 ; Pind.2 Wait 1

If Pind.3 = Klr.3 And Pind.2 = Klr.2 Then

Incr B Else B = B End If I0 = I0 + 2 O = O + 2 Next Portc.7 = 1

Msk = &B00001101 : Klr = &B00001000 : Gosub Kesini Cls

Locate 1 , 1 : Lcd " Ck PC JK QQn"

Locate 2 , 1 : Lcd " " ; Pinc.7 ; " " ; Pina.3 ; Pina.2 ; " " ; Pina.1 ; Pina.0 ; " " ; Pind.3 ; Pind.2

Wait 1

If Pind.3 = Klr.3 And Pind.2 = Klr.2 Then Incr B Else B = B End If Incr A Portc.7 = 0

Msk = &B00001111 : Klr = &B00001000 : Gosub Kesini Cls

Locate 1 , 1 : Lcd " Ck PC JK QQn"

Locate 2 , 1 : Lcd " " ; Pinc.7 ; " " ; Pina.3 ; Pina.2 ; " " ; Pina.1 ; Pina.0 ; " " ; Pind.3 ; Pind.2

Wait 1

If Pind.3 = Klr.3 And Pind.2 = Klr.2 Then Incr B Else B = B End If Return Tpnand: ' AB|X

Data &B00000000 , &B00000100 '1; 00|1

Data &B00000010 , &B00000100 '3; 10|1

Data &B00000011 , &B00000000 '4; 11|0

Tpnor:

' AB|X

Data &B00000000 , &B00000100 '1; 00|1

Data &B00000001 , &B00000000 '2; 01|0

Data &B00000010 , &B00000000 '3; 10|0

Data &B00000011 , &B00000000 '4; 11|0

Tpnot:

' A|X

Data &B00000000 , &B00000100 '1; 0|1

Data &B00000001 , &B00000000 '2; 1|0

Tpenkoder:

' EI|01234567|A210|GS|EO

Data &B100000000 , &B01111100 '1 1|00000000| 111|1 |1

Data &B111111111 , &B01111100 '2 1|11111111| 111|1 |1

Data &B011111111 , &B01111000 '3 0|11111111| 111|1 |0

Data &B010101010 , &B00000100 '4 0|10101010| 000|0 |1

Data &B000111100 , &B00000100 '5 0|00111100| 000|0 |1

Data &B001010101 , &B00010100 '6 0|01010101| 001|0 |1

Data &B010011001 , &B00010100 '7 0|10011001| 001|0 |1

Data &B000110011 , &B00100100 '8 0|00110011| 010|0 |1

Data &B011000011 , &B00100100 '9 0|11000011| 010|0 |1

Data &B011100111 , &B00110100 '10 0|11100111| 011|0 |1

Data &B000010111 , &B00110100 '11 0|00010111| 011|0 |1

Data &B010101111 , &B01000100 '12 0|10101111| 100|0 |1

Data &B001011111 , &B01010100 '13 0|01011111| 101|0 |1

Data &B010111111 , &B01100100 '14 0|10111111| 110|0 |1

Data &B001111111 , &B01110100 '15 0|01111111| 111|0 |1

Tpadder:

' C0|A3210|B3210|C4|S3210

Data &B000001101 , &B00110100 '1 0| 0000| 1101|0 | 1101

Data &B000101100 , &B00111000 '2 0| 0010| 1100|0 | 1110

Data &B001001110 , &B01001000 '3 0| 0100| 1110|1 | 0010

Data &B001101011 , &B01000100 '4 0| 0110| 1011|1 | 0001

Data &B010001111 , &B01011100 '5 0| 1000| 1111|1 | 0111

Data &B100011010 , &B00110000 '6 1| 0001| 1010|0 | 1100

Data &B100111110 , &B01001000 '7 1| 0011| 1110|1 | 0010

Data &B101011011 , &B01000100 '8 1| 0101| 1011|1 | 0001

Data &B101111101 , &B01010100 '9 1| 0111| 1101|1 | 0101

Data &B110011100 , &B01011000 '10 1| 1001| 1100|1 | 0110

Tpjkff:

' Pr Clr|JK|Q Qn

Data &B00000111 , &B00001000 '1: 0 1 |11|1 0

Data &B00001011 , &B00000100 '2: 1 0 |11|0 1

Data &B00001100 , &B00000100 '3: 1 1 |00|0 1

Data &B00001101 , &B00000100 '4: 1 1 |01|0 1

Data &B00001110 , &B00001000 '5: 1 1 |10|1 0

Data &B00001111 , &B00000100 '6: 1 1 |11|0 1

Data &B00001111 , &B00001000 '7: 1 1 |11|1 0

Kesini: Porta.0 = Msk.0 Porta.1 = Msk.1 Porta.2 = Msk.2 Porta.3 = Msk.3 Porta.4 = Msk.4 Porta.5 = Msk.5 Porta.6 = Msk.6 Porta.7 = Msk.7 Return

Program untuk sub rutin pengujian gerbang logika dan rangkaian logika dapat dijelaskan sebagai berikut:

Pengujian dilakukan dengan cara membandingkan secara look-up table, sehingga setiap gerbang logika dan rangkaian logika memiliki tabel pengujian yang berbeda. Program diawali dengan mengecek nilai R untuk memulai pengujian sesuai gerbang logika atau rangkaian logika yang telah dipilih. Jika nilai R saat ini adalah 1, perintah pada program adalah “If R = 1 Then Goto Gnand End If” (user memilih untuk menguji gerbang NAND) maka eksekusi akan berpindah ke program di label “Gnand:”.

Pengujian tiap gerbang logika dan rangkaian logika diawali dengan memberikan nilai awal pada variabel I0 dan O. Variabel I0 berfungsi untuk menyimpan nilai yang memuat indeks data masukan dari tabel yang dituju. Variabel O berfungsi untuk menyimpan nilai yang memuat indeks data keluaran dari tabel yang dituju. Data masukan yang ditunjuk I0 kemudian disimpan dalam variabel Msk, sedangkan data keluaran yang ditunjuk O disimpan dalam variabel Klr. Pengujian dilakukan berulang sebanyak jumlah pengujian pada tabel pengujian. Perulangan pengujian pada program menggunakan perintah FOR-NEXT. Jumlah pengujian yang dilakukan disimpan dalam variabel A, sedangkan hasil perbandingan look-up table akan disimpan dalam variabel B.

Proses pengujian dimulai dengan memberi masukan ke papan untai digital, dan menyimpan keluaran dari tabel pengujian, perintah yang digunakan adalah “Msk =

Lookup(i0 , Tpnand) : Klr = Lookup(o , Tpnand) : Gosub Kesini”. Setelah memberikan masukan, proses pengujian dilanjutkan dengan membaca nilai keluaran dari papan untai digital kemudian membandingkan keluaran tersebut dengan keluaran tabel pengujian yang disimpan di variabel Klr. Setiap hasil perbandingan yang sama akan dihitung dan disimpan

dalam variabel B. Proses ini dijalankan menggunakan perintah “If Pind.2 = Klr.2 Then

Incr B Else B = B End If”. Sebelum pengujian selanjutnya diproses, nilai variabel I0 dan O diubah ke nilai yang berisi indeks data pengujian selanjutnya, perintah yang dijalankan adalah “I0 = I0 + 2 : O = O + 2”. I0 diberi nilai awal 0, dan O diberi nilai awal 1, karena nilai yang memuat indeks data dimulai dari 0. Gambar 4.7 memperlihatkan tabel pengujian gerbang NAND untuk look-up table pada program.Proses pengujian yang dijalankan pada setiap gerbang logika dan rangkaian logika sama, kecuali pada pengujian JK flip-flop.

Cara kerja JK flip-flop berbeda dengan rangkaian logika yang lain, sehingga proses pengujian yang dilakukan juga berbeda. Masukan clock tidak diberikan bersamaan dengan masukan lain, sehingga digunakan port mikrokontroler yang terpisah yaitu port C.7.

Masukan preset, clear, dan JK diberikan terlebih dahulu, kemudian clock diberi masukan.

Clock diberi masukan sebanyak dua kali, yaitu clock=1 kemudian clock=0. Perbandingan keluaran dilakukan setelah masukan clock.

Gambar 4.7. Tabel Pengujian Gerbang NAND untuk Look-Up Table Pada Program

Masukan dan keluaran papan untai digital selama proses pengujian ditampilkan pada layar LCD. Gambar 4.8 memperlihatkan tampilan LCD pada setiap proses pengujian gerbang logika dan rangkaian logika. Saat proses pengujian gerbang NAND, NOR, dan NOT, yang ditampilkan pada layar LCD adalah variabel A dan B, keterangan masukan dan keluaran, juga keadaan masukan dan keluaran saat itu. saat proses pengujian enkoder 8 ke 3, penjumlah biner 4-bit, dan JK flip-flop hanya keterangan masukan dan keluaran, serta keadaan masukan dan keluaran saat itu yang ditampilkan. Setelah proses eksekusi sub rutin pengujian gerbang logika dan rangkaian logika selesai, proses eksekusi akan kembali ke program utama dan melanjutkan ke sub rutin hasil akhir pengujian.

(a) (b) (c)

(d) (e) (f)

Gambar 4.8. Tampilan LCD pada Proses Pengujian (a) Gerbang NAND, (b) Gerbang NOR, (c) Gerbang NOT, (d) Enkoder 8 ke 3, (e) Penjumlah Biner 4-bit, (f) JK flip-flop

Tpnand:

' AB|X

Data &B00000000 , &B00000100 '1; 00|1

Data &B00000001 , &B00000100 '2; 01|1

Data &B00000010 , &B00000100 '3; 10|1

Data &B00000011 , &B00000000 '4; 11|0

MASUKAN KELUARAN 0 2 4 6 1 3 5 7

Dokumen terkait