Read more
Penghitungan turun pada mikrokontroler at mega 16 dapat dilakukan pada event (meminjam istilah pada Delphi nih) saat tombol interupsi dalam kondisi low level maupun pada event-event yang lain… terserah panjenengan saja sebagai pengembang aplikasi karena hal ini bersifat opsional tergantung kebutuhan dn kreatifitas anda (butuh otak kiri dan otak kanan untuk bisa sukses di dunia mikrokontroller)
Pemanfaatan interrupt pada pilihan enable saat kondisi low level sebagai inputan, dimaksudkan untuk menghindari double counting (penghitungan dobel) bahkan tidak hanya dobel malah bisa lebih dari itu.. penjelasannya adalah sebagai berikut : ketika yang dipergunakan adalah logika ketikan PINA.0 , PINB.x, PINC.x atauPIND.x maka yang terjadi ketika logika pada masing masing pin yang dimaksud berlogika nol maka penghitungan turun akan terus dilakukan, tentunya hal ini akan menyebabkan aplikasi berjalan tidak sebagaimana mestinya.
Selanjutnya akan saya tampilkan rangkaian pada simulai proteus yang dipergunakan pada percobaan ini, berikut adalah gambar nya : (ingat pin interrupt interrupt pada pada mikrokontroller dapat anda cek pada configurasi pin pada datasheet mikorokontroller ) silakan lihat gambar saja ya…
| up down counter bascom |
Untuk coding down counter memanfaatkan bascom (basic compiler), silakan lihat coding di bawah ini :
$regfile = "m16def.dat"
$crystal = 8000000
Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Datain Alias Portc.0
Clock Alias Portc.1
Strobe Alias Portc.2
Dim Kodesat As Byte , Npul As Integer , Nsat As Integer , Kodepul As Byte
Dim Koderat As Byte , Nrat As Integer
Mundur:
'Nrib = 9
Nrat = 9
Npul = 9
Nsat = 9
Do
Gosub Tampil
If Nsat = -1 Then
Nsat = 9
Decr Npul
End If
If Npul = -1 Then
Npul = 9
Decr Nrat
End If
If Nrat = -1 Then
Nrat = 9
' Decr Nrib
End If
If Npul = 0 And Nsat = 0 Then
If Nrat = 0 Then
Goto Mundur
End If
End If
Gosub Tampil
Decr Nsat
Reset Strobe
Loop
Tampil:
Reset Strobe
Kodesat = Lookup(nsat , Kode)
Kodepul = Lookup(npul , Kode)
Koderat = Lookup(nrat , Kode)
'Koderib = Lookup(nrib , Kode)
'Shiftout Datain , Clock , Koderib , 1
Shiftout Datain , Clock , Koderat , 1
Shiftout Datain , Clock , Kodepul , 1
Shiftout Datain , Clock , Kodesat , 1
Waitms 1
Set Strobe
Waitms 100
Return
Kode:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90
$crystal = 8000000
Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Datain Alias Portc.0
Clock Alias Portc.1
Strobe Alias Portc.2
Dim Kodesat As Byte , Npul As Integer , Nsat As Integer , Kodepul As Byte
Dim Koderat As Byte , Nrat As Integer
Mundur:
'Nrib = 9
Nrat = 9
Npul = 9
Nsat = 9
Do
Gosub Tampil
If Nsat = -1 Then
Nsat = 9
Decr Npul
End If
If Npul = -1 Then
Npul = 9
Decr Nrat
End If
If Nrat = -1 Then
Nrat = 9
' Decr Nrib
End If
If Npul = 0 And Nsat = 0 Then
If Nrat = 0 Then
Goto Mundur
End If
End If
Gosub Tampil
Decr Nsat
Reset Strobe
Loop
Tampil:
Reset Strobe
Kodesat = Lookup(nsat , Kode)
Kodepul = Lookup(npul , Kode)
Koderat = Lookup(nrat , Kode)
'Koderib = Lookup(nrib , Kode)
'Shiftout Datain , Clock , Koderib , 1
Shiftout Datain , Clock , Koderat , 1
Shiftout Datain , Clock , Kodepul , 1
Shiftout Datain , Clock , Kodesat , 1
Waitms 1
Set Strobe
Waitms 100
Return
Kode:
Data &HC0 , &HF9 , &HA4 , &HB0 , &H99 , &H92 , &H82 , &HF8 , &H80 , &H90
Anda klenger ngeliatnya ? sama … saya juga tapi tenang saja dengan anda belajar sedikit saja, saya pastikan anda akan berhasil memahaminya (semoga tidak semakin klenger ya…..)
Jika anda bertanya dimana penerapannya ? anda dapat melihatnya pada traffic light , system antrian bank dan sebagainya…



0 Reviews
Silakan dikomentari