Autor Tema: TIMER 1 ENSAMBLADOR  (Leído 10207 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado David Romero

  • PIC10
  • *
  • Mensajes: 14
TIMER 1 ENSAMBLADOR
« en: 10 de Julio de 2016, 12:34:22 »
 me podrían dar un ejemplo porfavor, de TIMER 1 en ensamblador modo temporizador de 1s, tengo uno pero no me ingresa a la interrupción.
« Última modificación: 10 de Julio de 2016, 19:07:33 por David Romero »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TIMER 1 ENSAMBLADOR
« Respuesta #1 en: 10 de Julio de 2016, 18:01:52 »
Urgencia (en mi experiencia en el foro) significa: algun trabajo del colegio o algo por el estilo el cual o no le llevaste importancia y ahora lo tenes que entregar, o no tenes ganas de investigar y probar por vos mismo.

Si tuvieras un pedazo de codigo realizado te podriamos orientar, pero darte todo de 0 pocas personas lo van a hacer.


http://eng-serve.com/pic/pic_timer.html
Ahi tenes una calculadora que te va a ayudar al menos a obtener el tiempo en el cual el timer produciria la interrupcion. Y saber que valores tenes que cargarle a los registros.

Notaras que en el timer va a producirse el overflow cada 0.5s, mas de eso no podrias. Entonces cuando cuentas que el flag de interrupcion del timer se puso en 1 por segunda ves quiere decir que paso el segundo.

Listo ya tenes todo.

PD: El flag de interrupcion se pone a 1 cuando se produce el overflow del Timer1, NO es necesario tener activas las interrupciones, por ahora intenta no usarlas hasta que realmente tengas ganas de aprenderlas o las necesites.

------------

Todo lo demas que necesites esta en el datasheet del microcontrolador. Que podes encontrar en la pagina de Microchip.
Y como te decia, si tenes codigo te podemos guiar. Pero es importante que leas el datasheet del micro para entenderle como funciona.

Desconectado David Romero

  • PIC10
  • *
  • Mensajes: 14
Re:TIMER 1 ENSAMBLADOR
« Respuesta #2 en: 10 de Julio de 2016, 18:51:18 »
No me ingresa a la interrupción
solo me vale cuando no hago la int y verifico la bandera si se ha puesto en 1 pero al cambiar para que me funcione con interrupción no me sirve. Ahí esta el código que pedías.

list p=16f877a;Listar el microcontrolador
    #include P16F877a.inc; Incluyo la libreria del micro
     __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CP_OFF
     
     TMR0_Carga60micros   EQU d'256'-d'27';
    Cont equ 0x21
      CBLOCK  0x0C
      Distancia                  ; Se expresará en centímetros.
      ENDC
    ;........................................................      
     Reset org 0x00; Direccion del Reset
     goto INICIO
     
         
     org 0x04
     
     goto Interrupcion
     ; **** Configura los puertos*******************************
         org 0x05; Comienza Inicio
   INICIO
    bsf     STATUS,RP0
    clrf    TRISB
    bcf     STATUS,RP0
    movlw   b'00110001'
    movwf   T1CON
    clrf    PORTB
    bcf     PIR1,TMR1IF
              BSF    PIE1,TMR1IE     ; HABILITO LA INTERRUPCIÓN POR TIMER1
                   BSF     INTCON, PEIE  ; Habilitamos interrupción por periféricos

          BSF     INTCON,GIE    ; HABILITAMOS TODAS LAS INTERRUPCIONES

PRECARGA
    bcf     T1CON,TMR1ON
    movlw   0x0B
    movwf   TMR1H
    movlw   0xDC
    movwf   TMR1L
    bsf     T1CON,TMR1ON
   
       Led
    bsf PORTB,0
    goto Led
   
    Interrupcion
   bsf PORTB,1
   bcf     PIR1,TMR1IF
  retfie
 
   end


Desconectado luismh

  • PIC16
  • ***
  • Mensajes: 149
Re:TIMER 1 ENSAMBLADOR
« Respuesta #3 en: 10 de Julio de 2016, 20:16:52 »
No es necesario poner la línea "org 0x05"

Si quieres encender RB0 no es necesario que lo pongas en un bucle infinito

Cómo sabés que no anda? No se activa RB1?

Desconectado David Romero

  • PIC10
  • *
  • Mensajes: 14
Re:TIMER 1 ENSAMBLADOR
« Respuesta #4 en: 10 de Julio de 2016, 20:43:01 »
Mira estoy intentando controlar un sensor hcsr04 de proximidad cuando no sense el motor debe estar funcionando y cuando sense se va a  parar , he estado implementando TIMER 0 para dar los pulsos al sensor y medir las distancias logre hacer funcionar el TMR1 el cual le mande que titile un led , en ves de esto iría el motor , pero tengo un problema en el bucle interrupción al poner el comando goto a las interrupciones respectivas me funciona solo el sensado del TMR0 y no el titileo del led del TMR1 le pongo call en ves de goto y me funciona el titileo pero no el sensado y nose porque, le estuve probando en simulacion. Ademas le conecto al circuito físico y no funciona nada


   list p=16f877a;Listar el microcontrolador
    #include P16F877a.inc; Incluyo la libreria del micro
     __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _BOREN_ON & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CP_OFF
     
     TMR0_Carga60micros   EQU d'256'- d'27';
     Cont equ 0x21
   
      CBLOCK  0x0C
      Distancia                  ; Se expresará en centímetros.
      ENDC
     
    ;........................................................      
     Reset org 0x00; Direccion del Reset
     goto Inicio
     
     org 0x04
     
     goto Interrupcion
     
     org 0x05; Comienza Inicio
     Inicio

     ; **** Configura los puertos*******************************
     
    BSF STATUS,RP0 ; Accede a banco 0
    movlw b'00000010'; Colocamos como salidas
    movwf TRISB
    movlw b'00000000'
    movwf TRISC
    movlw   b'00000000'            ; Prescaler de 2 para el TMR0.
    movwf   OPTION_REG
    movlw   b'00110001'
    movwf   T1CON
    bcf     PIR1,TMR1IF
    BSF     INTCON,GIE    ; HABILITAMOS TODAS LAS INTERRUPCIONE
    BSF    PIE1,TMR1IE     ; HABILITO LA INTERRUPCIÓN POR TIMER1
    BSF     INTCON, PEIE  ; Habilitamos interrupción por periféricos
    BCF STATUS,RP0 ; Regresa a banco 0

    clrf PORTB
    clrf PORTC
   
      ; Carga al TIMER 1
     bcf     T1CON,TMR1ON
    movlw   0x0B
    movwf   TMR1H
    movlw   0xDC
    movwf   TMR1L
    bsf     T1CON,TMR1ON
   
  PRINCIPAL
     clrf   Distancia; Manda los pulsos al sensor
     bsf PORTB,0
     call Retardo_5micros
     bcf PORTB,0
     
    ; Aqui ve el estado de los pulsos que da el sensor y mide la distancia
   EsperaFlancoSubida
   btfss   PORTB,1                  ; Espera el flanco de subida de la señal
   goto   EsperaFlancoSubida        ; de salida del sensor.
   movlw   TMR0_Carga60micros      ; Ya se ha producido el flanco de subida.
   movwf   TMR0                   ; Carga el Timer 0.
   movlw   b'10100000'            ; Autoriza interrupción del TMR0 (T0IE).
   movwf   INTCON
   
   
   EsperaFlancoBajada
   btfsc   PORTB,1               ; Espera flanco de bajada de la señal de la salida
   goto   EsperaFlancoBajada     
   clrf   INTCON               ; Se ha producido el flanco de bajada. Prohíbe interrup.
   call TITILEO
   call   Retardo_1ms   
   goto PRINCIPAL
   
   Interrupcion
   btfsc  INTCON,2
   call InterrupcionTMR0 ;Llama a las interrupciones de TMR0;;;;; aquí es el problema
   btfsc  PIR1,TMR1IF
   call InterrupcionTMR1 ;lLama a las interrupcion de TMR1
   goto EndInt
   
   InterrupcionTMR0
   movlw   .1                  ; Se utiliza instrucción "addwf", en lugar de "incf"
   addwf   Distancia,1            ; para posicionar flag de Carry.
   bcf      INTCON,2
   goto EndInt
   
   InterrupcionTMR1 ; en ves del titileo iria el motor
   incf Cont,1
   movlw d'2'
   subwf Cont,0
   btfsc STATUS,2
   goto $+2
   goto $+4
   bsf PORTC,0
   clrf Cont
   goto $+2
   bcf PORTC,0
   bcf     T1CON,TMR1ON
   movlw   0x0B
   movwf   TMR1H
   movlw   0xDC
   movwf   TMR1L
   bsf     T1CON,TMR1ON
   bcf     PIR1,TMR1IF
   goto EndInt
   
   EndInt
   retfie
   
   TITILEO ;;; aqui enciende un led cuando sensa, en ves de esto pararía al motor
   movlw .1
   subwf   Distancia,0
   btfsc   STATUS,2
   bsf PORTB,2
   BTFSS STATUS,2
   bcf PORTB,2
   return
 

        INCLUDE <Libreria.inc> ;**Libreria de Retardos****
 
   end

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TIMER 1 ENSAMBLADOR
« Respuesta #5 en: 10 de Julio de 2016, 22:53:47 »
No me ingresa a la interrupción
solo me vale cuando no hago la int y verifico la bandera si se ha puesto en 1 pero al cambiar para que me funcione con interrupción no me sirve. Ahí esta el código que pedías.

Código: ASM
  1. list p=16f877a;Listar el microcontrolador
  2.     #include P16F877a.inc; Incluyo la libreria del micro
  3.      __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CP_OFF
  4.      
  5.         TMR0_Carga60micros   EQU d'-27';
  6.         CBLOCK  0x20
  7.         Distancia                  ; Se expresará en centímetros.
  8.         Cont
  9.         ENDC
  10.     ;........................................................      
  11.  
  12.         org 0x00; Direccion del Reset
  13.         goto INICIO
  14.         org 0x04
  15.         goto Interrupcion
  16.  
  17.      ; **** Configura los puertos*******************************
  18.  
  19. INICIO:
  20.         bsf     STATUS,RP0
  21.         clrf    TRISB
  22.         bcf     STATUS,RP0
  23.         movlw   b'00110000'
  24.         movwf   T1CON
  25.         movlw   0x0B
  26.         movwf   TMR1H
  27.         movlw   0xDC
  28.         movwf   TMR1L
  29.         bsf     T1CON,TMR1ON
  30.         clrf    PORTB
  31.         bcf     PIR1,TMR1IF
  32.         BSF     PIE1,TMR1IE   ; HABILITO LA INTERRUPCIÓN POR TIMER1
  33.         BSF     INTCON, PEIE  ; Habilitamos interrupción por periféricos
  34.         BSF     INTCON,GIE    ; HABILITAMOS TODAS LAS INTERRUPCIONES
  35.  
  36.    
  37. Led
  38.         bsf PORTB,0
  39.         goto Led
  40.    
  41. Interrupcion
  42.         ;Aca falta codigo
  43.         bsf PORTB,1
  44.         bcf     PIR1,TMR1IF
  45.         ;Aca falta codigo
  46.         retfie
  47.  
  48.    end

Un poquito modificado nomas, pero falta codigo:

Problemas y cambios:

- Usando 0x0C en el CBLOCK cuando la RAM comienza en 0x20, asi como puse yo el codigo, Distancia tiene el 0x20 y Cont el 0x21
- Quite el ORG 0x05
- El registro PIE se encuentra en el banco 1, no en el 0 como estas intentando, lo cual es algo a arreglar.
- Falta codigo en la interrupcion, pag. 154 del datasheet, en el capitulo que dice "Context Saving During Interrupts" te da el codigo que falta y espero que entiendas el por que falta eso.
- Falta recargar el timer en la interrupcion tambien.
- Solo vas a ver que se enciende el led de RB1 y nada mas, podrias poner el codigo de que enciende y apague.

Desconectado David Romero

  • PIC10
  • *
  • Mensajes: 14
Re:TIMER 1 ENSAMBLADOR
« Respuesta #6 en: 10 de Julio de 2016, 22:55:18 »
Crees que por eso también no me funcione lo que deje en mi ultimo mensaje, ya aplicado con el TMR0,? ahí si le puse que me encienda y me apague el led Killer
« Última modificación: 10 de Julio de 2016, 22:59:28 por David Romero »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TIMER 1 ENSAMBLADOR
« Respuesta #7 en: 10 de Julio de 2016, 22:59:16 »
Tu ultimo codigo tienen muchos problemas similares al primero que pasaste, pero empezemos por algo basico y luego lo vas agrandando.

Desconectado David Romero

  • PIC10
  • *
  • Mensajes: 14
Re:TIMER 1 ENSAMBLADOR
« Respuesta #8 en: 10 de Julio de 2016, 23:08:18 »
Lo del banco 1 si lo había leído , osea pero solo le implemente así :
   INICIO
    bsf     STATUS,RP0
    clrf    TRISB
    movlw   b'00110001'
    movwf   T1CON
    bcf     PIR1,TMR1IF
    BSF     INTCON,GIE    ; HABILITAMOS TODAS LAS INTERRUPCIONES
    BSF    PIE1,TMR1IE     ; HABILITO LA INTERRUPCIÓN POR TIMER1
    BSF     INTCON, PEIE  ; Habilitamos interrupción por periféricos
    bcf     STATUS,RP0
     clrf    PORTB

para hacer pruebas y si me funciono, ya donde tengo problemas es el en código grande, probare colocando ese código del datasheet en mi interrupción
« Última modificación: 10 de Julio de 2016, 23:13:13 por David Romero »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TIMER 1 ENSAMBLADOR
« Respuesta #9 en: 10 de Julio de 2016, 23:19:04 »
Código: [Seleccionar]
   INICIO
    bsf     STATUS,RP0
    clrf    TRISB
    movlw   b'00110001'
    movwf   T1CON
    bcf     PIR1,TMR1IF
    BSF     INTCON,GIE    ; HABILITAMOS TODAS LAS INTERRUPCIONES
    BSF    PIE1,TMR1IE     ; HABILITO LA INTERRUPCIÓN POR TIMER1
    BSF     INTCON, PEIE  ; Habilitamos interrupción por periféricos
    bcf     STATUS,RP0
     clrf    PORTB

Vos estas haciendo:

- Te vas a banco 1
- Accedes a TRISB correctamente
- T1CON esta en Banco 0, la direccion de memoria en el banco 1 no esta implementada
- PIR1 esta en el banco 0 , En ese caso estas modificando el PIE1
- INTCON esta en ambos bancos asi que no hay problema
- PIE1 modificado correctamente por estar en el banco 1
- INTCON como dije antes, no hay problema

Te das cuenta el error ?

Desconectado David Romero

  • PIC10
  • *
  • Mensajes: 14
Re:TIMER 1 ENSAMBLADOR
« Respuesta #10 en: 10 de Julio de 2016, 23:30:57 »
Dale ya lo corregí, mira": 
no lo entiendo tan bien lo de la pag 154 del datasheet , pero no se refiere al TMR0? en este pequeño programa estoy solo con el 1

 list p=16f877a;Listar el microcontrolador
    #include P16F877a.inc; Incluyo la libreria del micro
     __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CP_OFF
     

      CBLOCK  0x20
      Distancia                  ; Se expresará en centímetros.
Cont
      ENDC
    ;........................................................      
     Reset org 0x00; Direccion del Reset
     goto INICIO
     
         
     org 0x04
     
     goto Interrupcion
     ; **** Configura los puertos*******************************
         org 0x05; Comienza Inicio
   INICIO
    bsf     STATUS,RP0
    clrf    TRISB
    BSF     INTCON,GIE    ; HABILITAMOS TODAS LAS INTERRUPCIONES
    BSF    PIE1,TMR1IE     ; HABILITO LA INTERRUPCIÓN POR TIMER1
    BSF     INTCON, PEIE  ; Habilitamos interrupción por periféricos
    bcf     STATUS,RP0
   
    movlw   b'00110001'
    movwf   T1CON
     bcf     PIR1,TMR1IF
     clrf    PORTB
 

PRECARGA
    bcf     T1CON,TMR1ON
    movlw   0x0B
    movwf   TMR1H
    movlw   0xDC
    movwf   TMR1L
    bsf     T1CON,TMR1ON
   
       Led
    bsf PORTB,0
    goto Led
   
    Interrupcion
   incf Cont,1
   movlw d'2'
   subwf Cont,0
   btfsc STATUS,2
   goto $+2
   goto $+4
   bsf PORTB,1
   clrf Cont
   goto $+2
   bcf PORTB,1
   bcf     PIR1,TMR1IF
   retfie
 
   end
« Última modificación: 11 de Julio de 2016, 00:03:26 por David Romero »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TIMER 1 ENSAMBLADOR
« Respuesta #11 en: 11 de Julio de 2016, 14:31:05 »
Citar
no lo entiendo tan bien lo de la pag 154 del datasheet , pero no se refiere al TMR0? en este pequeño programa estoy solo con el 1

Te explico el por que. En este codigo no vas a tener problemas pero en un codigo con algo dentro de la rutina principal si. Suponete que la rutina principal o loop infinito sea:

Código: ASM
  1. MAIN:
  2.     MOVF   Contador, W
  3.     SUBLW 0x2
  4.     BTFSC  STATUS,Z
  5.     GOTO   UnLugar
  6.     INCF    Contador, F
  7.     GOTO   MAIN

Tambien supongamos que nuestra interrupcion tengamos algo asi:

Código: ASM
  1. ORG 0x04
  2.     ADDLW 0x5
  3.     RETFIE

Cuando ocurre una interrupcion, el micro deja completamente lo que esta haciendo y el PC cambia a 0x04. Es todo lo que hace. Pero uno no controla cuando es que va a ocurrir la interrupcion. Si por ejemplo nuestro programa principal estaba ejecutandose y lo proximo a ejecutarse es la instruccion GOTO MAIN, no va a haber problemas.
Por que al detectarse la interrupcion, entra a la interrupcion se cambia el valor de W y vuelve. No hay problemas por que luego tenes el MOVF el cual va a poner el valor de Contador en W y proceder con la operacion.

Distinto es si ocurre la interrupcion luego del MOVF y antes del SUBLW, En ese momento antes de entrar a la interrupcion tenemos que W tiene el valor de Contador. Pero al entrar a la interrupcion W se ve afectado ya que se le suman 0x5, Por lo tanto lo que estabamos intentando comparar es decir Contador si es igual a 2, ya no tiene sentido, por que le sumamos 5.
Eso en parte de W, ahora veamos que ocurre con STATUS.

Con STATUS ocurre algo similar si por ejemplo la interrupcion ocurriese despues del SUBLW y antes del BTFSS, tendriamos ese problema, Suponete que Contador era 2, Se resto 2 con el SUBLW y se activa el flag Z de STATUS, ahora entro a la interrupcion pero tengo un ADDLW que me modifica los flags de STATUS, y por lo tanto al sumarle 5 , ahora el flag Z es 0. Cuando vuelve el BTFSS mira la flag y como es 0 sigue su camino y no entra al primer GOTO, cuando DEBERIA haber entrado.

Es por eso que esta ese codigo en el datasheet, para que estas cosas no ocurran. Observaras que no depende de si es TMR0 o TMR1 o lo que sea.

Código: ASM
  1. Interrupcion:
  2.  
  3.         MOVWF   W_TEMP
  4.         SWAPF   STATUS, W
  5.         CLRF    STATUS
  6.         MOVWF   STATUS_TEMP
  7.         MOVF    PCLATH, W
  8.         MOVWF   PCLATH_TEMP
  9.         CLRF    PCLATH
  10.  
  11. ; Aca tu codigo de la interrupcion
  12.  
  13.  
  14.  
  15. SalirInterrupcion:
  16.  
  17.         MOVF    PCLATH_TEMP, W
  18.         MOVWF   PCLATH
  19.         SWAPF   STATUS_TEMP, W
  20.         MOVWF   STATUS
  21.         SWAPF   W_TEMP, F
  22.         SWAPF   W_TEMP, W
  23.  
  24.         RETFIE

Observaras que usa SWAPF en algunos casos, esto es por que esas instrucciones no afectan a las banderas del registro STATUS.

-----------------------------------------------

Respecto a tu codigo, algo asi, deberia funcionar, aunque no me fije bien el tema del timer:

Código: ASM
  1. list p=16f877a;Listar el microcontrolador
  2.     #include P16F877a.inc; Incluyo la libreria del micro
  3.      __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _CP_OFF
  4.      
  5.         CBLOCK  0x20
  6.         Distancia                  ; Se expresará en centímetros.
  7.         Cont
  8.         W_TEMP
  9.         STATUS_TEMP
  10.         PCLATH_TEMP
  11.         ENDC
  12.     ;........................................................      
  13.  
  14.         org 0x00; Direccion del Reset
  15.         goto INICIO
  16.         org 0x04
  17.         goto Interrupcion
  18.  
  19.      ; **** Configura los puertos*******************************
  20.  
  21. INICIO:
  22.         ; Banco 1
  23.         bsf     STATUS,RP0
  24.         clrf    TRISB
  25.         BSF     PIE1,TMR1IE   ; HABILITO LA INTERRUPCIÓN POR TIMER1
  26.         bcf     STATUS,RP0
  27.  
  28.         ;Banco 0
  29.         movlw   b'00110000'     ; Configuro preescaler sin activar el TMR1
  30.         movwf   T1CON
  31.         movlw   0xDC            ; Cargo el valor
  32.         movwf   TMR1L
  33.         movlw   0x0B
  34.         movwf   TMR1H
  35.         bsf     T1CON,TMR1ON    ; Activo el Timer1
  36.         clrf    PORTB
  37.         bcf     PIR1,TMR1IF     ; Limpio flags antes de activar las interrupciones
  38.         BSF     INTCON, PEIE    ; Habilitamos interrupción por periféricos
  39.         BSF     INTCON,GIE      ; HABILITAMOS TODAS LAS INTERRUPCIONES
  40.  
  41.         bsf     PORTB,0
  42.         ; Loop principal
  43. Led
  44.         NOP
  45.         goto Led
  46.    
  47. Interrupcion:
  48.  
  49.         ; Guardo el contexto
  50.         MOVWF   W_TEMP
  51.         SWAPF   STATUS, W
  52.         CLRF    STATUS
  53.         MOVWF   STATUS_TEMP
  54.         MOVF    PCLATH, W
  55.         MOVWF   PCLATH_TEMP
  56.         CLRF    PCLATH
  57.  
  58.         ; Aca el codigo de la interrupcion en si
  59.         ; Limpio Bandera
  60.         bcf     PIR1,TMR1IF
  61.  
  62.         ; Recargo Timer
  63.         movlw   0xDC
  64.         movwf   TMR1L
  65.         movlw   0x0B
  66.         movwf   TMR1H
  67.  
  68.         ; Incremento contador y reviso si pasaron las 2 veces
  69.         incf    Cont, F
  70.         MOVF    Cont, W
  71.         SUBLW   0x02
  72.         BTFSS   STATUS,Z
  73.         GOTO    SalirInterrupcion       ; No paso asi que salgo
  74.         MOVLW   0x02                    ; Sino invierto el bit y borro el contador
  75.         XORWF   PORTB, F
  76.         clrf    Cont
  77.  
  78. SalirInterrupcion:
  79.  
  80.         ;Retorno el contexto
  81.         MOVF    PCLATH_TEMP, W
  82.         MOVWF   PCLATH
  83.         SWAPF   STATUS_TEMP, W
  84.         MOVWF   STATUS
  85.         SWAPF   W_TEMP, F
  86.         SWAPF   W_TEMP, W
  87.  
  88.         RETFIE
  89.  
  90.    END

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re:TIMER 1 ENSAMBLADOR
« Respuesta #12 en: 12 de Julio de 2016, 04:10:02 »
No te esfuerces tanto KILLERJC  :lol: :lol:

Lo primero que hay que leerse para enpezar en asm es este maravilloso curso de Suki, ahi estan casi todas las respuestas que se necesitan para empezar con teoria y ejemlos practicos, si despues tiene dudas que pregunte, pero lo mejor es tener algunos conceptos claros:

http://www.todopic.com.ar/foros/index.php?topic=24720.0

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TIMER 1 ENSAMBLADOR
« Respuesta #13 en: 12 de Julio de 2016, 04:34:44 »
No te esfuerces tanto KILLERJC  :lol: :lol:

Y yo que estaba pensando en tener que hacer una guia para no tener que repetir eso muchas veces, y resulta que lo tenia al frente de mis ojos :P, ahora como se que esta ahi se los linkeo siempre xD

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re:TIMER 1 ENSAMBLADOR
« Respuesta #14 en: 12 de Julio de 2016, 06:43:01 »
Citar
Y yo que estaba pensando en tener que hacer una guia para no tener que repetir eso muchas veces, y resulta que lo tenia al frente de mis ojos :P, ahora como se que esta ahi se los linkeo siempre xD

No jodas que no lo sabias  :D :D, ademas fijate que es el hilo con mas visitas del foro. Yo era lo que hacia siempre: primero que se lean y estudien esto, si depues tienen alguna duda pues ya se les echa una mano.

Saludos KILLER.