Hola gente, realice un código que no funciona de acuerdo a lo esperado y no puedo desifrar porque no anda. El código es parte de una interrupcion del timer1 por desborde, el pic que uso es el 16F628. El problema está en que cuando ingresa a la tabla para buscar el valor, salta a cualquier otro lugra, que inclusive no esta en la tabla misma.
El valor con el que ingresa a buscar en la tabla al comienza el contador es FF, y a medida que ingresa cada vez a la rutina decrementa en uno su valor, de manera que tendría que recorrer toda la tabla en 255 pasadas. Les dejo el código para que lo vean, a ver si encuentran algo extraño. Por cierto esta parte del código esta escrita en asambler para poder optimizar el código ya que esta parte debe ser lo mas rápida posible, y en C esto tarda más tiempo de lo debido. Desde ya muchas gracias.
El valor con el que ingresa a buscar en la tabla al comienza el contador es FF, y a medida que ingresa cada vez a la rutina decrementa en uno su valor, de manera que tendría que recorrer toda la tabla en 255 pasadas. Les dejo el código para que lo vean, a ver si encuentran algo extraño. Por cierto esta parte del código esta escrita en asambler para poder optimizar el código ya que esta parte debe ser lo mas rápida posible, y en C esto tarda más tiempo de lo debido. Desde ya muchas gracias.
Código:
#int_timer1
Tim1 ()
{
#asm
bcf PIR1,0
movf contador,0
call tabla
movwf portb
decf contador,1
movlw 0x00
movwf TMR1L
movlw 0xFF
movwf TMR1H
return
tabla: ADDWF PCL,1
RETLW 0
RETLW 1
RETLW 2
RETLW 3
RETLW 4
RETLW 5
RETLW 6
RETLW 7
RETLW 8
RETLW 9
RETLW 10
RETLW 11
RETLW 12
RETLW 13
RETLW 14
RETLW 15
RETLW 16
RETLW 17
RETLW 18
RETLW 19
RETLW 20
RETLW 21
RETLW 22
RETLW 23
RETLW 24
RETLW 25
RETLW 26
RETLW 27
RETLW 28
RETLW 29
RETLW 30
RETLW 31
RETLW 32
RETLW 33
RETLW 34
RETLW 35
RETLW 36
RETLW 37
RETLW 38
RETLW 39
RETLW 40
RETLW 41
RETLW 42
RETLW 43
RETLW 44
RETLW 45
RETLW 46
RETLW 47
RETLW 48
RETLW 49
RETLW 50
RETLW 51
RETLW 52
RETLW 53
RETLW 54
RETLW 55
RETLW 56
RETLW 57
RETLW 58
RETLW 59
RETLW 60
RETLW 61
RETLW 62
RETLW 63//! Hasta acá una onda
RETLW 64
RETLW 65
RETLW 66
RETLW 67
RETLW 68
RETLW 69
RETLW 70
RETLW 71
RETLW 72
RETLW 73
RETLW 74
RETLW 75
RETLW 76
RETLW 77
RETLW 78
RETLW 79
RETLW 80
RETLW 81
RETLW 82
RETLW 83
RETLW 84
RETLW 85
RETLW 86
RETLW 87
RETLW 88
RETLW 89
RETLW 90
RETLW 91
RETLW 92
RETLW 93
RETLW 94
RETLW 95
RETLW 96
RETLW 97
RETLW 98
RETLW 99
RETLW 100
RETLW 101
RETLW 102
RETLW 103
RETLW 104
RETLW 105
RETLW 106
RETLW 107
RETLW 108
RETLW 109
RETLW 110
RETLW 111
RETLW 112
RETLW 113
RETLW 114
RETLW 115
RETLW 116
RETLW 117
RETLW 118
RETLW 119
RETLW 120
RETLW 121
RETLW 122
RETLW 123
RETLW 124
RETLW 125
RETLW 126
RETLW 127//!Hasta acá otra onda
RETLW 128
RETLW 129
RETLW 130
RETLW 131
RETLW 132
RETLW 133
RETLW 134
RETLW 135
RETLW 136
RETLW 137
RETLW 138
RETLW 139
RETLW 140
RETLW 141
RETLW 142
RETLW 143
RETLW 144
RETLW 145
RETLW 146
RETLW 147
RETLW 148
RETLW 149
RETLW 150
RETLW 151
RETLW 152
RETLW 153
RETLW 154
RETLW 155
RETLW 156
RETLW 157
RETLW 158
RETLW 159
RETLW 160
RETLW 161
RETLW 162
RETLW 163
RETLW 164
RETLW 165
RETLW 166
RETLW 167
RETLW 168
RETLW 169
RETLW 170
RETLW 171
RETLW 172
RETLW 173
RETLW 174
RETLW 175
RETLW 176
RETLW 177
RETLW 178
RETLW 179
RETLW 180
RETLW 181
RETLW 182
RETLW 183
RETLW 184
RETLW 185
RETLW 186
RETLW 187
RETLW 188
RETLW 189
RETLW 190
RETLW 191
RETLW 192
RETLW 193
RETLW 194
RETLW 195//!Hasta acá otra de las ondas
RETLW 196
RETLW 197
RETLW 198
RETLW 199
RETLW 200
RETLW 201
RETLW 202
RETLW 203
RETLW 204
RETLW 205
RETLW 206
RETLW 207
RETLW 208
RETLW 209
RETLW 210
RETLW 211
RETLW 212
RETLW 213
RETLW 214
RETLW 215
RETLW 216
RETLW 217
RETLW 218
RETLW 219
RETLW 220
RETLW 221
RETLW 222
RETLW 223
RETLW 224
RETLW 225
RETLW 226
RETLW 227
RETLW 228
RETLW 229
RETLW 230
RETLW 231
RETLW 232
RETLW 233
RETLW 234
RETLW 235
RETLW 236
RETLW 237
RETLW 238
RETLW 239
RETLW 240
RETLW 241
RETLW 242
RETLW 243
RETLW 244
RETLW 245
RETLW 246
RETLW 247
RETLW 248
RETLW 249
RETLW 250
RETLW 251
RETLW 252
RETLW 253
RETLW 254
RETLW 255//!Hasta acá la última onda
#endasm
}