TODOPIC
Microcontroladores PIC => Programadores => Mensaje iniciado por: yagu en 05 de Abril de 2011, 15:35:19
-
hola amigos
Tengo un problema con winpic800, al tratar de abrir un archivo .hex me notifica lo siguiente: linea 76 checksum invalido
con otros archivos .hex no tengo problemas, me podeis ayudar? :shock:
-
El problema lo tienes con el HEX, no con Winpic800.
De alguna manera hay un error en esa línea 76.
-
nocturno: Gracias por la respuesta. suponia que el problema era el HEX, pero al ser bajado de una revista de prestigio lo descartaba, no se nada de programacion, crees que viendo esa linea se podria adivinar el fallo? he mirado por la red y hay un foro que hablan precisamente del circuito que utiliza este HEX y no comentan nada del herror. :(
-
Pues sí, cuélgalo a ver si vemos algo raro.
-
aqui te mando el programa ,no se si podras ver la numeracion de las lineas pero no se me ocurre como hacer para que lo veas
yo lo abro con microcodestudio pero creo que no esta escrito para microcode.La linea 76 seria esta:
rt = 0: y1 = y1 - 1: y = y - 28: yx = yx - 28: down = down - 2: EXIT FOR
'HEART204 18APR02: READ/DISPLAY SERIAL DATA FROM EPE BIOPIC (c) JOHN BECKER
'Version V1
'*** WILL RUN UNDER QuickBASIC AND QBASIC ***
'*** QuickBASIC MUST BE LOADED WITH QB/L COMMAND FOR IT TO WORK **
'*** THE NORMAL QB COMMAND ON ITS OWN COULD RESULT IN A CRASH! ***
'*** NOTE THAT SOME QuickBASICS MAY HAVE QB/L ALREADY IN THEIR .BAT FILE ***
'*** QBASIC DOES NOT NEED THE QB/L COMMAND ***
'*** A STAND-ALONE VERSION OF THIS PROGRAM ALSO EXISTS, WITH .EXE ENDING ***
'$INCLUDE: 'QB.BI':' THIS FILE MUST BE IN YOUR QB LIBRARY
SCREEN 9: COLOR 15, 1: CLS : LOCATE 10, 35: PRINT "SETTING UP"
DATA " ",JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC
DIM month$(12), inary%(7), outary%(7)
CONST ax = 0: bx = 1: cx = 2: dx = 3: bp = 4: si = 5: di = 6: flags = 7
version$ = "V1 ": shift = 0
FOR a = 0 TO 12: READ month$(a): NEXT
sp$ = " "
sp$ = sp$ + " "
comport% = 1: ' For COM1 set comport%= 0. For COM2 set comport%=1
GOSUB setcomport: GOTO 100
setcomport:
baudset: 'See Table 4.081 page 4-55 PC Sourcebook
baud% = 7: ' 9600 baud
baud% = baud% * 32: ' set baud val into bits 7 to 5
baud% = baud% OR 3: ' set for 8-bit data, no parity, 1 stop bit
inary%(ax) = baud%: inary%(dx) = comport%
CALL INT86OLD(&H14, inary%(), outary%()): 'set PC baud & comport factors
'(see also QBasic/QuickBASIC Help screen on CALL INTERRUPT)
COLOR 14: LOCATE 23, 3: PRINT "<C> "; : COLOR 11: PRINT "INPUT VIA "; :
COLOR 14: PRINT "COM"; : PRINT comport% + 1;
COLOR 11: LOCATE 23, 58: PRINT "LINES (1 or 10)"; : COLOR 14: PRINT " <L>"
RETURN
100 : LOCATE 10, 35: PRINT " "
COLOR 10: LOCATE 2, 3: PRINT "EPE BIOPIC "; version$;
COLOR 11: PRINT "END OF LINE DATE AND TIME "
LOCATE 2, 66: PRINT "BPM RATE 0": d = VAL(LEFT$(DATE$, 2))
d$ = MID$(DATE$, 4, 2) + month$(d) + RIGHT$(DATE$, 4)
COLOR 14: LOCATE 2, 46: PRINT d$; " "; TIME$: LOCATE 2, 74: PRINT bpm$
LOCATE 2, 29: PRINT "0": hold = 12
LOCATE 24, 58: COLOR 11: PRINT "HOLD "; : COLOR 14
PRINT "<H> "; : COLOR 11: PRINT "QUIT "; : COLOR 14: PRINT "<Q>";
'***************
NORMAL:
LOCATE 23, 30: PRINT " "
FOR down = 4 TO 22: LOCATE down, 2: PRINT sp$: NEXT
LOCATE 1, 1: col = 14: col2 = 11: y = 3 * 14: ' col2=2
FOR a = 1 TO 10: LINE (8, y - 14)-(630, y - 14), col2: ' 11
LINE (8, y + 14)-(630, y + 14), col2: y = y + 28: NEXT:
LINE (2, 2)-(637, 347), 15, B
COLOR 11: LOCATE 24, 3: COLOR 14: PRINT "<+-> ";
COLOR 11: PRINT "DISPLAY STEP "; : COLOR 14: PRINT "1 /"; hold;
LINE (5, 5)-(634, 344), 15, B: PAINT (3, 3), 7, 15
y = 42: yx = 3 * 14: down = 3
320 : GOSUB cominput: s = (jin - 128) \ 12: t = 0
FOR y1 = 1 TO 10: PSET (8, y + s), col: count = 0: tim1 = TIMER
FOR x = 8 TO 630 STEP (1 / hold): z$ = INKEY$: IF z$ = "" THEN GOTO 130
GOSUB 330: IF UCASE$(z$) = "Q" THEN EXIT FOR
IF rt = 1 THEN
rt = 0: y1 = y1 - 1: y = y - 28: yx = yx - 28: down = down - 2: EXIT FOR
END IF
130 : GOSUB cominput: s = (jin - 128) \ 12
LINE -(x, y + s), col: IF s > 5 THEN t1 = 1
IF s < -5 THEN t1 = -1
IF t1 <> t THEN count = count + 1
t = t1: NEXT: tim2 = TIMER: t3 = tim2 - tim1
IF t3 < 1 THEN t3 = 1: count = 0
bpm = (count / 2) * (60 / t3): bpm$ = LEFT$(STR$(CINT(bpm)) + " ", 5)
LOCATE 2, 28: COLOR 14: PRINT y1: d = VAL(LEFT$(DATE$, 2))
d$ = MID$(DATE$, 4, 2) + month$(d) + RIGHT$(DATE$, 4)
LOCATE 2, 46: PRINT d$; " "; TIME$: LOCATE 2, 74: PRINT bpm$
IF UCASE$(z$) = "Q" THEN EXIT FOR
IF holdit = 0 THEN GOTO 140
COLOR 15: LOCATE 24, 30: PRINT "HOLDING - PRESS ANY KEY "; : LOCATE 1, 1
135 : IF INKEY$ = "" THEN GOTO 135 ELSE holdit = 0
LOCATE 24, 30: PRINT " "; : LOCATE 1, 1
140 : y = y + 28: yx = yx + 28: down = down + 2
IF down > 22 THEN down = 3: y = 42: yx = 3 * 14
LOCATE down, 2: PRINT sp$: LOCATE down + 1, 2: PRINT sp$
LINE (8, yx - 14)-(630, yx - 14), col2
LINE (8, yx + 14)-(630, yx + 14), col2
PSET (8, y + s), col: NEXT: IF UCASE$(z$) = "Q" THEN GOTO quit
GOTO 320
330 : rt = 0: IF z$ = "+" THEN hold = hold + 1: GOTO 355
IF z$ = "-" THEN hold = hold - 1: GOTO 355
IF UCASE$(z$) = "C" THEN
comport% = (comport% + 1) AND 1: GOSUB setcomport:
LOCATE 1, 1: col = 14: col2 = 11: y = 3 * 14
FOR a = 1 TO 10: LINE (8, y - 14)-(630, y - 14), col2
LINE (8, y + 14)-(630, y + 14), col2: y = y + 28: NEXT
y = 42: yx = 3 * 14: down = 3: count = 0: GOTO 355
END IF
IF UCASE$(z$) = "L" THEN
COLOR 11: LOCATE 23, 30: PRINT "SHIFT ";
COLOR 14: PRINT "<UP/DN ARROWS> "; : COLOR 11: PRINT shift
FOR down = 3 TO 22: LOCATE down, 2: PRINT sp$: NEXT
LINE (8, 28)-(630, 28), col2
LINE (8, 308)-(630, 308), col2
y1 = 0: LOCATE 2, 28: COLOR 14: PRINT y1: bpm = 0
bpm$ = LEFT$(STR$(CINT(bpm)) + " ", 5)
LOCATE 2, 74: PRINT bpm$: GOTO LARGE
END IF
IF UCASE$(z$) <> "H" THEN RETURN
holdit = 1: COLOR 10: LOCATE 24, 30: PRINT "WILL HOLD AT END OF LINE";
LOCATE 1, 1: RETURN
355 : rt = 1: IF hold > 50 THEN hold = 50
IF hold < 1 THEN hold = 1
rate$ = LEFT$(STR$(hold) + " ", 3)
LOCATE 24, 24: COLOR 14: PRINT rate$; : LOCATE 1, 1: COLOR 15: RETURN
'************************
hold: z$ = INKEY$: IF z$ = "" THEN GOTO hold ELSE RETURN
'************************
quit: SYSTEM
'************************
cominput: inary%(ax) = 512: inary%(dx) = comport%
CALL INT86OLD(&H14, inary%(), outary%())
jin = 255 - (outary%(0) AND 255): RETURN
'******************
LARGE: y = 170: y1 = 0
420 : GOSUB cominput: s = (jin - 128) \ 12: t = 0: prev = y + s
PSET (8, y + s), col: count = 0: tim1 = TIMER
LINE (8, 30)-(8, 306), 0
FOR x = 8 TO 630 STEP (1 / hold): z$ = INKEY$: IF z$ = "" THEN GOTO 530
GOSUB 430: IF UCASE$(z$) = "Q" THEN EXIT FOR
IF rt = 1 THEN EXIT FOR
530 : GOSUB cominput: s = (jin - 128) - shift
IF (y + s) > 306 THEN s = 306 - y
IF (y + s) < 30 THEN s = s + (30 - (y + s))
LINE (x + 1, 30)-(x + 1, 306), 0: LINE (x + 2, 30)-(x + 2, 306), 7
PSET (x, y - 20), 10: PSET (x, y + 20), 10
LINE (x, prev)-(x, y + s), col: prev = y + s
IF s > 20 THEN t1 = 1
IF s < -20 THEN t1 = -1
IF t1 <> t THEN count = count + 1
t = t1: NEXT
tim2 = TIMER: t3 = tim2 - tim1
IF t3 < 1 THEN t3 = 1: count = 0
IF count < 2 THEN count = 0
bpm = (count / 2) * (60 / t3): bpm$ = LEFT$(STR$(CINT(bpm)) + " ", 5)
LINE (x + 2, 30)-(x + 2, 306), 0
d = VAL(LEFT$(DATE$, 2))
d$ = MID$(DATE$, 4, 2) + month$(d) + RIGHT$(DATE$, 4)
COLOR 14: LOCATE 2, 46: PRINT d$; " "; TIME$: LOCATE 2, 74: PRINT bpm$
IF holdit = 0 THEN GOTO 540
COLOR 15: LOCATE 24, 30: PRINT "HOLDING - PRESS ANY KEY "; : LOCATE 1, 1
535 : IF INKEY$ = "" THEN GOTO 535 ELSE holdit = 0
LOCATE 24, 30: PRINT " "; : LOCATE 1, 1
540 : IF UCASE$(z$) = "Q" THEN GOTO quit
GOTO LARGE
430 : rt = 0: IF z$ = "+" THEN hold = hold + 1: GOTO 555
IF z$ = "-" THEN hold = hold - 1: GOTO 555
IF UCASE$(z$) = "C" THEN
comport% = (comport% + 1) AND 1: GOSUB setcomport
LINE (8, y + 138)-(630, y + 138), col2: y = y + 28
count = 0: GOTO 555
END IF
IF UCASE$(z$) = "L" THEN
FOR down = 3 TO 22: LOCATE down, 2: PRINT sp$: NEXT
y1 = 0: LOCATE 2, 28: COLOR 14: PRINT y1: bpm = 0
bpm$ = LEFT$(STR$(CINT(bpm)) + " ", 5)
LOCATE 2, 74: PRINT bpm$: z$ = "": GOTO NORMAL
END IF
IF MID$(UCASE$(z$), 2) = "H" THEN
shift = shift + 1: IF shift > 140 THEN shift = 140
LOCATE 23, 51: COLOR 11: PRINT shift
LINE (8, yx + 266)-(630, yx + 266), col2
END IF
IF MID$(UCASE$(z$), 2) = "P" THEN
shift = shift - 1: IF shift < -138 THEN shift = -138
LOCATE 23, 51: COLOR 11: PRINT shift
LINE (8, yx + 266)-(630, yx + 266), col2
END IF
IF UCASE$(z$) <> "H" THEN RETURN
holdit = 1: COLOR 10: LOCATE 24, 30: PRINT "WILL HOLD AT END OF LINE";
LOCATE 1, 1: RETURN
555 : rt = 1: IF hold > 50 THEN hold = 50
FOR down = 3 TO 22: LOCATE down, 2: PRINT sp$: NEXT
LOCATE 1, 1: y = 3 * 14
LINE (8, y - 14)-(630, y - 14), col2
IF hold < 1 THEN hold = 1
rate$ = LEFT$(STR$(hold) + " ", 3)
LOCATE 24, 24: COLOR 14: PRINT rate$; : LOCATE 1, 1: COLOR 15: RETURN
-
¡Pero eso no es un hex, es el código fuente!
Además, me parece que es código en Basic para PC, compilable con QuickBASIC.
¿No te has confundido de fichero?
-
:oops:OK,OK suponia que ese codigo
te valdria,ya te digo que se poquisimo de pic´s pero intento aprender algo, aunque solo sea cargar los programas ya elaborados. Soy de los antiguos aficionados a la electronica:
estoy estancado en la era anterior a los pic´s
saludos
:080000000528000000000000CB
:0800080005288B138B1B052852
:100010004E2882073334333432342C3406340C34D3
:1000200001340234820720342034423449344F34BE
:100030005034493443348207503455344C345334AB
:10004000453420345234413454344534203420343F
:100050002034203420342034820745345034453451
:100060002034423449344F345034493443342034FA
:10007000503455344C34533445348207503443346F
:100080002034533445345234493441344C342034D0
:100090004F3455345434503455345434831203138C
:1000A00085018601870183160F3085008601273080
:1000B000870004309F0005308100831241309F008B
:1000C000E021A101A30121080920F221A10AA11D1B
:1000D0006328E02135221F150130AA00AB01B001D1
:1000E000AE01C3010830C400313084001030A000DC
:1000F000FF308000840AA00B792800220B1D7E2887
:100100000B11871A182A1F198328AB0A1F151E0EF8
:100110001F15A200220C0739A200AF000439AC0061
:100120002D060319A128EF2123162A302C1D20307B
:10013000F22107122C1907162C1DA1282B08AE003E
:10014000AB012C08AD00AA0B7E280430AA00CB20FE
:100150009C21ED21231629080F39031DB1282030D9
:10016000B2283038F221280E0F393038F221280811
:100170000F393038F221C40B7E280830C40028081B
:10018000031DA80306302807831C7E282808F039A1
:100190000938A8007E28C801C901CA01CB01CC01D9
:1001A000CD01CE01CF012F08483E840000142F0856
:1001B00030060319F0283008483EA2002F0830020C
:1001C000031CE928840A040822060319F0280014F5
:1001D000E2288403040822060319F0280014E92801
:1001E0002F08B000C80CDC0CDB0CDA0CD90CD80CD6
:1001F000C90CE10CE00CDF0CDE0CDD0CCA0CE60CCB
:10020000E50CE40CE30CE20CCB0CEB0CEA0CE90C77
:10021000E80CE70CCC0CF00CEF0CEE0CED0CEC0C3D
:10022000CD0CF50CF40CF30CF20CF10CCE0CFA0C1A
:10023000F90CF80CF70CF60CCF0CFF0CFE0CFD0CB7
:10024000FC0CFB0C4030F12123165C30840008309C
:10025000A100000CA400A40C240C1F39F2210530CD
:100260008407A10B29295C3084000830A100000814
:10027000A40084030008A200A20DA40DA20D240D69
:100280001F39F22106308407A10B37295B30840027
:100290000830A100000C1F39F22105308407A10BA2
:1002A0004A295B3084000830A100000E1039A400F8
:1002B0008403000E0F392404F22106308407A10BB9
:1002C0005529593084000830A100000D840A000D22
:1002D0001F39F22104308407A10B652959308400AD
:1002E0000830A100000CA400240C1F39F2210530B5
:1002F0008407A10B7229593084000830A10000083E
:10030000A40084030008A200A20DA40DA20DA40D58
:10031000A20D240D1F39F22106308407A10B7F297D
:10032000583084000830A10000081F39F221053040
:100330008407A10B94290800A4012E08F0390319A1
:1003400008003130430784002E0880001030A000E0
:1003500031308400C101C2010008C2070318C10A7C
:10036000840AA00BAC29C10CC20CC10CC20CC10C7C
:10037000C20CC10CC20C4208AE00C30A43122E08C4
:10038000F039031908000B30A700B830A600A80107
:10039000A901A40AA80A06302807831CD629A800A8
:1003A00060302807031CD629A800A90A2E08A60237
:1003B0000318C929A70BC929AE014030C4000800A1
:1003C0003230A5008B010B1DE3290B11A50BE3298E
:1003D00008008030F129C030F129CB30F129CF302D
:1003E000F1292312A2003230A000A00BF529F82138
:1003F000A20E22080F3923048600861686120800F2
:10040000831615309900043098000C128312803046
:100410009800831698168312000000000030132203
:1004200008001E0C7F390C1E132A000099000800DA
:10043000E9212316A10121082C20F221A10A211E65
:100440001B2AEB212316A10121083D20F221A10A3C
:10045000211E242A07120022871E332A1F192E2A42
:1004600011221F152C2A35227E28831698128312FA
:100470000030980007134030F12123160030F2219C
:10048000A10A211E3E2AE9212316A1012108F221F9
:10049000A10AA11D462AA10121081220F221A10AC8
:1004A000A11D4C2AEB212316A10121081B20F221BA
:0804B000A10A211E552A080087
:02400E00313F40
:00000001FF
-
Pues efectivamente había un error en el checksum. Aquí te lo mando corregido, aunque no sé si el HEX te funcionará o no, porque desconozco si el byte de checksum es el que yo he modificado, o simplemente no venía escrito en el fichero original.
Suerte
:080000000528000000000000CB
:0800080005288B138B1B052852
:100010004E2882073334333432342C3406340C34D3
:1000200001340234820720342034423449344F34BE
:100030005034493443348207503455344C345334AB
:10004000453420345234413454344534203420343F
:100050002034203420342034820745345034453451
:100060002034423449344F345034493443342034FA
:10007000503455344C34533445348207503443346F
:100080002034533445345234493441344C342034D0
:100090004F3455345434503455345434831203138C
:1000A00085018601870183160F3085008601273080
:1000B000870004309F0005308100831241309F008B
:1000C000E021A101A30121080920F221A10AA11D1B
:1000D0006328E02135221F150130AA00AB01B001D1
:1000E000AE01C3010830C400313084001030A000DC
:1000F000FF308000840AA00B792800220B1D7E2887
:100100000B11871A182A1F198328AB0A1F151E0EF8
:100110001F15A200220C0739A200AF000439AC0061
:100120002D060319A128EF2123162A302C1D20307B
:10013000F22107122C1907162C1DA1282B08AE003E
:10014000AB012C08AD00AA0B7E280430AA00CB20FE
:100150009C21ED21231629080F39031DB1282030D9
:10016000B2283038F221280E0F393038F221280811
:100170000F393038F221C40B7E280830C40028081B
:10018000031DA80306302807831C7E282808F039A1
:100190000938A8007E28C801C901CA01CB01CC01D9
:1001A000CD01CE01CF012F08483E840000142F0856
:1001B00030060319F0283008483EA2002F0830020C
:1001C000031CE928840A040822060319F0280014F5
:1001D000E2288403040822060319F0280014E92801
:1001E0002F08B000C80CDC0CDB0CDA0CD90CD80CD6
:1001F000C90CE10CE00CDF0CDE0CDD0CCA0CE60CCB
:10020000E50CE40CE30CE20CCB0CEB0CEA0CE90C77
:10021000E80CE70CCC0CF00CEF0CEE0CED0CEC0C3D
:10022000CD0CF50CF40CF30CF20CF10CCE0CFA0C1A
:10023000F90CF80CF70CF60CCF0CFF0CFE0CFD0CB7
:10024000FC0CFB0C4030F12123165C30840008309C
:10025000A100000CA400A40C240C1F39F2210530CD
:100260008407A10B29295C3084000830A100000814
:10027000A40084030008A200A20DA40DA20D240D69
:100280001F39F22106308407A10B37295B30840027
:100290000830A100000C1F39F22105308407A10BA2
:1002A0004A295B3084000830A100000E1039A400F8
:1002B0008403000E0F392404F22106308407A10BB9
:1002C0005529593084000830A100000D840A000D22
:1002D0001F39F22104308407A10B652959308400AD
:1002E0000830A100000CA400240C1F39F2210530B5
:1002F0008407A10B7229593084000830A10000083E
:10030000A40084030008A200A20DA40DA20DA40D58
:10031000A20D240D1F39F22106308407A10B7F297D
:10032000583084000830A10000081F39F221053040
:100330008407A10B94290800A4012E08F0390319A1
:1003400008003130430784002E0880001030A000E0
:1003500031308400C101C2010008C2070318C10A7C
:10036000840AA00BAC29C10CC20CC10CC20CC10C7C
:10037000C20CC10CC20C4208AE00C30A43122E08C4
:10038000F039031908000B30A700B830A600A80107
:10039000A901A40AA80A06302807831CD629A800A8
:1003A00060302807031CD629A800A90A2E08A60237
:1003B0000318C929A70BC929AE014030C4000800A1
:1003C0003230A5008B010B1DE3290B11A50BE3298E
:1003D00008008030F129C030F129CB30F129CF302D
:1003E000F1292312A2003230A000A00BF529F82138
:1003F000A20E22080F3923048600861686120800F2
:10040000831615309900043098000C128312803046
:100410009800831698168312000000000030132203
:1004200008001E0C7F390C1E132A000099000800DA
:10043000E9212316A10121082C20F221A10A211E65
:100440001B2AEB212316A10121083D20F221A10A3C
:10045000211E242A07120022871E332A1F192E2A42
:1004600011221F152C2A35227E28831698128312FA
:100470000030980007134030F12123160030F2219C
:10048000A10A211E3E2AE9212316A1012108F221F9
:10049000A10AA11D462AA10121081220F221A10AC8
:1004A000A11D4C2AEB212316A10121081B20F221BA
:0804B000A10A211E552A0800D3
:02400E00313F40
:00000001FF
-
:-/Sorprendente.... Muchisimas gracias Noctambulo, El HEX se abre correctamente. Ahora queda montar el circuito
No sé como te las apañas para ver entre tanto numero un fallo.
Un saludo desde Solsona, Lerida
-
Mucho camino recorrido , mucha arena :-/ me encanta :P
Suerte con el pulse rate
-
La culpa la tiene el amigo Diego y su El fichero HEX explicado (http://www.todopic.com.ar/foros/index.php?topic=23342.msg187006#msg187006)