Programación Específica > Microcontroladores

 Registro "rcon" Del 16f876

<< < (2/3) > >>

Alternative:
SAludos
perdon era uno en el banco 0 y otro en el banco1
con eso de las apuraciones no escribi bien los numeros
pero cheque rapido que los estas manipulando en el
banco erroneo, dele un vistazo al manejo de tus bancos

saludos
 :hola:

Pegasux:
Muy buenas de nuevo. Pues la verdad es que sigo sin entender lo que me quieres decir, el registro PIE1 esta en el banco 1, y yo habilito la interrupción del  en el banco uno:

                bsf   STATUS,RP0   ;Banco 1
      bcf   STATUS,RP1

      movlw b'00000001'   ; habilita solo irq del timer1
      movwf   PIE1

El registro INTCON esta en todos los bancos, asi que habilito interrupciones sin mas:

                movlw b'10000000'   ; habilita bit IE
      movwf   INTCON

Para comenzar la cuenta hemos de pasar al banco 0 y programar el T1CON:

                bcf   STATUS,RP0   ; banco 0
      movlw   b'11111001'   ; encendemos timer
      movwf   T1CON

Finalmente, el registro PIR1 si que esta en el banco 0, pero solamente nos indica la causa de la interrupción, no veo que haya que programar nada en el hasta que salte a la rutina general de atencion a la interrupción, pero precisamente el problema que tengo es que no salta y por tanto el registro PIR1 no tengo la oportunidad de usarlo.
¿Quizas esta mal el orden de programar los registros?

Saludos y gracias de nuevo.

Alternative:
SAludos
me puse achecar el datasheet y encontre l solucion y el error que estas cometiendo al interpretrar mal el uso del TMR1, te explico

TMR0
Temporizador, te genera una interrupcion por desbordamiento
asi que cuando pasa TMR0=0xFF a TMR0=0x00 te produce
una interrupcion y salta a ORG 4 y posteriormente realizas
tu programa retornando con retfie y limpiando tu bandera

TMR1 y TMR2
Son temporizadores como contadores, cuando ocurre un desbordamiento
es decir cuando pasa de 0xFF a 0x00 los registros TRM1H y TMR1L
solo te genera 1 su bandera (TMR1IF) y no te genera una interrupcion
por desbordamiento sino un abido por desbordamiento en el registro TMR1IF

Saludos y suerte  :hola:

Pegasux:
Muchas gracias por la respuesta, ahora ya parece que sabemos porque no funciona, pero tengo un lio enorme, porque tanto en el datasheet que tengo  (16F87XA)como en el libro que tengo, dice que provocan interrupción, aunque lo que tambien es cierto, que  el mio es 16F876 sin A (el viejo), es posible que esa sea la causa del error, no se. Esta tarde me pasare a consultarlo por la biblioteca de la universidad, tienen unos cuantos libros de PIC's.
En cualquier caso no hay problema con la interrupción, como no es crítico y tengo que usar tambien el timer 0, comprobare el flag del timer 1 con la rutina de atencion del timer 0, y aproximadamente 1 de cada 10 veces que salte la irq del timer 0 me hará lo que queria hacer con el timer 1 y asunto solucionado.

Muchas gracias y un saludo!!

Pegasux:
Ya he cambiado al tmr0 y ahora hace bien lo de los 2 timers en la simulacion, tal y como esperaba, aunque no he llegado a encontrar lo de la interrupcion del tmr1, solo falta montarlo a ver que pasa  :D
Muchas gracias y un saludo.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa