HI,

i'm trying to generate two oposite 16HZ square wave with a 18f452 but i'm lost

here is the code i am trying to use:

Code:
 '                                --------------
'                                |   18F452   |
'               MCLR/Vpp ------> |1         40| <-----> RB7/PGD 
'                RA0/AN0 <-----> |2         39| <-----> RB6/PGC 
'                RA1/AN1 <-----> |3         38| <-----> RB5/PGM 
'          RA2/AN2/Vref- <-----> |4         37| <-----> RB4 
'          RA3/AN3/Vref+ <-----> |5         36| <-----> RB3/CCP2* 
'              RA4/TOCK1 <-----> |6         35| <-----> RB2/INT2 
'       RA5/AN5/SS/LVDIN <-----> |7         34| <-----> RB1/INT1 
'             RE0/RD/AN5 <-----> |8         33| <-----> RB0/INT0
'             RE1/WR/AN6 <-----> |9         32| <-----  Vdd 
'             RE2/CS/AN7 <-----> |10        31| <-----  Vss 
'                    Vdd  -----> |11        30| <-----> RD7/PSP7 
'                    VSS  -----> |12        29| <-----> RD6/PSP6 
'              OSC1/CLK1  -----> |13        28| <-----> RD5/PSP5 
'          OSC2/CLKO/RA6 <------ |14        27| <-----> RD4/PSP4 
'        RC0/T1OSO/TICK1 <-----> |15        26| <-----> RC7/RX/DT 
'        RC1/T1OSI/CCP2* <-----> |16        25| <-----> RC6/TX/CK 
'               RC2/CPP1 <-----> |17        24| <-----> RC5/SDO 
'            RC3/SCK/SCL <-----> |18        23| <-----> RC4/SD1/SDA 
'               RD0/PSP0 <-----> |19        22| <-----> RD3/PSP3  
'               RD1/PSP1 <-----> |20        21| <-----> RD2/PSP2       
'                                --------------


'------------------------------------------------------------------------------'
'-- Clear All The Variables And Each Port Before Setting The TRIS Registers ---'
'------------------------------------------------------------------------------'
 
Clear    'Set all ram registers to zero
PORTA = 0
PORTB = 0                           
PORTC = 0   
PORTD = 0
PORTE = 0
 
'--------------------------- VSS VDD MCLR Ect. Pins ---------------------------'
 
'MCLR        (Pin 1)
'VDD         (Pin 11)
'VSS         (Pin 12)
'OSC/CLKIN   (Pin 13)
'OSC2/CLKOUT (Pin 14)
'VSS         (Pin 31)
'Vdd         (Pin 32)
 
'((OPTION_REG=127 ' ENABLE WEAK PULL UP RESISTORS ON PORTB))
 
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
'XXXXXXXXXXXXXXXXXXXXXXXXXX Set The TRIS In/Out Pins XXXXXXXXXXXXXXXXXXXXXXXXXX'
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX BELOW XXX'    

'-------------------- PORTA PINS --------------------'
TRISA.0 = 1  '(pin 2) IN_LTC1966  
TRISA.1 = 1  '(pin 3) NOT USED  
TRISA.2 = 1  '(pin 4) NOT USED  
TRISA.3 = 1  '(pin 5) NOT USED  
TRISA.4 = 1  '(pin 6) NOT USED  
TRISA.5 = 1  '(pin 7) NOT USED 
  
'-------------------- PORTB PINS --------------------'
TRISB.0 = 0  '(pin 33) LED_10MN  
TRISB.1 = 1  '(pin 34) BP_10MN
TRISB.2 = 0  '(pin 35) LED_5MN
TRISB.3 = 1  '(pin 36) BP_5MN
TRISB.4 = 0  '(pin 37) LED_3MN
TRISB.5 = 1  '(pin 38) BP_3MN
TRISB.6 = 1  '(pin 39) BP_STOP
TRISB.7 = 1  '(pin 40) BP_TEST
 
'-------------------- PORTC PINS --------------------'
TRISC.0 = 0  '(pin 15) LED8
TRISC.1 = 0  '(pin 16) LED9
TRISC.2 = 0  '(pin 17) LED10
TRISC.3 = 0  '(pin 18) LED11
TRISC.4 = 0  '(pin 23) LED12
TRISC.5 = 0  '(pin 24) LED13
TRISC.6 = 0  '(pin 25) LED14
TRISC.7 = 0  '(pin 26) LED15
 
'-------------------- PORTD PINS --------------------'
TRISD.0 = 0  '(pin 19) LED0
TRISD.1 = 0  '(pin 20) LED1
TRISD.2 = 0  '(pin 21) LED2
TRISD.3 = 0  '(pin 22) LED3
TRISD.4 = 0  '(pin 27) LED4
TRISD.5 = 0  '(pin 28) LED5
TRISD.6 = 0  '(pin 29) LED6
TRISD.7 = 0  '(pin 30) LED7

'-------------------- PORTE PINS --------------------'
TRISE.0 = 0  '(pin 8)  SORTIE1
TRISE.1 = 0  '(pin 9)  SORTIE2
TRISE.2 = 1  '(pin 10) NOT USED 


;==========================================================================
;@ __CONFIG _CONFIG1H, _OSCS_ON_1H & _XT_OSC_1H ' use this one for 8 mhz and 
                                                ' also declare the osc as 4mhz
@ __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HSPLL_OSC_1H ; use this one for 32 mhz
@ __CONFIG _CONFIG2L, _BOR_OFF_2L & _BORV_20_2L & _PWRT_ON_2L
@ __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
@ __CONFIG _CONFIG3H, _CCP2MX_OFF_3H
@ __CONFIG _CONFIG4L, _STVR_OFF_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
@ __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
@ __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
@ __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
@ __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
@ __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
@ __CONFIG _CONFIG7H, _EBTRB_OFF_7H 


 DEFINE OSC 32     ' using HSPLL X 4 gives us OSC 32
@ errorlevel -306 ; turn off the Crossing page boundary warnings 

 ADCON1 = 7  ' Set to Digital
 INTCON2.7 = 0 ' enable pull-up resistor
 INTCON2.2 = 1  ' TMR0 Overflow Interrupt Priority bit = 1 = High priority

'-------------------------------------------------------------------------------
'--- configuration du timer 0 via T0CON ---
'-------------------------------------------------------------------------------

'bit 7 TMR0ON: Timer0 On/Off Control bit
'   1 = Enables Timer0
'   0 = Stops Timer0
'bit 6 T08BIT: Timer0 8-bit/16-bit Control bit
'   1 = Timer0 is configured as an 8-bit timer/counter
'   0 = Timer0 is configured as a 16-bit timer/counter
'bit 5 T0CS: Timer0 Clock Source Select bit
'   1 = Transition on T0CKI pin
'   0 = Internal instruction cycle clock (CLKO)
'bit 4 T0SE: Timer0 Source Edge Select bit
'   1 = Increment on high-to-low transition on T0CKI pin
'   0 = Increment on low-to-high transition on T0CKI pin
'bit 3 PSA: Timer0 Prescaler Assignment bit
'   1 = TImer0 prescaler is NOT assigned. Timer0 clock input bypasses prescaler.
'   0 = Timer0 prescaler is assigned. Timer0 clock input comes from prescaler output.
'bit 2-0 T0PS2:T0PS0: Timer0 Prescaler Select bits
'   111 = 1:256 prescale value
'   110 = 1:128 prescale value
'   101 = 1:64 prescale value
'   100 = 1:32 prescale value
'   011 = 1:16 prescale value
'   010 = 1:8 prescale value
'   001 = 1:4 prescale value
'   000 = 1:2 prescale value

    T0CON = %00000010

'-------------------------------------------------------------------------------
'--- Déclaration des E/S ---
'-------------------------------------------------------------------------------

    IN_TLC1966  var porta.0
    
    BP_TEST     var portb.7
    BP_STOP     var portb.6
    BP_3MN      var portb.5
    LED3MN      var portb.4
    BP_5MN      var portb.3
    LED5MN      var portb.2
    BP_10MN     var portb.1
    LED10MN     var portb.0
    
    LED_LOW     var portd
    
    LED_HIGH    var portc
    
    SORTIE1     var porte.0
    SORTIE2     var porte.1

'-------------------------------------------------------------------------------
'--- Déclaration des Variables ---
'-------------------------------------------------------------------------------

    TEMPO       var word
    X           var byte
    AFFICHE_TEMPO   var byte
    START_TEMPO var bit
    
    TMR0RunOn   var word

    ' quartz => 8MHz + HSPLL ==> 32MHz
    ' Fosc/4 = 8MHz
    ' sortie1 = not sortie2 = 16HZ => t= 1/16 = 62.5ms => t/2 = 31250µs
    ' prescaler = 8 ==> TMR0 accuracy = 1µs
    ' preset TMR0(16bits) = $FFFF - (31250µs) = $FFFF - $7A12 = $85ED 

    TMR0Preset var word
    
    tmr0preset = $85ED

'-------------------------------------------------------------------------------
'--- Valeurs par défaut ---
'-------------------------------------------------------------------------------

    led_low = 255       ' LED0 to LED7 off
    led_high = 255      ' LED8 to LED15 off
    led3mn = 1          ' LED3MN off
    led5mn = 1          ' LED5MN off
    led10mn = 1         ' LED10MN off
    
    'pour test
    sortie1 = 0
    sortie2 = 1
'    sortie1 = 0
'    sortie2 = 0

    start_tempo = 0
    
'-------------------------------------------------------------------------------
'--- Test à la mise sous tension ---
'-------------------------------------------------------------------------------
    
    if bp_stop = 0 and bp_test = 0 then
        led_low = 254
        pause 200
        for x = 1 to 8
            led_low = led_low << 1
            pause 200
        next x    
        led_low = 255
        led_high = 254
        pause 200
        for x = 1 to 8
            led_high = led_high << 1
            pause 200
        next x
        led_high = 255
        low led3mn
        pause 200    
        high led3mn
        low led5mn
        pause 200    
        high led5mn
        low led10mn
        pause 200    
        high led10mn
    endif
    
'-------------------------------------------------------------------------------
'--- Début du programme ---
'-------------------------------------------------------------------------------

' Initialise TMR0 Interrupts
' --------------------------
    
    gosub tictac    'for test
    
    Gosub Set_Timer ' Set the Timer for next 31.25mS Interrupt
    
    gosub tictac    'for test
    gosub tictac    'for test
    
    On Interrupt goto Tick_Count
    
    gosub tictac    'for test
    gosub tictac    'for test
    gosub tictac    'for test
    
    INTCON.5=1      ' Enable TMR0 Interrupts
    INTCON.6=1      ' Enable all unmasked Interrupts
    INTCON.7=1      ' Enable Global Interrupts

DEBUT:

    gosub tictac    'for test

    if bp_3mn = 0 then
        tempo = 180
        low led3mn
        high led5mn
        high led10mn
        goto affichage_tempo
    endif

    if bp_5mn = 0 then
        tempo = 300
        high led3mn
        low led5mn
        high led10mn
        goto affichage_tempo
    endif

    if bp_10mn = 0 then
        tempo = 600
        high led3mn
        high led5mn
        low led10mn
        goto affichage_tempo
    endif

    if bp_test = 1 then goto debut

LECTURE_LTC1966:
    
    ' lire entrée analogique
    ' afficher valeur LTC1966
    '...
    '...
    '...
    '...
'    if bp_stop = 1 then goto lecture_ltc1966
    
    goto debut

AFFICHAGE_TEMPO:

    affiche_tempo = tempo / 16
    start_tempo = 1
    '...
    '...
    '...
    '...
    goto debut

TICTAC:
    led_high = 0
    pause 200
    led_high = 255
    pause 200
    return
    
'-------------------------------------------------------------------------------
'--- Gestion des interruptions ---
'-------------------------------------------------------------------------------

'
' Subroutine Loads TMR0 values (based on Melanie's olympic timer)
' ============================
SET_TIMER:
    
    T0CON.7=0                   ' Stop the Clock
    tmr0runon.Highbyte=TMR0H    ' Load the Run-On (Over-Run) value (if any)
    tmr0runon.Lowbyte=TMR0L
    tmr0runon=tmr0preset+tmr0runon ' Calculate the New (adjusted) value for TMR0

    TMR0H=tmr0runon.Highbyte    ' Save new values to TMR0
    TMR0H=tmr0runon.Lowbyte
    T0CON.7=1                   ' Restart the Clock

    INTCON.2 = 0                'Reset TMR0's Interupt Flag
    
    Return

'
' Timer Interrupt Handler
' =======================
TICK_COUNT:
    
    Gosub Set_Timer             ' Set the Timer for next 31.25mS Interrupt
    
    toggle sortie1
    toggle sortie2

    Resume
    
    End
note: TICTAC is only a test witch work only when i delete the line ON INTERRUPT.
i think i mist something on TMR0 configuration but i did not find it.
can someone help me?

MERCI

Bisous de France

sorry for my english !!!!!!!!!!!!!!!!