Powered By Blogger

Kamis, 03 Oktober 2013

MEMBUAT JAM DIGITAL TANPA RTC DENGAN ATMEGA32

Kadangkala kita membutuhkan aplikasi jam digital tanpa menggunakan real time clock untuk pewaktuan-pewaktuan yang tidak membutuhkan presisi tinggi.



Berikut adalah program jam digital tanpa RTC yang dibuat dengan Bascom AVR


$regfile = "m32def.dat"
$crystal = 11059200
$baud = 9600

Config Portd = Input

T_jam Alias Pind.2
T_menit Alias Pind.3
T_set Alias Pind.4

Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
Config Lcd = 16 * 2

 Cursor Off
 Cls
 Lcd "     JAM     "
 Lowerline
 Lcd "   DIGITAL   "
 Wait 2


Dim Pengali As Word
Dim Detik_1 As Byte
Dim Detik As Byte
Dim Menit As Byte
Dim Hari As Byte
Dim Jam As Word


Config Timer0 = Timer , Prescale = 256
Config Debounce = 3

'========================ATUR WAKTU==============================================================================

Set_waktu:
Cls
Cursor Off
Upperline
Lcd "    Atur Jam   "

Waitms 300

Do
Jam_set:

Waitms 300

Locate 2 , 6
Lcd Jam ; " : " ; Menit

If T_jam = 0 Then
Jam = Jam + 1
Waitms 100

Else
If Jam = 24 Then
Jam = 0

Else
If T_set = 0 Then

Waitms 100
Goto Menit_set
Else
Goto Jam_set

End If
End If
End If

Loop


Menit_set:
Cls
Locate 1 , 1
Lcd "   Atur menit   "

Menit_set2:
Do

Waitms 300

Locate 2 , 6
Lcd Jam ; " : " ; Menit

If T_menit = 0 Then
Menit = Menit + 1
Waitms 100

Else
If Menit = 60 Then
Menit = 0

Else
If T_set = 0 Then

Waitms 100
Cls
Goto Mulai
Else
Goto Menit_set2

End If
End If
End If
Loop


'================================ MULAI ALATNYA ========================================================

Mulai:

'pengaktifan interupsi timer
On Ovf0 Int_timer0
'pengaktifan timer0
Enable Timer0

Enable Interrupts

Wait 2

Cls
'========================================================================

Do
Waitms 100

 Locate 1 , 1
   Lcd "T "
   Locate 1 , 3
   Lcd Jam ;
   Locate 1 , 5
   Lcd ":" ;
   Locate 1 , 6
   Lcd Menit ;
   Locate 1 , 8
   Lcd ":" ;
   Locate 1 , 9
   Lcd Detik ;
Wait 1
Loop


Int_timer0:
   Incr Pengali
   If Pengali > 0 Then
      Pengali = 0
      Incr Detik_1
   End If
   If Detik_1 > 99 Then
      Detik_1 = 0
      Incr Detik
   End If
   If Detik > 59 Then
      Detik = 0
      Incr Menit
   End If
   If Menit > 59 Then
      Menit = 0
      Incr Jam
   End If

   If Jam > 24 Then
   Jam = 0
      Incr Hari
   End If
Return


Tidak ada komentar:

Posting Komentar