INCLUDE "MODEDEFS.BAS"
DEFINE LCD_DREG PORTB 'LCD'ye gidecek data hattının RB4'ten
DEFINE LCD_DBIT 4 'başlayacağı belirtiliyor.
DEFINE LCD_RSREG PORTB 'LCD'ye karakter yazımıyla LCD'nin iç işlemlerini
DEFINE LCD_RSBIT 2 'birbirinden ayıran RS bitine ayrılan port
DEFINE LCD_EREG PORTB 'LCD'ye karakter gönderildikten sonra karakterin
DEFINE LCD_EBIT 3 'görünmesi için 1 olması gereken enable bitine
'ayrılan port
DEFINE LCD_LINES 2 'LCD ekranın satır sayısı
DEFINE LCD_BITS 4 'LCD'ye kaç bit üzerinden data aktarılacağı
RST var PORTA.0 'RA0 'a RST adını verdi.
IO var PORTA.2 'RA1 'e IO adını verdi.
SCLK var PORTA.1 'RA2 'ye SCLK adını verdi.
TRISB=0 'LCD için B bacakları çıkış yapıldı.
rtcyear var byte
rtcday var byte
rtcmonth var byte
rtcdate var byte
rtchr var byte
rtcmin var byte
rtcsec var byte
rtccontrol var byte
Main:
LOW RST 'RST bacağını sıfırladı.
LOW SCLK 'SCLK bacağını sıfırladı.
rtcyear=$02 'rtcyear 'değişkenine 02h sayısını atadı.
rtcday=$06
rtcmonth=$04
rtcdate=$13
rtchr=$13
rtcmin=$42
rtcsec=$00
GOSUB SetTime 'SetTime program bloğunu çağırdı.
GOTO Main_Loop 'Main_Loop program bloguna gitti.
Main_Loop:
GOSUB GetTime 'GetTime program bloğunu çağırdı.
LCDOUT $fe,1 'Ekranı temizledi.
LCDOUT hex2 rtcmonth, "/", hex2 rtcdate, "/", hex2 rtcyear
'ay/gün/yıl şeklinde tarihi yazdı.
LCDOUT $fe, $c0 'İkinci satıra geçti
LCDOUT hex2 rtchr, ":", hex2 rtcmin, ":", hex2 rtcsec
'saat:dakika:saniye şeklinde zamanı yazdı.
Pause 300
GOTO Main_Loop
SetTime:
RST=1 'Reseti kaldırarak haberleşme hattını açtı.
SHIFTOUT IO, SCLK, LSBFIRST, [$8e, 0] 'DS1302'yi ayarlayama kodunu yolladı.
RST=0 'Resetleme
RST=1 'Reseti kaldırarak haberleşme hattını açtı.
SHIFTOUT IO, SCLK, LSBFIRST, [$be,rtcsec,rtcmin,rtchr,rtcdate,rtcmonth,rtcday,rtcyear, 0]
'DS1302'ye ayarlama yapılacağı bildirilmişti, şimdi de yeni zaman bilgileri yollandı.
RST=0 'Resetleme
Return
GetTime:
RST=1 'Reseti kaldırarak haberleşme hattını açtı.
SHIFTOUT IO, SCLK, LSBFIRST, [$bf ]
'DS1302'den zaman bilgisi alma kodunu yolladı.
SHIFTIN IO,SCLK,LSBPRE, [rtcsec, rtcmin, rtchr, rtcdate, rtcmonth, rtcday, rtcyear,rtccontrol]
'DS1302'den zaman bilgisi alınacağı bildirilmişti, şimdi de zaman bilgileri alındı.
RST=0 'Resetleme
RETURN