KONTROL ON/OF LED DENGAN DS1307 BERBASIS ATMEGA32

lagi-lagi RTC... maklum lagi fokus ma IC pewaktu ini. heheheh.. listing program beriku merupakan program untuk kontrol led secara real time. untuk sistem kerjanay, misalnya kita ingin idupin led pada pulukul 15:43:00 dan mematikan led pada pukul 15:45:00 secara otomatis. dari waktu yang kita set akan dibandingkan dengan waktu nyata atau waktu yang diaktifkan oleh ds1307. untuk set waktu, set wkt start dan stop menggunakan keyboard komputer...
berikut rangkaiannya:

listing program:
$regfile = "m32def.dat"
$crystal = 12000000
$baud = 9600
'***************************************************************
Config Portb = Output
Portb.0 = 0
'***************************************************************
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 ,
Config Lcdpin = Pin , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
Config Lcd = 20 * 4

'***************************************************************
$lib "ds1307clock.lib"
Config Sda = Portc.1
Config Scl = Portc.0
Const Ds1307w = &HD0
Const Ds1307r = &HD1
Config Clock = User
'***************************************************************
Dim Char As String * 10 , Tanda As String * 1
Dim Jam As String * 10 , Menit As String * 10 , Detik As String * 10
Dim A As Byte , B As Byte , C As Byte
Dim X As Byte , Y As Byte , Z As Byte
Dim Waktu As String * 10
Dim Jame As String * 10
Dim Menite As String * 10
Dim Detike As String * 10
Dim Ali As String * 10
Dim Hadi As String * 10
Dim Lut As String * 10
Dim Ature As String * 10
Dim Stoop As String * 10
Dim Sari As String * 10
Dim Novia As Eram String * 10
Dim Rosid As String * 10
Dim Wahyu As Eram String * 10
'**************************************************************
Print "ALI JAYA"
Waitms 100
Time$ = "15:30:00"
Print "waktu:" ; Time$
'**************************************************************
Mulia:
Sari = Novia
Rosid = Wahyu
Do
   Tanda = Inkey()
   If Tanda = "A" Then
   ' untuk ganti seting waktu RTC tekan huruf a pada keyboar
   Input "masukkan waktu (hh:mm:ss):" , Waktu
   Jam = Mid(waktu , 1 , 2)
   Menit = Mid(waktu , 4 , 2)
   Detik = Mid(waktu , 7 , 2)
   Time$ = Jam + ":" + Menit + ":" + Detik
   A = Val(jam)
   B = Val(menit)
   C = Val(detik)

   _hour = A
   _min = B
   _sec = C
   Gosub Settime
   End If


   If Tanda = "B" Then
   ' untuk ganti seting waktu STAR TIME  tekan huruf B pada keyboar
   Input "MASUKKAN STAR TIME (HH:MM:SS) :" , Ature
   Jame = Mid(ature , 1 , 2)
   Menite = Mid(ature , 4 , 2)
   Detike = Mid(ature , 7 , 2)
   Sari = Jame + ":" + Menite + ":" + Detike
   Novia = Sari
   End If

   If Tanda = "C" Then
   ' untuk ganti seting waktu STAR STOP  tekan huruf C pada keyboar
   Input "MASUKKAN STOP TIME (HH:MM:SS) :" , Stoop
   Ali = Mid(stoop , 1 , 2)
   Hadi = Mid(stoop , 4 , 2)
   Lut = Mid(stoop , 7 , 2)
   Rosid = Ali + ":" + Hadi + ":" + Lut
   Wahyu = Rosid
   End If

  Print "waktu :" ; Time$
 Cls
 Cursor Off
 Locate 1 , 3
 Lcd "AVR PROJECT"
 Locate 2 , 1
 Lcd "WAKTU      =" ; _hour ; ":" ; _min ; ":" ; _sec
 Locate 3 , 1
 Lcd "TIME START =" ; Jame ; ":" ; Menite ; ":" ; Detike
 Locate 4 , 1
 Lcd "TIME STOP  =" ; Ali ; ":" ; Hadi ; ":" ; Lut
 Wait 1

 If Time$ = Sari Then
 Portb.0 = 1
 End If
 If Time$ = Rosid Then
 Portb.0 = 0
 End If
 Loop
 End
'************************************************************
 Getdatetime:
      I2cstart
      I2cwbyte Ds1307w
      I2cwbyte 0

      I2cstart
      I2cwbyte Ds1307r
      I2crbyte _sec , Ack
      I2crbyte _min , Ack
      I2crbyte _hour , Nack

 I2cstop
 _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
 Return
'*************************************************************
 Settime:
 _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
 I2cstart
 I2cwbyte Ds1307w
 I2cwbyte 0
 I2cwbyte _sec
 I2cwbyte _min
 I2cwbyte _hour
 I2cstop
 Return

untuk set time tkan huruf A pada keyboar, untuk set time start tekan huruf B dan untuk set time stop tekan huruf C
Diberdayakan oleh Blogger.