[ marinbnm @ 02.04.2008. 18:42 ] @
| Pozdrav!
Zanimalo bi me ima li tko rutinu za sat, znači namjestim mu vrijeme i datum, i onda da mogu mu recimo namjesitit datum i vrijeme kad da upali relej......ili ići još sa onim DS1302 kao real time clock?
Inače radim u PICBASIC pro.....i 16F877 koristim..
Pa ako netko ima kakav primjer!
tnx!
|
[ pelctronics @ 02.04.2008. 21:48 ] @
'****************************************************************
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [Boris] *
'* Notice : Copyright (c) 2008 [pelctronics] *
'* : All Rights Reserved *
'* Date : 26.1.2008 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
DEFINE LCD_DREG PORTB ' I/O port na kome se nalazi LCD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2 ' Register select pin
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3 ' Enable pin
DEFINE LCD_BITS 4 ' 4-bitni data bus
DEFINE LCD_LINES 2 ' LCD ima dva reda karaktera
define osc 8
symbol SCL = PORTC.3 ' I2C data pin
symbol SDA = PORTC.4 ' I2C clock pin
trisd=00000000
portd=00
B0 var byte
b0=0
Sekunde var byte ' Sekunde
Minuti var byte ' Minuti
sati var byte ' Sati
Dani var byte ' Dan
Meseci var byte ' Mesec
Godina var byte ' Godina
paljenje_minut var byte
paljenje_sat var byte
gasenje_sat var byte
gasenje_minut var byte
paljenje_minut=0
paljenje_sat=0
gasenje_sat=0
gasenje_minut=0
read 1,b0
pause 20
portd=B0
Main:
gosub Procitaj_sat
pause 100
gosub provera_dana
if (minuti=paljenje_minut) and (sati=paljenje_sat) then pali
pause 100
if (Minuti=gasenje_minut) and (sati=gasenje_sat) then gasi
goto Main ' Ponovi sve
provera_dana:
select case meseci
case 1 '''januar''''''
paljenje_minut=52
paljenje_sat=16
gasenje_sat=16
gasenje_minut=55
case 22 '''''februar''''''
paljenje_minut=32
paljenje_sat=15
gasenje_sat=15
gasenje_minut=33
case 3 ''''mart'''
paljenje_minut=15
paljenje_sat=16
gasenje_sat=7
gasenje_minut=0
case 4 '''''april'''
paljenje_minut=00
paljenje_sat=17
gasenje_sat=7
gasenje_minut=0
case 5 ''''''maj'''''
paljenje_minut=00
paljenje_sat=18
gasenje_sat=7
gasenje_minut=0
case 6 '''''''jun''''''
paljenje_minut=0
paljenje_sat=18
gasenje_sat=7
gasenje_minut=0
''''''jul'''''
case 7
paljenje_minut=20
paljenje_sat=19
gasenje_sat=7
gasenje_minut=0
case 8 '''''avgust''''
paljenje_minut=0
paljenje_sat=20
gasenje_sat=7
gasenje_minut=0
case 9 '''''septembar''''''
paljenje_minut=20
paljenje_sat=20
gasenje_sat=7
gasenje_minut=0
'''''oktobar'''''
case 10
paljenje_minut=20
paljenje_sat=19
gasenje_sat=19
gasenje_minut=22
case 11 ''''''novembar''''''
paljenje_minut=20
paljenje_sat=19
gasenje_sat=19
gasenje_minut=22
'''''''decembar'''''
case 12
paljenje_minut=20
paljenje_sat=19
gasenje_sat=19
gasenje_minut=22
end select
return
'''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''' paljenje
pali:
if (Minuti=gasenje_minut) and (sati=gasenje_sat) then gasi
portd=255
b0=portd
write 1, b0 ''pamti zadnje stanje
goto main
'''''''''''''''''''''''''''''''''''''''''''''''''' gasenje
gasi:
portd=00
b0=portd
write 1, b0 ''pamti zadnje stanje
goto main
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''
procitaj_sat:
I2CREAD SDA,SCL,%10100001,2,[Sekunde]
I2CREAD SDA,SCL,%10100001,3,[Minuti]
I2CREAD SDA,SCL,%10100001,4,[sati]
I2CREAD SDA,SCL,%10100001,5,[Dani]
I2CREAD SDA,SCL,%10100001,6,[Meseci]
I2CREAD SDA,SCL,%10100001,7,[Godina]
sati =(sati & $F )+((sati>>4)*10) '''konverzija iz hexa decimalnog u decimalni broj '''''
minuti = (minuti & $F )+((minuti>>4)*10)'''''
dani = (dani & $F )+((dani>>4)*10)
meseci =(meseci & $F )+((meseci>>4)*10)
sekunde =(sekunde & $F )+((sekunde>>4)*10)
lcdout $fe,1 ' Obrisi displej
lcdout $fe,2 ' Prvi red prvi karakter
lcdout "Vreme:",dec2(sati),":", dec2(Minuti),":",dec2(Sekunde)
lcdout $fe,$c0 ' Drugi red, prvi karakter
lcdout "Datum:",dec2(Dani),".",dec2 (Meseci),".20",dec2(Godina)
return
End ' Kraj programa
Slicno pa preradi :-)
kolo je pcf8583 Philips
[ marinbnm @ 02.04.2008. 23:17 ] @
Super....
samo jedno, na kraju meseci, trba li umjesto "end select" biti "end select case"?
[ Sepa011 @ 03.04.2008. 07:07 ] @
i jos jedna opaske da ne bude zabune za mladje
Citat:
sati =(sati & $F )+((sati>>4)*10) '''konverzija iz hexa decimalnog u decimalni broj '''''
komentar treba da bude: konverzija BCD broja u pojedinacne decimalne cifre
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.