Guys,

I came across a post where the internal timer is used to display the time rather than a DS1307 (as I'm having issues reading a DS1307 for some reason as per my other post). Here is the thread in question http://www.picbasic.co.uk/forum/showthread.php?t=2129

I've followed the notes on converting the code to run on a 20 mhz xtal, but there is one command that comes up with a syntax error
Code:
OPTION_REG=%10000111   'weak pullups off, TMRO prescale = 256
If this is commented out the code compiles for an 18F4520

Here is the code in full

Code:
ASM 
  __CONFIG    _CONFIG1H, _OSC_HSPLL_1H
  __CONFIG    _CONFIG2L, _PWRT_ON_2L  
  __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
  __CONFIG    _CONFIG3H, _MCLRE_ON_3H & _LPT1OSC_OFF_3H & _PBADEN_OFF_3H  
  __CONFIG    _CONFIG4L, _LVP_OFF_4L & _XINST_OFF_4L
ENDASM

DEFINE  OSC 48  ; config settings 18F4520, 20mhz crystal
ADCON1 = $0F
clear


DEFINE LCD_DREG  PORTB           ' LCD Data port
DEFINE LCD_DBIT  0               ' starting Data bit (0 or 4)
DEFINE LCD_EREG  PORTB           ' LCD Enable port
DEFINE LCD_EBIT  5               '     Enable bit  (on EasyPIC 5 LCD)
DEFINE LCD_RSREG PORTB           ' LCD Register Select port
DEFINE LCD_RSBIT 4               '     Register Select bit   (on EasyPIC 5 LCD)
DEFINE LCD_BITS  4               ' LCD bus size (4 or 8 bits)
DEFINE LCD_LINES 4               ' number of lines on LCD
DEFINE LCD_COMMANDUS 2000        ' Command delay time in us 
DEFINE LCD_DATAUS 50             ' Data delay time in us 


CMCON=7                'all digital 
'GPIO=0
'TRISIO=0
T0CON = %00000001
OPTION_REG=%10000111   'weak pullups off, TMRO prescale = 256
INTCON=0               'interrupts off
'**********************************************************
HzTimer VAR Word         '1/2 second counter (2 Hz)    
HH VAR Byte  ' Hours 0-23
MM VAR ByTE  ' Minutes 0-59
SS VAR Byte  ' Seconds 0-59
col VAR Byte  ' colon 1=on, 0=0ff

HzTimer=$7A12        'for 1/2 Sec
HH=12:MM=0:SS=0:col=0 'initial conditions (12:00 O'clock noon)
'**********************************************************
Main:

ClockLoop: IF intcon.2=0 THEN ClockLoop	'Poll for TMRO overflow
INTCON.2=0 ' Clear TMRO overflow flag

HzTimer=HzTimer-$1000	'decrement timer count

IF HzTimer < $1000  THEN
    IF Col=10 THEN    ' update time'
        SS=SS+1
        'GPIO.1=0    ' Turn off GP1
        IF SS=60 THEN   ' minute
            SS=0 
            MM=MM+1
            IF MM=60 THEN    ' hour            
                MM=0
                HH=HH+1
                IF HH=24 THEN HH=0
                'IF HH=20 then GPIO.0 = 1    ' Turn on GP0 at 8:00pm
               ' GPIO.1=1    ' Turn On  GP1 for 1 second on the hour
            ENDIF                           ' Adjust these to meet your needs
            'if MM=15 then GPIO.0 = 0        ' Turn off GP0 at 8:15pm  
        ENDIF
    ENDIF
    Col=Col+1

    HzTimer=HzTimer+$7A12	' Add 0.5 seconds to count
ELSE
    ' Do something here but must be less than 65.5 mSec
ENDIF
      if Col=11 then 
    Col=1
    endif
    
    LCDOut $FE,$D4,HH,MM,SS
GOTO  Main 'forever
' **************************************************************
END
Can anyone advise how to set up the timer and prescaler settings as per the original code for the 12F chip ?

Cheers

Malcolm