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

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

Desconectado David Romero

  • PIC10
  • *
  • Mensajes: 14
Re:TIMER 1 ENSAMBLADOR
« Respuesta #15 en: 12 de Julio de 2016, 17:27:24 »
Pues igual si me sirvió, miren el código me funciona bien si el sensor no sensa 1cm funciona el motor hace una secuencia con la tabla y si sensa para, le pare desactivando las interrupciones de tmr1 , ahora necesito que me ayuden quiero hacer que este apagado que no ingrese al tmr1 , que por ejemplo si paso rápidamente la mano por el sensor se produzca una secuencia de movimiento osea que cumpla la tabla de valores que es en donde da la secuencia de mov al motor , produzca una secuencia y se vuelva a apagar, estuve intentando que sense espere un seg y sense de nuevo pero no me ha estado funcionando.


    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';
   
   
      CBLOCK  0x20
      Distancia                  ; Se expresará en centímetros.
      Mov
      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 1
    BCF STATUS,7 ; Aseguro que esta entre el banco 0 y 1
    BCF STATUS,6 ; Aseguro que esta entre el banco 0 y 1
   
    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
    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
   
    movlw   b'00110001'
    movwf   T1CON
    bcf     PIR1,TMR1IF

    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
     bsf PORTB,0
     call Retardo_5micros
     bcf PORTB,0
     
     
   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 PARO
   call   Retardo_20ms   
   goto PRINCIPAL
   
   Interrupcion
   bcf INTCON,7
   btfsc  INTCON,2
   call InterrupcionTMR0 ;Llama a las interrupciones de TMR0
   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
   retfie
   
   InterrupcionTMR1
   incf Mov,1 ; Comienza Movimiento motor
   movlw d'8'
   subwf Mov,0
   btfsc STATUS,2
   goto $+2
   goto $+6
   clrf Mov
   movfw Mov
   call Tabla
   movwf PORTC
   goto $+4
   movfw Mov
   call Tabla
   movwf PORTC
   bcf     T1CON,TMR1ON
   movlw   0x0B
   movwf   TMR1H
   movlw   0xDC
   movwf   TMR1L
   bsf     T1CON,TMR1ON
   bcf     PIR1,TMR1IF
   retfie
   
   EndInt
   BSF INTCON,7
   retfie
   
   
PARO;  Al sensar 1cm para el motor, desactivo las interrupciones por TMR1
   movlw .1
   subwf   Distancia,0
   btfsc   STATUS,2
   GOTO $+2
   GOTO $+5
   movlw   b'00110000'
   movwf   T1CON
   CLRF PORTC
   GOTO $+3
   movlw   b'00110001'
   movwf   T1CON
   return
 
        Tabla
   ADDWF PCL,1
   retlw B'00000001'
   retlw B'00000000'
   retlw B'00000001'
   retlw B'00000000'
   retlw B'00000010'
   retlw B'00000000'
   retlw B'00000010'
   retlw B'00000000'
   RETURN
        INCLUDE <Libreria.inc> ;**Libreria de Retardos****
 
   end

Desconectado David Romero

  • PIC10
  • *
  • Mensajes: 14
Re:TIMER 1 ENSAMBLADOR
« Respuesta #16 en: 12 de Julio de 2016, 17:28:48 »
lkkk

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TIMER 1 ENSAMBLADOR
« Respuesta #17 en: 12 de Julio de 2016, 21:30:03 »
Pues igual si me sirvió, miren el código me funciona bien si el sensor no sensa 1cm funciona el motor hace una secuencia con la tabla y si sensa para, le pare desactivando las interrupciones de tmr1 , ahora necesito que me ayuden quiero hacer que este apagado que no ingrese al tmr1 , que por ejemplo si paso rápidamente la mano por el sensor se produzca una secuencia de movimiento osea que cumpla la tabla de valores que es en donde da la secuencia de mov al motor , produzca una secuencia y se vuelva a apagar, estuve intentando que sense espere un seg y sense de nuevo pero no me ha estado funcionando.

Si te explicas mejor voy a poder entenderte y darte algunas ideas, pero realmente no llegue a entender nada de lo que quisiste escribir.


 

anything