Automan
- 4th July 2010, 12:42
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:
' --------------
' | 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))
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
'XXXXXXXXXXXXXXXXXXXXXXXXXX Set The TRIS In/Out Pins XXXXXXXXXXXXXXXXXXXXXXXXXX'
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX 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 !!!!!!!!!!!!!!!!
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:
' --------------
' | 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))
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
'XXXXXXXXXXXXXXXXXXXXXXXXXX Set The TRIS In/Out Pins XXXXXXXXXXXXXXXXXXXXXXXXXX'
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXX 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 !!!!!!!!!!!!!!!!