DIY Speedo Healer (electronics knowledge required)
-
- Posts: 5
- Joined: Sat Dec 04, 2010 6:03 pm
Re: DIY Speedo Healer (electronics knowledge required)
Hi,
This thread is very interesting & the efforts of Phil have to be applauded
I'm after building a speedo corrector for 2 reasons, I need to convert the speedo from km/h to mph as the bike is an import with no option to change the display from km/h.
It would also be very handy to be able to adjust the speedo if different size sprockets were used as the bike is a trail bike.
I noticed that the device was tested on a Yamaha R6, my bike is a Yamaha so I assume it would work on it ok.
I would be very grateful for the Hex code for the PIC chip.
Cheers.
This thread is very interesting & the efforts of Phil have to be applauded
I'm after building a speedo corrector for 2 reasons, I need to convert the speedo from km/h to mph as the bike is an import with no option to change the display from km/h.
It would also be very handy to be able to adjust the speedo if different size sprockets were used as the bike is a trail bike.
I noticed that the device was tested on a Yamaha R6, my bike is a Yamaha so I assume it would work on it ok.
I would be very grateful for the Hex code for the PIC chip.
Cheers.
- benny hedges
- Posts: 6110
- Joined: Sun Oct 18, 2009 5:09 pm
- Location: Warrington
Re: DIY Speedo Healer (electronics knowledge required)
is it an analogue speedo????
if so you can get overlay stickers off ebay to convert kph to mph.
if it's a digital one there might be a method of changing the display like there is on the sp
where is phil btw, anyone seen him around..... got a little job for him
if so you can get overlay stickers off ebay to convert kph to mph.
if it's a digital one there might be a method of changing the display like there is on the sp
where is phil btw, anyone seen him around..... got a little job for him
You do not have to say anything. But it may harm your defence if you do not mention when posting something which you later rely on in quote. Anything you do say may be ripped to sh*t.
-
- Posts: 5
- Joined: Sat Dec 04, 2010 6:03 pm
Re: DIY Speedo Healer (electronics knowledge required)
Hi,
No, unfortunately it's a full digital speedo or I would have just used an overlay like you suggest
There is no way to change it to mph by button presses or anything like that, the km/h symbol is etched into the glass of the speedo.
Cheers.
No, unfortunately it's a full digital speedo or I would have just used an overlay like you suggest
There is no way to change it to mph by button presses or anything like that, the km/h symbol is etched into the glass of the speedo.
Cheers.
- Phil-VTwin
- Posts: 348
- Joined: Mon May 11, 2009 11:21 am
- Location: Olney, Bucks
Re: DIY Speedo Healer (electronics knowledge required)
I'm still here
Henry i ignored your PM as you had not posted on the forum but as you have now here is the .hex file code.....
Henry i ignored your PM as you had not posted on the forum but as you have now here is the .hex file code.....
Code: Select all
:020000040000FA
:0200000069286D
:080008000528F000030EF100D1
:10001000831203138B183928831203130C19192820
:100020008C18582883120313710E8300F00E700E83
:1000300009000C11831203133518202805162128F6
:100040000512B509321C28283108AF003008AE006F
:100050001608AB001508AA002B082F07AD002A08C8
:100060002E07AC000318AD0A2D0896002C08950049
:1000700008288B100F08A5000E08A4000F08250201
:10008000031946280F08A5000E08A400331C5028A9
:1000900023082502A70022082402A600031CA703A8
:1000A0002508A3002408A200B401910164000828D7
:1000B0008C1083120313B40A341D0828831603130B
:1000C0000C11831203130B12970110101211051655
:1000D0001228831603130F178F160F168312031798
:1000E000103085008316031301118110011083164F
:1000F00003139B01831203138501831603134030FE
:10010000850083120313860183160313FF308600D4
:10011000831603138113831203139016831603139C
:10012000A9309200831203139101B4017F30920031
:10013000831203130030970083120313B501CD011E
:10014000CC010516A420C828A001A101051F201478
:100150000608FE39A1000310A109A10C21087F3A6D
:1001600003198B2921087E3A0319A22921087D3A17
:100170000319B62921087C3A0319CA29201CC4286E
:100180002108643ECC00C7282108643CCC0008004C
:100190009101B401101075308F00A30030308E0033
:1001A000A2000C100618D228061CD4281014061819
:1001B000D728061CD9280C18C8280E08A4000F0838
:1001C000A50023082502A70022082402A600031C7C
:1001D000A7032708AF0096002608AE009500250863
:1001E000A3002408A200831203170514831203132B
:1001F0008B100C118C100B1683160313011783162A
:1002000003130C158C14831203130B178B170A306E
:100210009700A42033102708A9002608A80033144B
:10022000182132102908B1002808B0003214092919
:100230000730C000A130C1002030C2002908C3002F
:100240002808C40071214108C0004208C1004D08BF
:10025000C3004C08C40050214608C0004708C10034
:100260004808C2000030C3006430C4007121410856
:10027000C3004208C400C0010730C000A130C10063
:100280002030C20071214108A9004208A8000310D3
:10029000A90CA80C031C4F29A80A0319A90A0800D5
:1002A000C501C601C7018030C800C00CC10C031CC9
:1002B00062294408C70743080318430FC6070318F9
:1002C000C50A0310C11F6A294408C607430803185A
:1002D000430FC507C50CC60CC70CC80C031C552919
:1002E0000800C901CA011830CB00420DC10DC00D74
:1002F000CA0DC90DC20D4408CA024308031C430FAE
:10030000C9020318421442188829C9074408CA07B9
:10031000CB0B752908000530D10085179521851371
:100320009521D10B8D298513A4280830CE002F30BC
:10033000CF000330D000CE0B9E29CF0BA029D00BCD
:100340009B290800FF30D10085170516AD21051245
:10035000AD21D10BA5298513A428C230CE000230CF
:10036000CF00CE0BB429CF0BB1290800FF30D1004C
:1003700085170516C1210512C121D10BB929051216
:10038000A428C230CE000130CF00CE0BC829CF0B3D
:10039000C52908000A30D1000618CC298517061C8B
:0C03A000CF298513D10BCC298513A4288C
:02400E00502F31
:02401000FC3F73
:00000001FF
Ride Safe
Phil
Phil
-
- Posts: 5
- Joined: Sat Dec 04, 2010 6:03 pm
Re: DIY Speedo Healer (electronics knowledge required)
Hi,
Phil I appreciate that, Thank you.
Can I ask, is the hex code for the PIC 16F88 or the 16F87 as you mentioned that either could be used?.
A couple of guys on a different forum are looking at a speedo corrector for me but it's nice to have a couple of options, If I build your device I will certainly post back to let you how I get on with it.
Cheers.
Phil I appreciate that, Thank you.
Can I ask, is the hex code for the PIC 16F88 or the 16F87 as you mentioned that either could be used?.
A couple of guys on a different forum are looking at a speedo corrector for me but it's nice to have a couple of options, If I build your device I will certainly post back to let you how I get on with it.
Cheers.
- Phil-VTwin
- Posts: 348
- Joined: Mon May 11, 2009 11:21 am
- Location: Olney, Bucks
Re: DIY Speedo Healer (electronics knowledge required)
I wrote it for the F88 as i already had this controller but should work ok on the F87 as the only difference is the A/D convertors which are not used.
Anyway i am feeling generous and as its Christmas here is my source code
Have fun with it
Anyway i am feeling generous and as its Christmas here is my source code
Code: Select all
; TMR2 is used as a way to detect when the rear wheel speed comes to a stop.
; More precisely, when the VSS frequency drops below a certain frequency. TMR2 is
; configured to run at a frequency that will allow it to more quickly detect this
; (more quickly than the watch dog timer, that is). Normally, the Interrupt
; service routine (DoINT) will be clearing the watch dog timer, and the TMR2
; overflow counter. If the rear wheel stops (thus no Interrupts from the VSS)
; then the TMR2 interrupts will be allowed to occur. If more than three TMR2
; interrupts arrive (that's a VSS frequency of just less than about 8 Hz),
; then the TMR2 interrupt routine will disable other interrupts
; and stop the CCP1 module, which in turn halts the output signal to the speedo.
; Shortly there-after, the watchdog timer will expire, and the processor will
; reset, effectively re-initializing the whole routine.
;
; TMR1 is configured to run at 500KHz. The minimum frequency that can be
; supported by the CCP1 module is therefore about 8Hz. In the
; bootstrap portion of the main loop (used to detect initial wheel rotation),
; pre-loading the TMR1 registers with 7530h allows for the maximum amount of time
; (or minimum frequency) to be detected. In other words, the VSS frequency has to
; be at least 8Hz before control is allowed to proceed beyond the "Begin" loop,
; and into the main "Loop".
ERRORLEVEL -302 ;remove message about using proper bank
;***** Declarations and microcontroller configuration *****
PROCESSOR 16f88
#include "p16f88.inc"
__CONFIG _CONFIG1, _CP_OFF&_CCP1_RB3&_DEBUG_OFF&_WRT_PROTECT_OFF&_CPD_OFF&_LVP_OFF&_BODEN_ON&_MCLR_OFF&_PWRTE_ON&_WDT_OFF&_INTRC_IO
__CONFIG _CONFIG2, _IESO_OFF&_FCMEN_OFF
;**********************************************************************************************************
;***** Declaration of variables *****
FAST equ H'20' ; fast or slow correction
SWITCH equ H'21' ; DIP switch reading
CAP1L equ H'22' ; capture 1 timer value
CAP1H equ H'23'
CAP2L equ H'24' ; capture 2 timer value
CAP2H equ H'25'
CAPDIFFL equ H'26' ; capture difference
CAPDIFFH equ H'27'
TEMPDIFFL equ H'28' ; Temp cature difference
TEMPDIFFH equ H'29'
OLDCOMPL equ H'2A' ; old compare timer
OLDCOMPH equ H'2B'
NEXTCOMPL equ H'2C' ; next compare timer
NEXTCOMPH equ H'2D'
COMPL equ H'2E' ; compare timer
COMPH equ H'2F'
NEWCOMPL equ H'30' ; new compare timer
NEWCOMPH equ H'31'
NEWCOMPVALID equ H'32' ; new compare done flag
CAPDIFFUPDOK equ H'33' ; capture difference done flag
TMR2OF equ H'34' ; Timer2 overflow flag
PORTA4 equ H'35' ; Output port on/off flag
; Math variables
AA0 equ H'40' ; Division dividend
AA1 equ H'41'
AA2 equ H'42'
BB0 equ H'43' ; Division divisor
BB1 equ H'44'
CC0 equ H'45' ; 32 bit result from multiply
CC1 equ H'46'
CC2 equ H'47'
CC3 equ H'48'
REMB0 equ H'49' ; Division remainder
REMB1 equ H'4A'
LOOPCOUNT equ H'4B' ; Division loopcount
CFL equ H'4C' ; Correction factor
CFH equ H'4D'
DELAY1 equ H'4E' ; Delay/Loop registers
DELAY2 equ H'4F'
DELAY1_2 equ H'50'
d1 equ H'51'
;Save register area
W_TEMP equ H'70' ; Used to save registers when an interrupt occurs
STATUS_TEMP equ H'71'
;**********************************************************************************************************
;***** Program memory structure *****
ORG 0x00 ; Reset Vector
goto Init ; After reset jump to location
ORG 0x04 ; Interupt vector
goto IntSvc ;
;**********************************************************************************************************
IntSvc
; Save W & STATUS
movwf W_TEMP ;Copy W to W_TEMP register
swapf STATUS,W ;Swap status to be saved into W
;Swaps are used because they do not affect the status bits
movwf STATUS_TEMP ;Save status to bank zero STATUS_TEMP register
;**********************************************************************************************************
IntDispatch
banksel 0
btfsc INTCON,INTF ; Are we handling a INT on RB0? (input)
goto DoINT ; Yes
banksel PIR1
btfsc PIR1,CCP1IF ; Are we handling a CCP1 (compare) interrupt? (output)
goto DoCCP1 ; Yes
btfsc PIR1,TMR2IF ; Are we handling a Timer2 interrupt? (input stopped)
goto DoTMR2 ; Yes
;**********************************************************************************************************
IntSvcExit
; Restore W & STATUS
banksel 0
swapf STATUS_TEMP,W ; Swap STATUS_TEMP register into W
; (sets bank to original state)
movwf STATUS ; Move W into STATUS register
swapf W_TEMP,F ; Swap W_TEMP
swapf W_TEMP,W ; Swap W_TEMP into W
retfie
;**********************************************************************************************************
DoCCP1
bcf PIR1,CCP1IF ; Clear the CCP1IF interrupt flag
banksel 0
btfsc PORTA4,0 ; Check if output port is on
goto $+3 ; jump if yes
bsf PORTA,4 ; switch on (FF)
goto $+2
bcf PORTA,4 ; switch off (00)
comf PORTA4,F ; flip value
; Calculate a new Compare timer value
; CCPR1 = COMP + CCPR1
btfss NEWCOMPVALID,0
goto $+5
movfw NEWCOMPH
movwf COMPH
movfw NEWCOMPL
movwf COMPL
movfw CCPR1H
movwf OLDCOMPH
movfw CCPR1L
movwf OLDCOMPL
movfw OLDCOMPH
addwf COMPH,W
movwf NEXTCOMPH
movfw OLDCOMPL
addwf COMPL,W
movwf NEXTCOMPL
btfsc STATUS,C
incf NEXTCOMPH,F
movfw NEXTCOMPH
movwf CCPR1H
movfw NEXTCOMPL
movwf CCPR1L
goto IntDispatch
;**********************************************************************************************************
DoINT
bcf INTCON,INTF ; Clear the INT interrupt flag
movfw TMR1H
movwf CAP2H
movfw TMR1L
movwf CAP2L
movfw TMR1H
subwf CAP2H,W
btfsc STATUS,Z
goto $+5
movfw TMR1H
movwf CAP2H
movfw TMR1L
movwf CAP2L
btfss CAPDIFFUPDOK,0
goto MoveCAP2toCAP1
; Calculate new capture timer diff.
; CAPDIFF = CAP2 - CAP1
movfw CAP1H
subwf CAP2H,W
movwf CAPDIFFH
movfw CAP1L
subwf CAP2L,W
movwf CAPDIFFL
btfss STATUS,C
decf CAPDIFFH,F
MoveCAP2toCAP1
movfw CAP2H
movwf CAP1H
movfw CAP2L
movwf CAP1L
clrf TMR2OF ; Clear overflow flag and timer
clrf TMR2
clrwdt ; Clear WDT timer to indicate program still running
goto IntDispatch
;**********************************************************************************************************
DoTMR2
bcf PIR1,TMR2IF ; Clear the TMR2IF interrupt flag
banksel 0
incf TMR2OF,F
btfss TMR2OF,2 ; Have we overflowed 2 times yet?
goto IntDispatch ; No
banksel PIE1 ; Shutdown interrupts and let the WDT timeout restart everything
bcf PIE1,CCP1IE
banksel INTCON
bcf INTCON,INTE
clrf CCP1CON ; Turn the CCP1 module off
bcf T1CON,TMR1ON ; Turn Timer1 off
bcf T2CON,TMR2ON ; Turn Timer2 off
bsf PORTA,4 ; Turn on PORTA,4 to switch off Q2
goto IntSvcExit
;**********************************************************************************************************
Init
; Initialize the system clock oscillator frequency
banksel OSCCON
bsf OSCCON,IRCF2 ; IRCF2:IRFC1:IRFC0 = b'111'
bsf OSCCON,IRCF1 ; Configure the internal clock to run at 8MHz
bsf OSCCON,IRCF0
; Initialize the Watch Dog Timer (WDT) period select for approx 1/4 second timeout.
; But leave the WDT disabled, we'll enable it later.
; We configure the period select configuration bits to scale this down to give us an approx
; 1/4 sec timeout. 31,250 Hz / 8192 = 3.81 Hz = 262ms
banksel WDTCON
movlw B'00010000' ; period select = 1:8192, SWDTEN = 0 (off)
movwf WDTCON
banksel OPTION_REG
bcf OPTION_REG,PS2 ; PS2:PS0 = 000 means prescaler 1:1
bcf OPTION_REG,PS1
bcf OPTION_REG,PS0
; Initialize A/D converter
banksel ANSEL
clrf ANSEL ; Make all port pins digital
; Initialize PORTA
banksel PORTA
clrf PORTA
banksel TRISA
movlw B'01000000'
movwf TRISA ; Make PORTA all output except RA6
; Initialize PORTB
banksel PORTB
clrf PORTB
banksel TRISB
movlw B'11111111'
movwf TRISB ; Make PORTB all input
banksel OPTION_REG
bcf OPTION_REG,NOT_RBPU ;Enable PortB pull-ups
; Initialize Timer1
banksel T1CON
bsf T1CON,T1CKPS1 ; Prescaler 1:4 (500Khz)
; Initialize Timer2
banksel PR2
movlw .169 ;169
movwf PR2
banksel TMR2
clrf TMR2
clrf TMR2OF
movlw B'1111111' ; Turn Timer 2 on, Postscaler 1:16, Prescaler 1:16
movwf T2CON
; Initialize CCP1
banksel CCP1CON
movlw B'00000000' ; CCP1 off
movwf CCP1CON
; Initialize RAM variables
banksel 0
clrf PORTA4
clrf CFH
clrf CFL
bsf PORTA,4 ;Turn on PORTA,4 to switch off Q2
call RD_SW
goto Begin
;**********************************************************************************************************
RD_SW ; Read switch settings
TstRet
clrf FAST
clrf SWITCH
btfss PORTA,6 ; Read fast or slow setting
bsf FAST,0 ; if low set bit0 in FAST
movf PORTB,W ; Read PortB
andlw B'11111110' ; Strip bit 0 (RB0 not needed)
movwf SWITCH
bcf STATUS,C
comf SWITCH,f
rrf SWITCH,f ; Rotate remaining bits to the right
PWR
movf SWITCH,w
xorlw H'7F' ; LED test setting
btfsc STATUS,Z ; if equal
goto PWRTest
Freq
movf SWITCH,w
xorlw H'7E' ; 440Hz Output Test
btfsc STATUS,Z ; if equal
goto FREQTest
Freq1
movf SWITCH,w
xorlw H'7D' ; 1.02KHz Output Test
btfsc STATUS,Z ; if equal
goto FREQTest1K
Vss
movf SWITCH,w
xorlw H'7C' ; VSS Input Test
btfsc STATUS,Z ; if equal
goto VSSTest
; Check if fast or slow switch is set
btfss FAST,0 ; Is bit0 set (slower)?
goto $+5 ; yes
; Set correction factor to be faster
movf SWITCH,W
addlw .100 ; Add 100 to switch value
movwf CFL
goto $+4
; Set correction factor to be slower
movf SWITCH,W ; Subtract switch value from 100
sublw .100
movwf CFL
Return
;**********************************************************************************************************
; Check to see if we're moving faster than a crawl
Begin
clrf TMR2
clrf TMR2OF
bcf T1CON,TMR1ON ; Turn Timer1 off
movlw 0x75 ;Prefills timer registers
movwf TMR1H
movwf CAP1H
movlw 0x30
movwf TMR1L
movwf CAP1L
bcf PIR1,TMR1IF ; Clear the Timer1 interrupt flag
btfsc PORTB,0 ; Wait for RB0/INT to go low
goto $-1
btfss PORTB,0 ; Wait for RB0/INT to go high
goto $-1
bsf T1CON,TMR1ON ; Turn Timer1 on
btfsc PORTB,0 ; Wait for RB0/INT to go low
goto $-1
btfss PORTB,0 ; Wait for RB0/INT to go high
goto $-1
btfsc PIR1,TMR1IF ; Did Timer1 overflow?
goto Begin ; Yes, so start over
movfw TMR1L ; Capture Timer1 value
movwf CAP2L
movfw TMR1H
movwf CAP2H
; Calculate first compare timer value.
; CAPDIFF = CAP2 - CAP1
movfw CAP1H
subwf CAP2H,W
movwf CAPDIFFH
movfw CAP1L
subwf CAP2L,W
movwf CAPDIFFL
btfss STATUS,C
decf CAPDIFFH,F
movfw CAPDIFFH
movwf COMPH
movwf CCPR1H
movfw CAPDIFFL
movwf COMPL
movwf CCPR1L
movfw CAP2H
movwf CAP1H
movfw CAP2L
movwf CAP1L
banksel WDTCON
bsf WDTCON,SWDTEN ; Turn the watchdog timer on
; Set up interrupts
banksel INTCON
bcf INTCON,INTF
bcf PIR1,CCP1IF
bcf PIR1,TMR2IF
bsf INTCON,INTE
banksel OPTION_REG
bsf OPTION_REG,INTEDG
banksel PIE1
bsf PIE1,CCP1IE
bsf PIE1,TMR2IE
banksel 0
bsf INTCON,PEIE
bsf INTCON,GIE
movlw B'00001010' ; CCP1 = Compare mode on
movwf CCP1CON
;**********************************************************************************************************
; Main Loop
Loop
call RD_SW
bcf CAPDIFFUPDOK,0 ; Clear ok flag and copy registers
movfw CAPDIFFH
movwf TEMPDIFFH
movfw CAPDIFFL
movwf TEMPDIFFL
bsf CAPDIFFUPDOK,0 ; Set ok flag
call CalcNewCompare
bcf NEWCOMPVALID,0 ; Clear valid flag and copy new values
movfw TEMPDIFFH
movwf NEWCOMPH
movfw TEMPDIFFL
movwf NEWCOMPL
bsf NEWCOMPVALID,0 ; Set valid flag
goto Loop
;**********************************************************************************************************
CalcNewCompare
; Calculate the percentage correction
; The latest capture diff contains the number of Timer1 ticks that occured for one cycle of
; the input frequency.
; Divide 500,000 (Timer1 is running at 500Khz) by the latest of capture diff, giving the
; frequency in Hz.
movlw 0x07 ; 500,000 = 0x07A120
movwf AA0
movlw 0xa1
movwf AA1
movlw 0x20
movwf AA2
movfw TEMPDIFFH
movwf BB0
movfw TEMPDIFFL
movwf BB1
call DIV24x16 ; divide prescaler freq by counted ticks during 1 cycle
movfw AA1
movwf AA0
movfw AA2
movwf AA1
movfw CFH
movwf BB0
movfw CFL
movwf BB1
call MUL16x16 ; Multiply result by correction factor
movfw CC1
movwf AA0
movfw CC2
movwf AA1
movfw CC3
movwf AA2
movlw high .100
movwf BB0
movlw low .100
movwf BB1
call DIV24x16 ; Divide the result by 100
movfw AA1
movwf BB0
movfw AA2
movwf BB1
clrf AA0
movlw 0x07 ; 500,000 = 0x07A120
movwf AA0
movlw 0xa1
movwf AA1
movlw 0x20
movwf AA2
call DIV24x16 ; Answer gives the total time for 1 cycle
movfw AA1
movwf TEMPDIFFH
movfw AA2
movwf TEMPDIFFL
DIV2
; Divide by 2 to give the period for each on and off time for 1 cycle (50% duty)
clrc
rrf TEMPDIFFH, f
rrf TEMPDIFFL, f
skpc
goto no_inc
incf TEMPDIFFL, f
skpnz
incf TEMPDIFFH, f
no_inc
return
;**********************************************************************************************************
; Unsigned 16*16 bit Multiply AA(16) * BB(16), Result (CC) is 32bit
; adapted from code found on www.piclist.com
;
; params
; AA 0:1 (MSB:LSB) = number to multiply (16bit)
; BB 0:1 (MSB:LSB) = multiplier (16bit)
; CC 0:3 (MSB:LSB) = Product (32bit)
MUL16x16
clrf CC0
clrf CC1
clrf CC2
movlw 0x80
movwf CC3
nextbit
rrf AA0,F
rrf AA1,F
btfss STATUS,C
goto nobit_l
movfw BB1
addwf CC2,F
movfw BB0
btfsc STATUS,C
incfsz BB0,W
addwf CC1,F
btfsc STATUS,C
incf CC0,F
bcf STATUS,C
nobit_l
btfss AA1,7
goto nobit_h
movfw BB1
addwf CC1,F
movfw BB0
btfsc STATUS,C
incfsz BB0,W
addwf CC0,F
nobit_h
rrf CC0,F
rrf CC1,F
rrf CC2,F
rrf CC3,F
btfss STATUS,C
goto nextbit
return
;**********************************************************************************************************
;Divide a 24 bit number by a 16 bit number, resulting in a 16 bit number
;Inputs:
; Dividend - AA0:AA1:AA2 (0 - most significant!)
; Divisor - BB0:BB1
;Temporary:
; Counter - LOOPCOUNT
; Remainder- REMB0:REMB1
;Output:
; Quotient - AA0:AA1:AA2
;
DIV24x16
clrf REMB0
clrf REMB1
movlw .24
movwf LOOPCOUNT
LOOPU2416
rlf AA2,W ;shift dividend left to move next bit to remainder
rlf AA1,F
rlf AA0,F
rlf REMB1,F ;shift carry (next dividend bit) into remainder
rlf REMB0,F
rlf AA2,F ;finish shifting the dividend and save carry in AA2.0,
;since remainder can be 17 bit long in some cases
;(e.g. 0x800000/0xFFFF). This bit will also serve
;as the next result bit.
movf BB1,W ;substract divisor from 16-bit remainder
subwf REMB1,F
movf BB0,W
btfss STATUS,C
incfsz BB0,W
subwf REMB0,F
;here we also need to take into account the 17th bit of remainder, which
;is in AA2.0. If we don't have a borrow after subtracting from lower
;16 bits of remainder, then there is no borrow regardless of 17th bit
;value. But, if we have the borrow, then that will depend on 17th bit
;value. If it is 1, then no final borrow will occur. If it is 0, borrow
;will occur. These values match the borrow flag polarity.
skpnc ;if no borrow after 16 bit subtraction
bsf AA2,0 ;then there is no borrow in result. Overwrite
;AA2.0 with 1 to indicate no borrow.
;if borrow did occur, AA2.0 already
;holds the final borrow value (0-borrow,
;1-no borrow)
btfsc AA2,0 ;if no borrow after 17-bit subtraction
goto UOK46LL ;skip remainder restoration.
addwf REMB0,F ;restore higher byte of remainder.
;(w contains the value subtracted from it previously)
movf BB1,W ;restore lower byte of remainder
addwf REMB1,F
UOK46LL
decfsz LOOPCOUNT,F ;decrement counter
goto LOOPU2416 ;and repeat the loop if not zero.
return
;**********************************************************************************************************
; As short collection of test routines to confirm installation is ok.
PWRTest ; Flashes LED to show its working
movlw 0x5
movwf d1
LEDFlash
bsf PORTA,7 ; turn on LED
call Delay_0
bcf PORTA,7 ; turn off
call Delay_0
decfsz d1,1
goto LEDFlash ; Do it again...
bcf PORTA,7
goto TstRet
Delay_0
movlw 0x08
movwf DELAY1
movlw 0x2F
movwf DELAY2
movlw 0x03
movwf DELAY1_2
Delay_01
decfsz DELAY1, f
goto $+2
decfsz DELAY2, f
goto $+2
decfsz DELAY1_2, f
goto Delay_01
return
;**********************************************************************************************************
FREQTest ; Outputs ~ 400Hz test signal to speedo
movlw 0xFF
movwf d1
bsf PORTA,7 ; Turn on LED to show in test mode
FREQ400
bsf PORTA,4 ; turn on
call Delay_02a
bcf PORTA,4
call Delay_02a
decfsz d1,1
goto FREQ400 ; Do it again...
bcf PORTA,7
goto TstRet
Delay_02a
movlw 0xC2
movwf DELAY1
movlw 0x02
movwf DELAY2
Delay_021a
decfsz DELAY1, f
goto $+2
decfsz DELAY2, f
goto Delay_021a
return
;**********************************************************************************************************
FREQTest1K ; Outputs ~ 1KHz test signal to speedo
movlw 0xFF
movwf d1
bsf PORTA,7 ; Turn on LED to show in test mode
FREQ1K
bsf PORTA,4
call Delay_02
bcf PORTA,4
call Delay_02
decfsz d1,1
goto FREQ1K ; Do it again...
bcf PORTA,4
goto TstRet
Delay_02
movlw 0xc2
movwf DELAY1
movlw 0x01
movwf DELAY2
Delay_021
decfsz DELAY1, f
goto $+2
decfsz DELAY2, f
goto Delay_021
return
;**********************************************************************************************************
; Test mode to detect VSS is working when the wheel is rotated by hand
; LED will flash on each detected pulse from the VSS.
VSSTest
movlw 0x0A ; Needs 10 pulses before return to main prog
movwf d1
Test
btfsc PORTB,0 ; Wait for RB0/INT to go low
goto $-1
bsf PORTA,7 ; Turn LED off
btfss PORTB,0 ; Wait for RB0/INT to go high
goto $-1
bcf PORTA,7 ; Turn LED on
decfsz d1,1
goto Test
bcf PORTA,7
goto TstRet
;**********************************************************************************************************
End
;**********************************************************************************************************
Ride Safe
Phil
Phil
-
- Posts: 5
- Joined: Sat Dec 04, 2010 6:03 pm
Re: DIY Speedo Healer (electronics knowledge required)
Hi Phil,
Thank you for the info & the source code however I haven't the foggiest idea of how to use it ....I may know someone who does tho.
Either way I thank you for sharing your work & helping me out, if I build a speedo corrector I'm sure it will make the bike more enjoyable to ride as no matter how much you try to ignore it when you glance down at the speedo and its reading 48 when you are in a 30 mph zone you cant help thinking you are going too fast.
With all this snow & freezing temperatures the thought of bike riding just seems a distant dream at the moment, the bike let alone any speedo project won't be going anywhere until the spring at least.
Cheers.
Thank you for the info & the source code however I haven't the foggiest idea of how to use it ....I may know someone who does tho.
Either way I thank you for sharing your work & helping me out, if I build a speedo corrector I'm sure it will make the bike more enjoyable to ride as no matter how much you try to ignore it when you glance down at the speedo and its reading 48 when you are in a 30 mph zone you cant help thinking you are going too fast.
With all this snow & freezing temperatures the thought of bike riding just seems a distant dream at the moment, the bike let alone any speedo project won't be going anywhere until the spring at least.
Cheers.
Re: DIY Speedo Healer (electronics knowledge required)
Hello,
I'm interested in building this DIY but I would like to make it with an Arduino because I already have one and I'm more comfortable with it. Before starting building it I would like to clear some things.
First is the signal shape : I guess it's a square signal where the period is a multiple of the speed but I would like to know how many time the signal is high in comparison to how many time it is low.
Second is I would like to isolate the input part and the output part. I think the OUPTUT part is : R2, R5, Q2 and C1 and for the INPUT : R1, R3, R7, R8, C2, C3, Q1 and DSW1 but I am probably wrong.
Finally I wan't to remove DSW1 and will manage everything in the software, so are you using pins 7 to 13 to analyse the input signal or only 6? Should I connect the emitter of Q1 to the ground if I remove DSW1?
I will mount it on a 07' VFR and I will also try to use the Arduino for other things, for example use the thermometer as a gear position indicator.
Thank you in advance.
I'm interested in building this DIY but I would like to make it with an Arduino because I already have one and I'm more comfortable with it. Before starting building it I would like to clear some things.
First is the signal shape : I guess it's a square signal where the period is a multiple of the speed but I would like to know how many time the signal is high in comparison to how many time it is low.
Second is I would like to isolate the input part and the output part. I think the OUPTUT part is : R2, R5, Q2 and C1 and for the INPUT : R1, R3, R7, R8, C2, C3, Q1 and DSW1 but I am probably wrong.
Finally I wan't to remove DSW1 and will manage everything in the software, so are you using pins 7 to 13 to analyse the input signal or only 6? Should I connect the emitter of Q1 to the ground if I remove DSW1?
I will mount it on a 07' VFR and I will also try to use the Arduino for other things, for example use the thermometer as a gear position indicator.
Thank you in advance.
-
- Posts: 10
- Joined: Mon Dec 10, 2012 10:51 pm
Re: DIY Speedo Healer (electronics knowledge required)
After more than 2 months with many retries, I've made a jdm programmer to program this pic 16f88 and test the code, but it seems does not worked ... I will take pictures of my converter and post here.
-
- Posts: 10
- Joined: Mon Dec 10, 2012 10:51 pm
Re: DIY Speedo Healer (electronics knowledge required)
Ok, here we go ...
I ordered that willem 5.0c, but after weeks of tries decided it does not work properly, then I've made my own 16f88 pic burner as on picture:
HOW CAN I ADD THE PHOTOS OF STUFF?
I ordered that willem 5.0c, but after weeks of tries decided it does not work properly, then I've made my own 16f88 pic burner as on picture:
HOW CAN I ADD THE PHOTOS OF STUFF?
-
- Posts: 10
- Joined: Mon Dec 10, 2012 10:51 pm
Re: DIY Speedo Healer (electronics knowledge required)
I GOT ALL THE PICTURES, LAYOUTS ... BUT THIS FORUM DOES NOT HAS RESOURCES TO SAVE JPG?
-
- Posts: 10
- Joined: Mon Dec 10, 2012 10:51 pm
Re: DIY Speedo Healer (electronics knowledge required)
Code: Select all
:100000006928FF3FFF3FFF3F0528F000030EF10086
:10001000831203138B183928831203130C19192820
:100020008C18582883120313710E8300F00E700E83
:1000300009000C11831203133518202805162128F6
:100040000512B509321C28283108AF003008AE006F
:100050001608AB001508AA002B082F07AD002A08C8
:100060002E07AC000318AD0A2D0896002C08950049
:1000700008288B100F08A5000E08A4000F08250201
:10008000031946280F08A5000E08A400331C5028A9
:1000900023082502A70022082402A600031CA703A8
:1000A0002508A3002408A200B401910164000828D7
:1000B0008C1083120313B40A341D0828831603130B
:1000C0000C11831203130B12970110101211051655
:1000D0001228831603130F178F160F168312031798
:1000E000103085008316031301118110011083164F
:1000F00003139B01831203138501831603134030FE
:10010000850083120313860183160313FF308600D4
:10011000831603138113831203139016831603139C
:10012000A9309200831203139101B4017F30920031
:10013000831203130030970083120313B501CD011E
:10014000CC010516A420C828A001A101051F201478
:100150000608FE39A1000310A109A10C21087F3A6D
:1001600003198B2921087E3A0319A22921087D3A17
:100170000319B62921087C3A0319CA29201CC4286E
:100180002108643ECC00C7282108643CCC0008004C
:100190009101B401101075308F00A30030308E0033
:1001A000A2000C100618D228061CD4281014061819
:1001B000D728061CD9280C18C8280E08A4000F0838
:1001C000A50023082502A70022082402A600031C7C
:1001D000A7032708AF0096002608AE009500250863
:1001E000A3002408A200831203170514831203132B
:1001F0008B100C118C100B1683160313011783162A
:1002000003130C158C14831203130B178B170A306E
:100210009700A42033102708A9002608A80033144B
:10022000182132102908B1002808B0003214092919
:100230000730C000A130C1002030C2002908C3002F
:100240002808C40071214108C0004208C1004D08BF
:10025000C3004C08C40050214608C0004708C10034
:100260004808C2000030C3006430C4007121410856
:10027000C3004208C400C0010730C000A130C10063
:100280002030C20071214108A9004208A8000310D3
:10029000A90CA80C031C4F29A80A0319A90A0800D5
:1002A000C501C601C7018030C800C00CC10C031CC9
:1002B00062294408C70743080318430FC6070318F9
:1002C000C50A0310C11F6A294408C607430803185A
:1002D000430FC507C50CC60CC70CC80C031C552919
:1002E0000800C901CA011830CB00420DC10DC00D74
:1002F000CA0DC90DC20D4408CA024308031C430FAE
:10030000C9020318421442188829C9074408CA07B9
:10031000CB0B752908000530D10085179521851371
:100320009521D10B8D298513A4280830CE002F30BC
:10033000CF000330D000CE0B9E29CF0BA029D00BCD
:100340009B290800FF30D10085170516AD21051245
:10035000AD21D10BA5298513A428C230CE000230CF
:10036000CF00CE0BB429CF0BB1290800FF30D1004C
:1003700085170516C1210512C121D10BB929051216
:10038000A428C230CE000130CF00CE0BC829CF0B3D
:10039000C52908000A30D1000618CC298517061C8B
:1003A000CF298513D10BCC298513A428FF3FFF3F0C
:1003B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4D
:1003C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3D
:1003D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2D
:1003E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1D
:1003F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0D
:10040000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFC
:10041000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEC
:10042000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDC
:10043000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCC
:10044000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBC
:10045000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAC
:10046000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9C
:10047000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8C
:10048000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7C
:10049000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6C
:1004A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5C
:1004B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4C
:1004C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3C
:1004D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2C
:1004E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1C
:1004F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0C
:10050000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFB
:10051000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEB
:10052000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDB
:10053000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCB
:10054000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBB
:10055000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAB
:10056000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9B
:10057000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8B
:10058000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7B
:10059000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6B
:1005A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5B
:1005B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4B
:1005C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3B
:1005D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2B
:1005E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1B
:1005F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0B
:10060000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFA
:10061000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEA
:10062000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDA
:10063000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCA
:10064000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBA
:10065000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAA
:10066000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9A
:10067000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8A
:10068000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7A
:10069000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6A
:1006A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5A
:1006B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4A
:1006C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3A
:1006D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2A
:1006E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1A
:1006F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0A
:10070000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF9
:10071000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE9
:10072000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD9
:10073000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC9
:10074000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB9
:10075000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA9
:10076000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F99
:10077000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F89
:10078000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F79
:10079000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F69
:1007A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F59
:1007B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F49
:1007C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F39
:1007D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F29
:1007E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F19
:1007F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F09
:10080000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF8
:10081000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE8
:10082000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD8
:10083000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC8
:10084000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB8
:10085000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA8
:10086000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F98
:10087000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F88
:10088000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F78
:10089000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F68
:1008A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F58
:1008B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F48
:1008C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F38
:1008D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F28
:1008E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F18
:1008F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F08
:10090000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF7
:10091000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE7
:10092000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD7
:10093000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC7
:10094000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB7
:10095000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA7
:10096000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F97
:10097000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F87
:10098000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F77
:10099000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F67
:1009A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F57
:1009B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F47
:1009C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F37
:1009D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F27
:1009E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F17
:1009F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F07
:100A0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF6
:100A1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE6
:100A2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD6
:100A3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC6
:100A4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB6
:100A5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA6
:100A6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F96
:100A7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F86
:100A8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F76
:100A9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F66
:100AA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F56
:100AB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F46
:100AC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F36
:100AD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F26
:100AE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F16
:100AF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F06
:100B0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF5
:100B1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE5
:100B2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD5
:100B3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC5
:100B4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB5
:100B5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA5
:100B6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F95
:100B7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F85
:100B8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F75
:100B9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F65
:100BA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F55
:100BB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F45
:100BC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F35
:100BD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F25
:100BE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F15
:100BF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F05
:100C0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF4
:100C1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE4
:100C2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD4
:100C3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC4
:100C4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB4
:100C5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA4
:100C6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F94
:100C7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F84
:100C8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F74
:100C9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F64
:100CA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F54
:100CB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F44
:100CC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F34
:100CD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F24
:100CE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F14
:100CF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F04
:100D0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF3
:100D1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE3
:100D2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD3
:100D3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC3
:100D4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB3
:100D5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA3
:100D6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F93
:100D7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F83
:100D8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F73
:100D9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F63
:100DA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F53
:100DB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F43
:100DC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F33
:100DD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F23
:100DE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F13
:100DF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F03
:100E0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF2
:100E1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE2
:100E2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD2
:100E3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC2
:100E4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB2
:100E5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA2
:100E6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F92
:100E7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F82
:100E8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F72
:100E9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F62
:100EA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F52
:100EB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F42
:100EC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F32
:100ED000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F22
:100EE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F12
:100EF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F02
:100F0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF1
:100F1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE1
:100F2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD1
:100F3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC1
:100F4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB1
:100F5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA1
:100F6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F91
:100F7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F81
:100F8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F71
:100F9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F61
:100FA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F51
:100FB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F41
:100FC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F31
:100FD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F21
:100FE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F11
:100FF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F01
:10100000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF0
:10101000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE0
:10102000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD0
:10103000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC0
:10104000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB0
:10105000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA0
:10106000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F90
:10107000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F80
:10108000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F70
:10109000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F60
:1010A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F50
:1010B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F40
:1010C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F30
:1010D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F20
:1010E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F10
:1010F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F00
:10110000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEF
:10111000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDF
:10112000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCF
:10113000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBF
:10114000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAF
:10115000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9F
:10116000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8F
:10117000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7F
:10118000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6F
:10119000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5F
:1011A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4F
:1011B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3F
:1011C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2F
:1011D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1F
:1011E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0F
:1011F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF
:10120000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEE
:10121000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDE
:10122000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCE
:10123000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBE
:10124000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAE
:10125000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9E
:10126000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8E
:10127000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7E
:10128000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6E
:10129000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5E
:1012A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4E
:1012B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3E
:1012C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2E
:1012D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1E
:1012E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0E
:1012F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFE
:10130000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FED
:10131000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDD
:10132000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCD
:10133000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBD
:10134000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAD
:10135000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9D
:10136000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8D
:10137000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7D
:10138000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6D
:10139000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5D
:1013A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4D
:1013B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3D
:1013C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2D
:1013D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1D
:1013E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0D
:1013F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFD
:10140000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEC
:10141000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDC
:10142000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCC
:10143000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBC
:10144000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAC
:10145000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9C
:10146000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8C
:10147000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7C
:10148000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6C
:10149000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5C
:1014A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4C
:1014B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3C
:1014C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2C
:1014D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1C
:1014E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0C
:1014F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFC
:10150000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEB
:10151000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDB
:10152000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCB
:10153000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBB
:10154000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAB
:10155000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9B
:10156000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8B
:10157000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7B
:10158000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6B
:10159000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5B
:1015A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4B
:1015B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3B
:1015C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2B
:1015D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1B
:1015E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0B
:1015F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFB
:10160000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEA
:10161000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDA
:10162000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCA
:10163000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBA
:10164000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAA
:10165000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9A
:10166000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8A
:10167000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7A
:10168000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6A
:10169000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5A
:1016A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4A
:1016B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3A
:1016C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2A
:1016D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1A
:1016E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0A
:1016F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFA
:10170000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE9
:10171000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD9
:10172000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC9
:10173000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB9
:10174000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA9
:10175000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F99
:10176000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F89
:10177000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F79
:10178000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F69
:10179000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F59
:1017A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F49
:1017B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F39
:1017C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F29
:1017D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F19
:1017E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F09
:1017F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF9
:10180000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE8
:10181000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD8
:10182000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC8
:10183000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB8
:10184000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA8
:10185000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F98
:10186000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F88
:10187000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F78
:10188000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F68
:10189000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F58
:1018A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F48
:1018B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F38
:1018C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F28
:1018D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F18
:1018E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F08
:1018F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF8
:10190000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE7
:10191000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD7
:10192000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC7
:10193000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB7
:10194000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA7
:10195000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F97
:10196000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F87
:10197000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F77
:10198000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F67
:10199000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F57
:1019A000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F47
:1019B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F37
:1019C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F27
:1019D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F17
:1019E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F07
:1019F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF7
:101A0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE6
:101A1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD6
:101A2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC6
:101A3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB6
:101A4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA6
:101A5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F96
:101A6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F86
:101A7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F76
:101A8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F66
:101A9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F56
:101AA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F46
:101AB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F36
:101AC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F26
:101AD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F16
:101AE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F06
:101AF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF6
:101B0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE5
:101B1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD5
:101B2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC5
:101B3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB5
:101B4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA5
:101B5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F95
:101B6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F85
:101B7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F75
:101B8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F65
:101B9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F55
:101BA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F45
:101BB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F35
:101BC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F25
:101BD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F15
:101BE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F05
:101BF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF5
:101C0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE4
:101C1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD4
:101C2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC4
:101C3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB4
:101C4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA4
:101C5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F94
:101C6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F84
:101C7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F74
:101C8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F64
:101C9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F54
:101CA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F44
:101CB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F34
:101CC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F24
:101CD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F14
:101CE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F04
:101CF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF4
:101D0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE3
:101D1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD3
:101D2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC3
:101D3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB3
:101D4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA3
:101D5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F93
:101D6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F83
:101D7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F73
:101D8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F63
:101D9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F53
:101DA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F43
:101DB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F33
:101DC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F23
:101DD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F13
:101DE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F03
:101DF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF3
:101E0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE2
:101E1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD2
:101E2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC2
:101E3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB2
:101E4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA2
:101E5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F92
:101E6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F82
:101E7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F72
:101E8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F62
:101E9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F52
:101EA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F42
:101EB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F32
:101EC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F22
:101ED000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F12
:101EE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F02
:101EF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF2
:101F0000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE1
:101F1000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD1
:101F2000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC1
:101F3000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB1
:101F4000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA1
:101F5000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F91
:101F6000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F81
:101F7000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F71
:101F8000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F61
:101F9000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F51
:101FA000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F41
:101FB000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F31
:101FC000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F21
:101FD000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F11
:101FE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F01
:101FF000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FF1
:084000000F000F000F000F007C
:02400E00502F31
:10420000FF00FF00FF00FF00FF00FF00FF00FF00B6
:10421000FF00FF00FF00FF00FF00FF00FF00FF00A6
:10422000FF00FF00FF00FF00FF00FF00FF00FF0096
:10423000FF00FF00FF00FF00FF00FF00FF00FF0086
:10424000FF00FF00FF00FF00FF00FF00FF00FF0076
:10425000FF00FF00FF00FF00FF00FF00FF00FF0066
:10426000FF00FF00FF00FF00FF00FF00FF00FF0056
:10427000FF00FF00FF00FF00FF00FF00FF00FF0046
:10428000FF00FF00FF00FF00FF00FF00FF00FF0036
:10429000FF00FF00FF00FF00FF00FF00FF00FF0026
:1042A000FF00FF00FF00FF00FF00FF00FF00FF0016
:1042B000FF00FF00FF00FF00FF00FF00FF00FF0006
:1042C000FF00FF00FF00FF00FF00FF00FF00FF00F6
:1042D000FF00FF00FF00FF00FF00FF00FF00FF00E6
:1042E000FF00FF00FF00FF00FF00FF00FF00FF00D6
:1042F000FF00FF00FF00FF00FF00FF00FF00FF00C6
:10430000FF00FF00FF00FF00FF00FF00FF00FF00B5
:10431000FF00FF00FF00FF00FF00FF00FF00FF00A5
:10432000FF00FF00FF00FF00FF00FF00FF00FF0095
:10433000FF00FF00FF00FF00FF00FF00FF00FF0085
:10434000FF00FF00FF00FF00FF00FF00FF00FF0075
:10435000FF00FF00FF00FF00FF00FF00FF00FF0065
:10436000FF00FF00FF00FF00FF00FF00FF00FF0055
:10437000FF00FF00FF00FF00FF00FF00FF00FF0045
:10438000FF00FF00FF00FF00FF00FF00FF00FF0035
:10439000FF00FF00FF00FF00FF00FF00FF00FF0025
:1043A000FF00FF00FF00FF00FF00FF00FF00FF0015
:1043B000FF00FF00FF00FF00FF00FF00FF00FF0005
:1043C000FF00FF00FF00FF00FF00FF00FF00FF00F5
:1043D000FF00FF00FF00FF00FF00FF00FF00FF00E5
:1043E000FF00FF00FF00FF00FF00FF00FF00FF00D5
:1043F000FF00FF00FF00FF00FF00FF00FF00FF00C5
:00000001FF
-
- Posts: 10
- Joined: Mon Dec 10, 2012 10:51 pm
Re: DIY Speedo Healer (electronics knowledge required)
I can load the hex into pic, erase it and program all successful, but when I try to read what is writen inside the chip is shows me the code posted up ... and the microcontroller does not work when I put on my pcb, I would like to add photos, but this forum does not allow it.
Re: DIY Speedo Healer (electronics knowledge required)
It may be that your whole purpose in life is simply to serve as a warning to others.
VTR Firestorm and other bikes t-shirts
VTR Firestorm and other bikes t-shirts
-
- Posts: 10
- Joined: Mon Dec 10, 2012 10:51 pm