Timer/Counter dan Interupsi
Timer/Counter
Timer berfungsi untuk mengatur waktu
kerja yang dibutuhkan AT89S51/52, tersedia dua buah timer yaitu Timer 0 dan Timer
1, masing-masing timer terdiri dari 16 bit counter yang dapat diprogram.
Timer/Counter
yang dioperasikan sebagai timer dapat digunakan untuk menghitung waktu dari
sebuah kejadian. Nilai timer
bertambah tiap machine cyle (12 pulsa
clock) sehingga kecepatan bertambahnya ialah 1/12 dari frekwensi osilator.
Dengan menggunakan Timer/Counter sebagai counter, maka Kit mikrokontroler akan selalu menghitung munculnya kejadian yang ditandai
dengan adanya trigger. User tinggal memeriksa nilai counter pada saat yang ditentukan. Register-register
Timer yang tersedia ialah :
TMOD (Timer Mode Register)
Register yang digunakan untuk
mengatur timer/counter terdapat pada Timer Mode (TMOD) dan Timer Control
(TCON). TMOD tidak
dapat diakses secara bit (not bit addressable),
beralamat di 89H. Gambar
dibawah ini memperlihatkan alamat dan pembagian register TMOD

Gambar 4.1 Register TMOD
Penjelasan dari gambar di atas ialah :
Ø Gate: Timer akan
berjalan bila bit ini set dan INT0 (untuk Timer 0) atau INT1 (untuk Timer 1)
berkondisi high
Ø
C/T: 1 = Counter 0 = Timer
Ø M1 & M0: Untuk memilih mode timer, seperti pada
Tabel 4.1:
Tabel 4.1 Mode Operasi Timer /Counter
|
M1 |
M0 |
Mode Operasi |
|
|
0 |
0 |
0 |
Timer/Counter
13 bit |
|
0 |
1 |
1 |
Timer
/Counter 16 bit |
|
1 |
0 |
2 |
Timer/Counter
8 bit auto reload |
|
1 |
1 |
3 |
Split
timer mode untuk timer/counter 0 |
|
1 |
1 |
3 |
Timer/Counter
1 berhenti |
4.1.2
THx dan TLx
THx dan TLx (x adalah nomor
Timer).Merupakan Register yang menunjukkan nilai dari timer di mana
masing-masing Timer mempunyai dua buah register yaitu:
- THx untuk high
byte
- TLx untuk low
byte
·
TH0 : Timer 0 High Byte terletak pada alamat 8AH
·
TL0 : Timer 0 Low Byte terletak pada alamat 8BH
·
TH1 : Timer 1 High Byte terletak pada alamat 8CH
·
TL1 : Timer 1 Low Byte terletak pada alamat 8DH
Misal register Timer/Counter 0
diisi dengan nilai 814AH dan register Timer/Counter 1 diisi dengan nilai 0CF32H, maka instruksinya sebagai
berikut :
MOV TH0,#81H
MOV
TL0,#4AH
MOV
TH1,#0CFH
MOV TL1,#32H
4.1.3 TCON (Timer Control Register)
Pada register ini, hanya 4 bit
saja yaitu TCON.4, TCON.5, TCON.6 dan TCON.7 saja yang mempunyai fungsi
berhubungan dengan timer.

Gambar 4.2 Register TCON
Tabel 4.2
menampilkan penjelasan dari Timer control .
Tabel 4.2 Timer Control
|
Bit |
Alamat bit |
Simbol |
Penjelasan |
|
TCON.7 |
8FH |
TF1 |
Timer/Counter
1 overflow flag |
|
TCON.6 |
8EH |
TR1 |
Timer
1 Run Control Bit |
|
TCON.5 |
8DH |
TF0 |
Timer /Counter 0 overflow flat |
|
TCON.4 |
9CH |
TR0 |
Timer 0 Run Control Bit |
|
TCON.3 |
8BH |
IE1 |
External Interrupt 1 Edge flag |
|
TCON.2 |
8AH |
IT1 |
External
interrupt 1 type control bit |
|
TCON.1 |
89H |
IE0 |
External Interrupt 0 Edge flag |
|
TCON.0 |
88H |
IT0 |
External
interrupt 0 Type control bit |
Penjelasan
dari gambar dan tabel diatas ialah :
Ø TCON.7 atau TF1: Timer
1 Overflow Flag yang akan set bila timer overflow. Bit
ini dapat di-clear oleh software atau oleh devais pada saat program menuju ke
alamat yang ditunjuk oleh interrupt vektor.
Ø
TCON.6 atau TR1: 1 = Timer 1 aktif, 0 = Timer 1 non aktif
Ø
TCON.5 atau TF0: Sama dengan TF1
Ø
TCON.4 atau TR0: Sama dengan TR1
Jika Timer/Counter yang
diprogram akan digunakan sebagai sumber interrupt,
maka IE dan /atau IP juga harus diatur.
Misal kedua Timer/Counter digunakan sebagai sumber interrupt dengan
prioritas Timer/Counter 1, maka instruksinya :
MOV IP,#80H
MOV IE,#8AH
atau
SETB
PT1
SETB ET1
SETB ET0
SETB EA
Mode Timer
Mode
Timer terdiri dari:
Mode 0 Timer 13 bit
Pada
Mode 0, disediakan terutama untuk menjaga kompatibilitas dengan prosesor
8048. pada Mode 0, register TLx (TL0 atau
TL1) hanya digunakan 5 bit terendah saja sedangkan register THx (TH0 atau TH1)
tetap selebar 8 bit. TLx akan terus bertambah hingga bernilai 1FH. Overflow akan
terjadi jika ada perubahan dari FF1FH ke 0000H.
Nilai THx dan TLx dapat diubah oleh user setiap saat
dalam program.
Mode 1 Timer 16 bit
Mode 1 pada 89C51 semua bit TLx
digunakan, sehingga mode 1 merupakan timer/counter 16 bit. TLx akan bertambah hingga bernilai FFH. Pada saat ada perubahan nilai TLx dari FFh ke
00H, THx akan bertambah 1. Nilai maksimal THx dan TLx ialah FFFFH
(THx=FFH dan TLx =FFH). Overflow akan
terjadi jika ada perubahan dari FFFFH ke 0000H.

Gambar 4.3 Timer/Counter Mode 1
Misalnya Timer/Counter 0 digunakan
sebagai timer dalam mode 2 dengan external
control dan Timer/Counter 1 digunakan sebagai counter dalam mode 1 dengan internal control, maka instruksinya :
MOV TMOD,#5AH
Sedangkan untuk menjalankan
kedua timer, instruksinya :
MOV TCON, #50H
atau
SETB TR0
SETB TR1
Mode
2 Timer 16 bit di 89S52
Mode 2 ialah
timer/counter 16 bit yang dapat beroperasi sebagai timer atau event counter. Timer 2 mempunyai 3 mode yaitu
capture, auto-reload
dan baud rate generator. Timer 2 terdiri dari 2 buah register 8
bit yaitu TH2 dan TL2. Berikut table Mode 2
pada 89S52.
Tabel 4.3 Timer Mode 2 89S52
|
RCLK+TCLK |
CP/RL2 |
TR2 |
MODE |
|
0 |
0 |
1 |
16
bit auto reload |
|
0 |
1 |
1 |
18
bit capture |
|
1 |
x |
1 |
Baud
Rate Generator |
|
x |
x |
0 |
Off |
Pada mode
capture, 2 pilihan dipilih oleh bit EXEN2 di T2CON. Jika EXEN2=0, Timer 2 menjadi
16 bit timer atau counter dimana tergantung dari overflow set bit TF2 di
T2CON. Bit ini dapat digunakan untuk
membuat sebuah interupsi.

Gambar
4.4 Mode Capture
Timer 2 dapat
diprogram untuk menghitung naik/mundur ketika dikonfigurasikan sebagai mode 16
bit auto-reload. Fitur ini dipanggil oleh bit DCEN
(Down Counter Enable) yang
berada di SFR T2MOD.

Gambar 4.5 Timer 2 Mode Auto reload (DCEN=0)
Timer 2
sebagai baud rate generator dengan menset TCLK dan/atau RCLK di T2CON.
Sbeagai catatan, baud rate untuk mengirim dan menerima
dapat berbeda jika Timer 2 digunakan untuk mengirim atau memancarkan dan Timer
1 digunakan untuk fungsi lainnya. Menset RCLK dan /atau TCLK membantu
Timer 2 berada pada mode baud rate generator

Gambar 4.6 Mode baud rate generator
Mode
3
Pada Mode 3 di
89C51, Timer/Counter 0 akan menjadi 2 timer/counter 8 bit, sedangkan
Timer/Counter 1 akan berhenti. TL0 akan menjadi
timer/counter 8 bit yang dikendalikan oleh bit control Timer/Counter 0
(meliputi GATE, C/T’, TR0, INT0, dan TF0). TH0 akan menjadi
timer 8 bit (bukan counter) yang dikendalikan oleh bit control timer/counter 1
(meliputi TR1 dan TF1).Timer /Counter 1 masih dapat dioperasikan dalam mode
selain mode 3.
Penerapan Timer/Counter
Timer bekerja memerlukan sumber detak dengan menghubungkan pin T0 (P3.4)
sebagai input detak. Jika digunakan sumber detak internal, input detak berasal
dari osilator yang telah dibagi 12. Untuk pengaturan Timer dengan software maka
bit penentu keaktifan ialah Rtx sedangkan kondisi dari Bit Gate harus berlogika
0. Pengaturan Timer dengan hadware, penentu keaktifan ialah
INTx sedangkan kondisi Bit Gate dan TRx harus berlogika 1.
Timer ini sering digunakan untuk
mengatur baud rate dari port serial.
Dengan mengubah bit SMOD yang terletak pada
register PCON menjadi set (kondisi awal pada saat sistem reset adalah clear)
maka baud rate pada Mode 1, 2 dan 3 akan berubah
menjadi dua kali lipat.
Contoh program berikut ialah
penggunaan fasilitas
Timer pada mikrokontroler .
Untuk menggunakan Timer/Counter 0
sebagai timer mode 1, maka GATE, C/T dan M1 untuk Timer 0 pada TMOD berlogika 0
dan M0 berlogika 1 sehingga TMOD bernilai 01H. Sedangkan
untuk menjalankan Timer 0, maka TR0 (TCON.4) berlogika 1 sehingga TCON bernilai
10H. Pada contoh dibawah ini Timer 0 diberi nilai awal 2CH untuk TH0 dan
00H untuk TL0 sehingga Timer 0 akan selalu dimulai dari nilai 2C00H. Karena frekwensi timer
tinggi, maka digunakan faktor pengali 10H yang berada pada R0.
Langkah-langkah :
·
Hubungkan Port 1
DT-51 dengan “PORT OUTPUT” DT-51 Trainer Board
·
Hubungkan
“CONTROL” DT-51 dengan “CONTROL“ DT-51 Trainer Board
·
Buat program
berikut :
Program timer untuk Led berkedip (timer.asm)
$MOD51
CSEG
ORG 4000H
LJMP START
ORG 400BH
COUNT: INC R0
CJNE R0,#10H,OUT1
SETB P1.5
DJNZ R6,$
DJNZ R7,
CLR P1.5
MOV R0,#00H
OUT1: MOV TH0,#2CH
MOV TL0,#00H
RET1
;inisialisasi
ORG 4200H
START: MOV SP,#30H
MOV R0,#00H
MOV TMOD,#01H
MOV TH0,#2CH
MOV TL0,#00H
MOV TCON,#10H
MOV P1,#00H
MOV IE,#82H
SJMP $
END
Jika program dijalankan, akan menampilkan nyala LED
Bit 5 berkedip dimana baru akan dinyalakan atau dipadamkan setelah interupsi
oleh Timer 0 sebanyak 16 x. Perhatikan pada saat interupsi, program akan
melompat ke alamat vector 000BH tetapi oleh DT51 akan langsung dipindah ke
alamat 400BH.
Contoh berikut menggunakan Timer/Counter
0 Counter Mode 2, langkah-langkahnya :
Program Counter Mode 2
(mode2.asm)
$MOD51
CSEG
ORG 4000H
LJMP START
ORG 400BH
MOV P1, #00H
SETB P1.5
PUSH
5
PUSH
6
PUSH
7
MOV R7,#0FH
LUPA: MOV R6,#0FFH
LUPB: MOV R5,#0FFH
DJNZ R5,$
DJNZ R6,LUPB
DJNZ R7,LUPA
POP 7
POP 6
POP 5
RETI
ORG 4100H
DELAY:MOV R7,#04H
LUP1: MOV R6,#0FFH
LUP2: MOV R5,#0FFH
DJNZ R5,$
DJNZ R6,LUP2
DJNZ R7,LUP1
RET
;inisialisasi
START: MOV SP,#30H
MOV TMOD,#06H
MOV TH0,#0FAH
MOV TL0,#0F6H
SETB TR0
CLR TF0
MOV IE,#82H
;Program Utama
LOOP1: MOV P1,#00110011B
ACALL DELAY
MOV P1,#11001100B
ACALL DELAY
SJMP LOOP1
END
Program akan
menampilkan nyala LED bergantian antara data 00110011b dengan 11001100b. Pada
saat terjadi interupsi, maka LED bit 5 akan menyala sejenak. Untuk menggunakan Timer/Counter 0 sebagai
counter mode 2, maka GATE dan M0 untuk Timer 0 pada TMOD berlogika 0 dan C/T
dan M1 berlogika 1, sehingga TMOD bernilai 00000110b atau 06H. Untuk menjalankan counter 0, maka TR0(TCON.4) berlogika 1, sehingga TCON bernilai 0010000b
atau 10H. Perintah CLR TF0 digunakan
untuk memberikan interrupt flag
sebelum interupsi diaktifkan. Untuk mengaktifkan
interrupt counter 0, maka EA (IE.7) dan ET0(IE.1) berlogika 1, sehingga IE
bernilai 10000010b atau 82H. Pada contoh
program diatas, counter 0 diberi nilai awal F6H untuk
TL0, sehingga membutuhkan 10 x penekakan keypad IS3 untuk menghasilkan
interupsi pertama. Dan sebagai nilai reload pada TH0 diberi nilai FAH, sehingga
hanya membutuhkan 6 x penekanan keypad IS3.
Penerapan lainnya, misal jika kita ingin membuat bunyi
dengan frekwensi 1Hz, periodanya ialah T=1/f, perioda yang dihasilkan ialah 1
detik. Dengan demikian perioda port tinggi ialah 0.5 detik
dan perioda port rendah ialah 0.5 detik.

Gambar 4.7 Rangkaian
driver speaker
Assumsikan bahwa frekwensi
detak 12 MHz, maka tundaan maksimum yang dicapai ialah 65535 x 1 uS =0.065
detik. Untuk itu timer digunakan sebagai penghasil tundaan
selama 0.01 detik (10.000 x 1 uS). Dengan pembagi 50 akan
didapat tundaan 0.01 detik x 50 =0.5 detik. Nilai untuk TH0 dan TL0 ialah :
65535
-10.000=55535D=D8EFH
Nilai
untuk TH0 ialah D8H dan untuk TL0 ialah EFH.
Berikut contoh program penghasil bunyi di speaker:
Listing
Program 6. Penghasil bunyi di
speaker (bunyi.asm)
$MOD51
ORG 00H ; MENGGUNAKAN ALAMAT AWAL MIKRO
…
MULAI: SETB P1.0
ACALL TUNDA
CLR P1.0
ACALL TUNDA
SJMP MULAI
TUNDA: MOV
R0,#0
LAGI: MOV TMOD, #01
MOV TH0, #0D8H
MOV TL0, #0EFH
SETB TR0
ULANG: NOP
JBC TF0,
HITUNG
SJMP ULANG
HITUNG: INC R0
CJNE R0, #100, LAGI
RET
END
Interupsi
Program yang sedang dijalankan oleh
mikrokontroler AT89S51/52 dapat dihentikan untuk sementara yang dikenal dengan
instilah interupsi. Jika AT89S51/52
mendapat permintaan interupsi maka program
counter (PC) akan diisi alamat dari vector interupsi, kemudian AT89S51/52
melaksanakan rutin pelayanan interupsi mulai dari alamat tersebut setelah
selesai maka AT89S51/52 akan kembali ke pelaksanaan program utama yang ditinggalkan.
Mikrokontroler AT89S51/52 menyediakan 6 sumber interupsi
yaitu 2 buah interupsi eksternal (INT 0 dan INT 1), 3 buah interupsi timer
(Timer 0, Timer 1, dan Timer 2), dan sebuah interupsi port serial.
Interupsi
ialah suatu sela yang terjadi pada saat program sedang berjalan. Mirip halnya
dengan interupsi yang terjadi pada saat rapat yang sedang berlangsung. Interupsi berguna jika
terdapat suatu rutin yang dijalankan hanya pada waktu tertentu yang bersifat
asinkron.
Berikut Interrupt Enable pada MCS-51:
Tabel 4.4 Interrupt Enable
|
Bit |
Alamat bit |
Simbol |
Penjelasan |
|
IE.7 |
0AFH |
EA |
Enable
All |
|
- |
- |
- |
Reserved |
|
- |
- |
- |
Reserved |
|
IE.4 |
0ACH |
ES |
Serial
Interrupt Enable Bit |
|
IE.3 |
0ABH |
ET1 |
Timer/Counter
1 Enable bit |
|
IE.2 |
0AAH |
EX1 |
External
Interrupt 1 enable Bit |
|
IE.1 |
0A9H |
ET0 |
Timer
/Counter 0 Enable Bit |
|
IE.0 |
0A8H |
EX0 |
External
Interrupt 0 Enable Bit |
Jika terjadi interupsi, maka interrupt flag akan
bernilai 1 pada bit yang menunjukkan sumber interrupt. Jika CPU menemukan adanya interrupt pada saat
sampling, proses selanjutnya ialah CPU akan menjalankan instruksi LCALL yang
akan menyimpan Program Counter (PC) ke stack dengan
urutan 8 bit terendah terlebih dahulu.
Jika sumber interupsi berasal dari Timer/Counter atau External interrupt, interrupt flag yang
bersangkutan akan dibersihkan.
Pastikan juga user mengamankan
nilai register dengan menggunakan PSW, ACC, B, R0-R7 dan DPTR. Selain itu, register yang di-PUSH pertama harus di-POP terakhir.
Selain itu, gunakan RETI agar fungsi kembali ke alamat semula.
Contoh
program berikut merupakan Penggunaan INT0 dengan interrupt enable.
Langkah-langkahnya :
Buat
proram berikut :
Program
Interrupt Enable (ie.asm)
$MOD51
CSEG
ORG 4000H
LJMP START
ORG 4003H
RL A
MOV P1,A
MOV R7,#04H
LOOPA:
MOC R6, #0FFH
LOOPB: MOV R5,#0FFH
DJNZ R5,$
DJNZ R6,LOOPB
DJNZ R7,LOOPA
RETI
ORG 4200H
;inisialisasi
START: MOV SP,#30H
MOV TCON,#01H
MOV P1,#01H
MOV IE,#81H
SJMP $
END
Program diatas akan menampilkan nyala LED dari Bit 0
dan bergeser ke kiri setiap ada penekanan keypad “IS1”. Untuk mengunakan INT0
dengan falling edge trigger maka INT0
(TCON.0) berlogika 1, sehingga TCON bernilai 00000001b(01H). Untuk mengaktifkan
interrupt, maka EX0 (IE.0) dan EA(IE.7) berlogika 1 sehingga IE bernilai
10000001b (81H), terlihat juga bahwa pada saat interupsi program melompat ke
alamat vector 0003H yang oleh DT-51 langsung dipindah ke alamat 4003H. Fungsi
DJNZ digunakan untuk mengurangi satu dan lompat jika hasilnya bukan nol.
Contoh
penggunaan interupsi lainnya, program berikut akan
menggunakan INT0 dan INT1 dengan Interrupt
Priority.
Langkah-langkahnya :
Program INT0 dan INT1 (inprio.asm)
$MOD51
CSEG
ORG 4000H
LJMP START
ORG 4003H
LJMP INTER0
ORG
4013H
LJMP
INTER1
ORG
4100H
INTER0: MOV P1,#0H
SETB P1.0
LCALL
LDELAY
CLR
P1.0
RETI
INTER1: MOV P1,#0H
SETB P1.7
LCALL DELAY
CLR P1.7
RETI
ORG 4200H
LDELAY: PUSH 7
PUSH 6
PUSH 5
MOV
R7, #24H
LUPA: MOV R6, #0FFH
LUPB: MOV R5,
#0FFH
DJNZ R5,
$
DJNZ R6,
LUPB
DJNZ R7,
LUPA
POP
5
POP
6
POP
7
RET
SDELAY: PUSH 7
PUSH
6
PUSH
5
MOV
R7, #04H
LUP1: MOV R6, #0FFH
LUP2: MOV R5,
#0FFH
DJNZ
R5,
$
DJNZ
R6, LUP2
DJNZ
R7, LUP1
POP
5
POP
6
POP
7
RET
;inisialisasi
START: MOV SP,#30H
MOV
TCON, #05H
MOV IP,
#04H
MOV IE,
#85H
;Program Utama
LOOP1: MOV P1,#01010101B
ACALL SDELAY
MOV P1,
#10101010B
ACALL SDELAY
SJMP LOOP1
END
Progam akan menampilkan nyala
LED yang bergantian. Setiap kali ada
penekanan keypad IS1, hanya LED bit 0 yang akan
menyala. Setiap kali ada penekanan
keypad IS2, hanya led bit 7 yang akan menyala. Untuk menggunakan INT0 dan INT1 dengan falling edge trigger (transisi dari high ke low), maka IT1(TCON.2) dan IT0 (TCON.0) berlogika 1, sehingga TCON
bernilai 00000101b atau 05H. Untuk memindah INT1 ke tingkat prioritas lebih tinggi, maka PX1
(IP.2) berlogika 1 sehingga IP bernilai 00000100b atau 04H.
Untuk mengaktifkan INT0 dan INT1, maka EX0(IE.0),
EX1(IE.2), dan EA (IE.7) berlogika 1, sehingga IE bernilai 10000101b atau 85H. Rutin
interrupt pada alamat vector 4003H dan 4013H dipindah ke alamat lain dengan perintah LJMP.
Hal ini dilakukan agar rutin dapat lebih panjang tanpa
khawatir menerjang alamat vector berikutnya. Perhatikan bahwa
penekanan keypad IS2 dapat menginterupsi rutin penekanan keypad IS1, tetapi
tidak sebaliknya. Hal ini dikarenakan INT1
berada pada tingkat prioritas lebih tinggi.
Perhatikan juga bahwa SDELAY
menggunakan alamat yang sama dengan LDELAY. Untuk menghindari kekacauan nilai, maka
diperlukan PUSH dan POP.
LATIHAN
:
1. Jelaskan cara kerja timer/counter di AT89C51 dan
AT89S52
2. Buat
tampilan animasi menggunakan 7 segment trainer board, sebagai contoh berikut akan menampilkan angka ‘7’ dan ‘5’ di 7 segment trainer
board
$MOD51
PORTC EQU 2002H
CW EQU 2003H
CSEG
ORG 4000H
LJMP START
DELAY: MOV R6,#0FH
LUP: MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,LUP
RET
START: MOV
SP,#30H
MOV DPTR,#CW
MOV A,#80H;konfigurasi Port A,B dan C
MOVX @DPTR,A
LOOP:
;menampilkan angka 5 di 7 segment 1
MOV DPTR,#PORTC
MOV A,#80H
MOV
@DPTR,A
MOV
P1,#6DH
LCALL DELAY
;menampilkan
angka 7 di segment 2
MOV A,#40H
MOV
@DPTR,A
MOV
P1,#07H
LCALL DELAY
SJMP
END
Jika tidak ada kesalahan, program akan menampilkan
angka 7 pada segment 2 dan angka 5 pada segment 1 secara serentak tanpa
berkedip. Pada program tersebut, D01 terhubung
dengan Port C bit ke 6 (PC.6) dan D02 terhubung dengan Port C bit ke 7
(PC.7). Untuk menampilkan angka 7 pada
segment 2, maka D02 berlogika 0 dan D01 berlogika 1, jadi data 7 segment yang
dikirim bernilai 00000111b atau 07H.
Untuk menampilkan angka 5 pada segment 1, maka D02
bernilai 1 dan D01 berlogika 0, maka data yang dikirim ke port 1 bernilai
01101101b atau 6DH.
3. Jelaskan fungsi interupsi dan efeknya bagi program
yang sedang berjalan
4. Buatlah program untuk menampilkan led di port 1 dengan
CO1 yang dihubungkan ke T1 pada DT-51 trainer board dan jumper Pulse Generator
pada 1KHz, dengan syarat:
5. Buat program jika P1.1 diberi logika 1, maka Port A
akan menampilkan nyala lampu Running LED ke arah kiri, sedangkan jika p1.2 yang
diberi logika 1, maka port B akan menampilkan nyala lampu Running LED ke arah
kanan.
6. Buat program untuk menampilkan LED di port B dengan
toggle switch di port C untuk kondisi :
a. Jika toggle switch “bit 2”
berlogika “1”, maka semua LED akan padam
b. Jika toggle switch “Bit 2”
berlogika ‘0’, program akan memeriksa kondisi toggle switch “Bit 5”
c. Jika toggle switch “Bit 2”
berlogika ‘0’ dan toggle switch “Bit 5” berlogika ‘0’,
led “Bit 2” menyala.
d. Jika toggle switch “Bit 2”
berlogika ‘0’ dan toggle switch “Bit 5” berlogika ‘1’, LED “Bit 5” menyala.