Senin, 09 September 2013

Program Jam Digital Menggunakan Bascome AVR

$regfile = "m16def.dat"
$crystal = 11059200

Config Sda = Portd.6
Config Scl = Portd.7
Config Portb = Output
Config Porta.0 = Output
Const Ds1307w = &HD0
Const Ds1307r = &HD1

Dim Det As Byte , Men As Byte , Jam As Byte , Har As Byte , Tgl As Byte , Bul As Byte , Thn As Byte
Dim Ndet As Byte , Nmen As Byte , Njam As Byte , Nhar As Byte , Ntgl As Byte , Nbul As Byte , Nthn As Byte
Dim Namahari As String * 6
Dim Namabulan As String * 10
Dim Hitungan As Byte
Dim Hitungan8 As Byte
Dim Jumlahsegment As Byte
Dim Tampilangka As Byte
Dim Digit(4) As Byte

Ena Alias Portb.0
Dataa Alias Portb.1
Klok Alias Portb.2
Buzzer Alias Porta.0
Porta = 255

   'Ena = 0                                                  'nyala
   Ena = 1                                                  'mati

Main:

'Cls
'Ndet = &H00
'Nmen = &H45
'Njam = &H06
'Ntgl = &H27
'Nhar = &H07
'Nbul = &H04
'Nthn = &H13
'Gosub Aturwaktu



Do
  Gosub Waktu

  If Jam = 05 And Men = 00 Then
      Buzzer = 0
  Elseif Jam = 05 And Men = 30 Then
      Buzzer = 1
  End If

   If Jam >= 10 Then
      Digit(1) = Jam \ 10
      Digit(2) = Jam Mod 10
   Else
      Digit(1) = 0
      Digit(2) = Jam
   End If

   If Men >= 10 Then
      Digit(3) = Men \ 10
      Digit(4) = Men Mod 10
   Else
      Digit(3) = 0
      Digit(4) = Men
   End If

   Ena = 1
   For Jumlahsegment = 1 To 4
      Tampilangka = Lookup(digit(jumlahsegment) , Dataangka)
      For Hitungan8 = 7 To 0 Step -1
         Dataa = Tampilangka.hitungan8
         Klok = 0
         Klok = 1
      Next Hitungan8
   Next Jumlahsegment
   Ena = 0
Loop

Waktu:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0

I2cstart
I2cwbyte Ds1307r
I2crbyte Det , Ack
I2crbyte Men , Ack
I2crbyte Jam , Ack
I2crbyte Har , Ack
I2crbyte Tgl , Ack
I2crbyte Bul , Ack
I2crbyte Thn , Nack
I2cstop

Det = Makedec(det)
Men = Makedec(men)
Jam = Makedec(jam)
Har = Makedec(har)
Tgl = Makedec(tgl)
Bul = Makedec(bul)
Thn = Makedec(thn)
Return

Aturwaktu:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte Ndet
I2cwbyte Nmen
I2cwbyte Njam
I2cwbyte Nhar
I2cwbyte Ntgl
I2cwbyte Nbul
I2cwbyte Nthn
I2cwbyte &B10010000
I2cstop
Return
End
Datahari:
Data "Sabtu" , "Minggu" , "Senin" , "Selasa" , "Rabu" , "Kamis" , "Jumat" , "Sabtu"
Databulan:
Data "? " , "Januari" , "Februari" , "Maret" , "April" , "Mei" , "Juni" , "Juli" , "Agustus" , "September" , "Oktober" , "November" , "Desember"

Dataangka:
       'fgedcbah
Data &B10111110 , &B00001100 , &B01110110 , &B01011110 , &B11001101 , &B11011011 , &B11111011 , &B00001110 , &B11111110 , &B11011111 , &B00000000

0 komentar:

Posting Komentar