Code:
<html><head></head><body><!--StartFragment--><pre><code><font color="#000080"><i>' PIC16F630 Fuses
</i></font><font color="#008000">@ DEVICE BOD_OFF
@ DEVICE CPD_OFF
@ DEVICE PROTECT_OFF
@ DEVICE MCLR_OFF
@ DEVICE PWRT_OFF
@ DEVICE WDT_OFF
@ DEVICE INTRC_OSC_NOCLKOUT
</font><font color="#000080"><i>'-------------------------------------------------------------------------------
' Registers 76543210
</i></font>WPUA = %00110000 <font color="#000080"><i>'Weak Pull-up of PORTA for SCL and SDA on DS1307
</i></font>INTCON = %00000000 <font color="#000080"><i>'Interrupts
</i></font>OSCCAL = %01100000 <font color="#000080"><i>'Oscillator Calibration when Internal RC set to 4MHz
</i></font>OPTION_REG = %10000000 <font color="#000080"><i>'PORTA Pull-Ups/TMR0/Prescaler
</i></font>CMCON = %00000111 <font color="#000080"><i>'Comparator Module is OFF
</i></font>TRISA = %00000000 <font color="#000080"><i>'Set Input/Output
</i></font>PORTA = %00000000 <font color="#000080"><i>'Ports High/Low
</i></font>TRISC = %00000000 <font color="#000080"><i>'Set Input/Output
</i></font>PORTC = %00000000 <font color="#000080"><i>'Ports High/Low
'-------------------------------------------------------------------------------
'PORTA.0 = ICSP Data
'PORTA.1 = ICSP Clock
'PORTA.2
'PORTA.3 = MCLR
'PORTA.4 = SDA
'PORTA.5 = SCL
'PORTC.0 = LCD-DB4
'PORTC.1 = LCD-DB5
'PORTC.2 = LCD-DB6
'PORTC.3 = LCD-DB7
'PORTC.4 = LCD-E
'PORTC.5 = LCD-RS
'-------------------------------------------------------------------------------
' LCD cabling
'- ( 1) Vss - GND
'- ( 2) Vdd / Vcc +5V
'- ( 3) Vee / Vo / Contrast adjust / Pot 4k7(1-2-W3) or R2k2 (GND-3)
'PORTC.5 ( 4) RS
'- ( 5) R/W -> to Vss
'PORTC.4 ( 6) E
'PORTC.0 (11) DB4
'PORTC.1 (12) DB5
'PORTC.2 (13) DB6
'PORTC.3 (14) DB7
</i></font><b>DEFINE </b>LCD_DREG PORTC <font color="#000080"><i>'LCD data port
</i></font><b>DEFINE </b>LCD_DBIT 0 <font color="#000080"><i>'LCD data starting PORT.bit (0 or 4)
</i></font><b>DEFINE </b>LCD_RSREG PORTC <font color="#000080"><i>'LCD register select port
</i></font><b>DEFINE </b>LCD_RSBIT 5 <font color="#000080"><i>'LCD register select bit
</i></font><b>DEFINE </b>LCD_EREG PORTC <font color="#000080"><i>'LCD enable port
</i></font><b>DEFINE </b>LCD_EBIT 4 <font color="#000080"><i>'LCD enable bit
'-------------------------------------------------------------------------------
' Variables
</i></font>SDA <b>VAR </b>PORTA.4 <font color="#000080"><i>'DS1307 SDA pin #5
</i></font>SCL <b>VAR </b>PORTA.5 <font color="#000080"><i>'DS1307 SCL pin #6
'SDOut var PORTC.2
</i></font>DB <b>VAR BYTE</b>[8] <font color="#000080"><i>'Data byte array
</i></font>RTCSec <b>VAR </b>DB[0] <font color="#000080"><i>'alias individual bytes in array
</i></font>RTCMin <b>VAR </b>DB[1]
RTCHour <b>VAR </b>DB[2]
RTCDay <b>VAR </b>DB[3]
RTCDate <b>VAR </b>DB[4]
RTCMonth <b>VAR </b>DB[5]
RTCYear <b>VAR </b>DB[6]
RTCCtrl <b>VAR </b>DB[7]
AMPM <b>VAR BIT
</b>A_Ctr <b>VAR BYTE </b><font color="#000080"><i>'counter
</i></font>B_Ctr <b>VAR BYTE </b><font color="#000080"><i>'counter
</i></font>Day_T <b>VAR BYTE
</b>Day <b>VAR BYTE</b>[3]
Day[0] = 0
Day[1] = 0
Day[2] = 0
<font color="#000080"><i>'-------------------------------------------------------------------------------
</i></font><b>PAUSE </b>1000 <font color="#000080"><i>'time for LCD to settle
</i></font><b>LCDOUT </b>$FE, 1 <font color="#000080"><i>'Clear LCD
</i></font><b>GOSUB </b>WRITE_1307 <font color="#000080"><i>'set the time or don't
</i></font>MAIN:
<b>GOSUB </b>READ_1307 <font color="#000080"><i>'Read the time & date
</i></font><b>GOSUB </b>LCD
<b>PAUSE </b>1000
<b>GOTO </b>MAIN:
<font color="#000080"><i>'-------------------------------------------------------------------------------
</i></font>LCD:
<font color="#000080"><i>'Hour in "hh:mm:ss"
</i></font><b>LCDOUT </b>$FE, 2, <b>DEC </b>(RTCHour>>4 & $0F), <b>DEC</b>(RTCHour & $0F),<font color="#FF0000">":"</font>, _
<b>DEC</b>((RTCMin>>4)& $0F), <b>DEC</b>(RTCMin & $0F),<font color="#FF0000">":"</font>, _
<b>DEC</b>((RTCSec>>4)& $0F), <b>DEC</b>(RTCSec & $0F)
<font color="#000080"><i>'Day
</i></font>B_Ctr = 0
<b>FOR </b>A_Ctr = (((RTCDay & $07)-1)*3) <b>TO </b>(((RTCDay & $07)-1)*3)+2
<b>LOOKUP </b>A_Ctr,[<font color="#FF0000">"SunMonTueWedThuFriSat"</font>],Day_T
Day[B_Ctr] = Day_T
B_Ctr = B_Ctr + 1
<b>NEXT </b>A_Ctr
<b>LCDOUT </b>$FE, 2, $FE, $C0, Day[0], Day[1], Day[2]
<font color="#000080"><i>'Date in "mm-dd-yyyy"
</i></font><b>LCDOUT </b>$FE, $C4, <b>DEC</b>((RTCDate>>4)& $03), <b>DEC</b>(RTCDate & $0F),<font color="#FF0000">"-"</font>, _
<b>DEC</b>((RTCMonth>>4)& $01), <b>DEC</b>(RTCMonth & $0F),<font color="#FF0000">"-"</font>, _
<b>DEC</b>(((RTCYear>>4)& $0F)*100),<b>DEC</b>(RTCYear & $0F)
<b>RETURN
</b><font color="#000080"><i>'-------------------------------------------------------------------------------
</i></font>READ_1307:
<font color="#000080"><i>' Read order is in Secs,Mins,Hours,Day,Date,Month,Year,Control
</i></font><b>I2CREAD </b>SDA,SCL,$D0,$00,[<b>STR </b>DB\8] <font color="#000080"><i>' Read string of 8 bytes from DS1307
</i></font><b>RETURN
</b><font color="#000080"><i>'-------------------------------------------------------------------------------
</i></font>WRITE_1307:
<font color="#000080"><i>'Set time & date to 23:59:55, Day 2, Date:Month:Year 27:08:2009
</i></font><b>I2CWRITE </b>SDA,SCL,$D0,$00,[$55,$59,$23,$02,$27,$08,$29,$90] <font color="#000080"><i>' Write to DS1307
</i></font><b>RETURN </b><font color="#000080"><i>' Sec Min Hr Day D M Y Control
</i></font><b>END
</b></code></pre><!--EndFragment--></body>
</html>
Bookmarks