Ada kalanya kita menginginkan membatasi bit keluaran pada port A, misalkan hanya bit 0 sampai dengan bit 1 saja yang keluar. Apabila bit 0 pada port B ditekan (bernilai 1) maka bit 0 pada port A bernilai 1, dan apabila bit 1 pada port B ditekan (bernilai 1) maka bit 1 pada port A bernilai 1, tetapi apabila bit 2 sampai dan bit 7 pada pada port B ditekan (bernilai 1), maka bit 0 dan bit 1 pada port A akan bernilai 0.
Untuk mendapatkan hasil seperti ini maka buat dulu diagram alur seperti berikut.
Dari diagram alur tersebut apabila kita buat program di mikroprosessor Zilog Z80 maka hasilnya sebagai berikut.
Address | Opcode | Z80 Mnemonic | Ket. |
1800 | 3E 82 | LD A,82 | Masukan 82 ke reg A |
1802 | D3 43 | OUT (43),A | Kirim isi reg A ke addr 43 |
1804 | DB 41 | IN A,(41) | Masukan isi port B ke reg A |
1806 | 3D | DEC A | Kurangi 1 reg A |
1807 | C2 11 18 | JPNZ 1811 | JIka Flag=1 atau tidak 0 maka lompat ke addr 1811 |
180A | 3E 01 | LD A,01 | Isi reg A dengan 01 |
180C | D3 40 | OUT (40),A | Tampilkan data reg A di port A |
180E | C3 04 18 | JP 1804 | Lompat ke addr 1804 |
1811 | 3D | DEC A | Kurangi 1 reg A |
1812 | C2 1C 18 | JPNZ 181C | JIka Flag=1 atau tidak 0 maka lompat ke addr 181C |
1815 | 3E 02 | LD A,02 | Isi reg A dengan 02 |
1817 | D3 40 | OUT (40),A | Tampilkan data reg A di port A |
1819 | C3 04 18 | JP 1804 | Lompat ke addr 1804 |
181C | 3E 00 | LD A,00 | Isi reg A dengan 00 |
181D | D3 40 | OUT (40),A | Tampilkan data reg A di port A |
191F | C3 04 18 | JP 1804 | Lompat ke addr 1804 |
Maka hasil yang akan diperoleh :
Jika b0 = 1, maka port A = 00000001
Jika b1 = 1, maka port A = 00000010
Jika b0=0 dan b1=0, maka A=00000000
Comments
Post a Comment