TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Pinolillo16 en 16 de Agosto de 2014, 18:05:43

Título: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 16 de Agosto de 2014, 18:05:43
Que tal amigos, se poco de programación y regularmente he realizado pequeños proyectos con los pics clásicos. 16F84,16F877,16F886,16F887,16F628A y algunos otros con PIC18F, igual de los más comunes esta ocasión quiero compartir con ustedes si me lo permiten y al mismo tiempo aprender juntos, a manejar todos los periféricos con este pic de la serie 18FxxK. He leido poco sobre ellos y me parecen interesantes, este en particular tiene un oscilador interno de 16Mhz. Lo cual me parece bien en comparación de los anteriores, espero que sea de su agrado y si es asi seguire posteando un poco más....  :) solo como comentario a veces quisiera que aquellos que no somos famosos en el foro nos dieran un poco mas de ayuda.... Pero fuera de eso me encanta este foro a pesar de que casi no he colaborado quiero comenzar con algo.

Saludos amigos desde Toluca  :-)
****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************PRIMER CÒDIGO Y CONFIGURACIÒN************************************************************

   LIST p=18F13K22
   #INCLUDE <p18f13k22.inc>
   CONFIG   FOSC    = IRC
   CONFIG   PLLEN    = ON   
   CONFIG   BOREN   = OFF
   CONFIG   WDTEN   = OFF
   CONFIG   MCLRE    = OFF
   CONFIG   HFOFST   = OFF
   CONFIG   LVP    = OFF
   CONFIG    CP0    = ON
   CONFIG    CP1    = ON
   CONFIG    CPB    = OFF
   CONFIG    CPD    = OFF
   CONFIG    WRT0    = OFF
   CONFIG    WRT1    = OFF
   CONFIG    WRTB    = OFF
   CONFIG    WRTD    = OFF
   CONFIG    EBTR0    = OFF
   CONFIG    EBTR1    = OFF
   CONFIG    EBTRB    = OFF

   CBLOCK 0x000
   ENDC

   ORG      0x00
   GOTO   INICIO
   ORG      0x008
   RETFIE;ALTA_PRIORIDAD
   ORG      0x018
   ;BAJA_PRIORIDAD
   RETFIE
;**************************************************************
INICIO
   BSF      OSCCON,IRCF2    ;CONFIGURO EL OSCILADOR INTERNO
   BSF      OSCCON,IRCF1    ;A 16MHZ
   BSF      OSCCON,IRCF0
;
   CLRF   SLRCON
   CLRF   ANSEL         ;CONFIGURAMOS TODOS LOS PINES
   CLRF   ANSELH         ;COMO I/O DIGITAL
;
;CONFIGURACION DE LOS PUERTOS
   CLRF   PORTA               ;PONGO TODAS LAS SALIDAS
   CLRF   PORTB               ;EN NIVEL BAJO
   CLRF   PORTC
   CLRF   LATA
   CLRF   LATB
   CLRF   LATC
   CLRF   TRISA               ;CONFGIRO LOS PUERTOS
   CLRF   TRISB               ;COMO SALIDAS
   CLRF   TRISC


PRINCIPAL
   SETF PORTA
   SETF PORTB
   SETF PORTC
   GOTO PRINCIPAL


   END




ANEXO UN PEQUE CIRCUITO DE PROTEUS PARA IR PROBANDO LAS PRACTICAS.............
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 16 de Agosto de 2014, 18:08:28
proteus....
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 16 de Agosto de 2014, 18:44:03
Ese programa practicamente fue para echarlo a andar, en proteus me sale un mensaje de que no esta corriendo bien pero físicamente no hay problema alguno....

Bien ahora vamos a realizar algo más....
**************************************************************************************************************************************************

   LIST p=18F13K22
   #INCLUDE <p18f13k22.inc>
   CONFIG   FOSC    = IRC
   CONFIG   PLLEN    = ON   
   CONFIG   BOREN   = OFF
   CONFIG   WDTEN   = OFF
   CONFIG   MCLRE    = OFF
   CONFIG   HFOFST   = OFF
   CONFIG   LVP    = OFF
   CONFIG    CP0    = ON
   CONFIG    CP1    = ON
   CONFIG    CPB    = OFF
   CONFIG    CPD    = OFF
   CONFIG    WRT0    = OFF
   CONFIG    WRT1    = OFF
   CONFIG    WRTB    = OFF
   CONFIG    WRTD    = OFF
   CONFIG    EBTR0    = OFF
   CONFIG    EBTR1    = OFF
   CONFIG    EBTRB    = OFF

   CBLOCK 0x000
   ENDC

   ORG      0x00
   GOTO   INICIO
   ORG      0x008
   RETFIE;ALTA_PRIORIDAD
   ORG      0x018
   ;BAJA_PRIORIDAD
   RETFIE
;**************************************************************
INICIO
   BSF      OSCCON,IRCF2    ;CONFIGURO EL OSCILADOR INTERNO
   BSF      OSCCON,IRCF1    ;A 16MHZ
   BSF      OSCCON,IRCF0
;
   CLRF   SLRCON
   CLRF   ANSEL         ;CONFIGURAMOS TODOS LOS PINES
   CLRF   ANSELH         ;COMO I/O DIGITAL
;
;CONFIGURACION DE LOS PUERTOS
   CLRF   PORTA               ;PONGO TODAS LAS SALIDAS
   CLRF   PORTB               ;EN NIVEL BAJO
   CLRF   PORTC
   CLRF   LATA
   CLRF   LATB
   CLRF   LATC
   CLRF   TRISA               ;CONFGIRO LOS PUERTOS
   CLRF   TRISB               ;COMO SALIDAS
   CLRF   TRISC

   CALL INI_TMR

PRINCIPAL
   SETF PORTA
   SETF PORTB
   SETF PORTC
   MOVLW .1
   CALL RET_X1s
   CLRF PORTA
   CLRF PORTB
   CLRF PORTC
   MOVLW .1
   CALL RET_X1s
   GOTO PRINCIPAL

#INCLUDE<RET.INC>

   END




GENERAMOS UN RETARDO DE 1 SEGUNDO Y EMPEZAMOS A CONSTRUIR LA LIBRERIA DE RETARDOS.....
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 16 de Agosto de 2014, 18:45:20
LA LIBRERIA ES:



   CBLOCK
   TMR0H_AUX
   TMR0L_AUX
   CONTADOR_RETARDO
   NUMERO_L_AUX
   NUMERO_H_AUX
   ENDC

INI_TMR
;CONFIGURACION DEL TIMER PARA RETARDOS EN ms
   MOVLW   B'00000000'
   MOVWF   T0CON
   RETURN

RET_X1s
   MOVWF   CONTADOR_RETARDO
   BSF      T0CON,T0PS2
   BSF      T0CON,T0PS1
   BSF      T0CON,T0PS0
   MOVLW   0xF6
   MOVWF   TMR0H_AUX
   MOVLW   0x00
   MOVWF   TMR0L_AUX
   ;GOTO   RETARDOS

RETARDOS
   COMF   TMR0H_AUX,W
   MOVWF   TMR0H
   COMF   TMR0L_AUX,W
   MOVWF   TMR0L
   BSF      T0CON,TMR0ON
CICLO_RETARDO
   BTFSS   INTCON,TMR0IF
   GOTO   CICLO_RETARDO
   BCF      INTCON,TMR0IF
   DECFSZ   CONTADOR_RETARDO
   GOTO   RETARDOS
   RETURN
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 16 de Agosto de 2014, 18:47:06
Si se dan cuenta en la libreria tengo una subrutina que indica que inicie el timer ya que con esto me aseguro que los retardos sean un poco más precisos, con el osciloscopio pudimos ver que el retardo es de 1.01 S lo que nos dice que estan sobrando 10ms entonces tendremos que ajustar el numero del timer....
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 17 de Agosto de 2014, 00:37:47
Corrigiendo el valor del timer para el segundo exacto es:

   MOVLW   0xF5
   MOVWF   TMR0H_AUX
   MOVLW   0x00
   MOVWF   TMR0L_AUX
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 17 de Agosto de 2014, 01:37:20
RET_X100ms
   MOVWF   CONTADOR_RETARDO
   BSF      T0CON,T0PS2
   BCF      T0CON,T0PS1
   BSF      T0CON,T0PS0
   MOVLW   0x62
   MOVWF   TMR0H_AUX
   MOVLW   0x00
   MOVWF   TMR0L_AUX
   GOTO   RETARDOS
RET_X10ms
   MOVWF   CONTADOR_RETARDO
   BCF      T0CON,T0PS2
   BCF      T0CON,T0PS1
   BSF      T0CON,T0PS0
   MOVLW   0x9E
   MOVWF   TMR0H_AUX
   MOVLW   0x00
   MOVWF   TMR0L_AUX
   GOTO   RETARDOS
RET_Xms
   MOVWF   CONTADOR_RETARDO
   BCF      T0CON,T0PS2
   BCF      T0CON,T0PS1
   BCF      T0CON,T0PS0
   MOVLW   0x1F
   MOVWF   TMR0H_AUX
   MOVLW   0x50
   MOVWF   TMR0L_AUX
   GOTO    RETARDOS
RET_X100us
   MOVWF   CONTADOR_RETARDO
   BCF      T0CON,T0PS2
   BCF      T0CON,T0PS1
   BCF      T0CON,T0PS0
   MOVLW   0x03
   MOVWF   TMR0H_AUX
   MOVLW   0x0E
   MOVWF   TMR0L_AUX
   GOTO RETARDOS
RET_X10us
   MOVWF   CONTADOR_RETARDO
   BCF      T0CON,T0PS2
   BCF      T0CON,T0PS1
   BCF      T0CON,T0PS0
   MOVLW   0x00
   MOVWF   TMR0H_AUX
   MOVLW   0x3E
   MOVWF   TMR0L_AUX
RETARDOS
   COMF   TMR0H_AUX,W
   MOVWF   TMR0H
   COMF   TMR0L_AUX,W
   MOVWF   TMR0L
   BSF      T0CON,TMR0ON
CICLO_RETARDO
   BTFSS   INTCON,TMR0IF
   GOTO   CICLO_RETARDO
   BCF      INTCON,TMR0IF
   DECFSZ   CONTADOR_RETARDO
   GOTO   RETARDOS
   RETURN
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 17 de Agosto de 2014, 01:39:18
Las imagenes de proteus dicen que todo esta bien
Título: Re: Practicas con el PIC18F13K22
Publicado por: tapi8 en 17 de Agosto de 2014, 04:53:11
Gracias por compartirlo Pinolillo, siempre esta bien tener algunos ejemplos para la serie 18FXXXX.
Título: Re: Practicas con el PIC18F13K22
Publicado por: jhozate en 17 de Agosto de 2014, 14:30:52
Gracias por compartirlo, tiene buenas caracteristicas este micro,oscilador interno hasta 64Mhz con PLL, seria interesante ver en fisico el tema el consumo.
 ;-)
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 17 de Agosto de 2014, 20:40:48
Cierto jhozate  :D olvide mencionar lo del PLL con esto si anda de maravilla, al menos es uno de los mejores con los que he trabajado
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 17 de Agosto de 2014, 20:42:08
Bien ahora el siguiente programa es para un canal ADC:

   LIST p=18F13K22
   #INCLUDE <p18f13k22.inc>
   CONFIG   FOSC    = IRC
   CONFIG   PLLEN    = ON   
   CONFIG   BOREN   = OFF
   CONFIG   WDTEN   = OFF
   CONFIG   MCLRE    = OFF
   CONFIG   HFOFST   = OFF
   CONFIG   LVP    = OFF
   CONFIG    CP0    = ON
   CONFIG    CP1    = ON
   CONFIG    CPB    = OFF
   CONFIG    CPD    = OFF
   CONFIG    WRT0    = OFF
   CONFIG    WRT1    = OFF
   CONFIG    WRTB    = OFF
   CONFIG    WRTD    = OFF
   CONFIG    EBTR0    = OFF
   CONFIG    EBTR1    = OFF
   CONFIG    EBTRB    = OFF

   CBLOCK 0x000
   VL
   VH
   ENDC

   ORG      0x00
   GOTO   INICIO
   ORG      0x008
   RETFIE;ALTA_PRIORIDAD
   ORG      0x018
   ;BAJA_PRIORIDAD
   RETFIE
;**************************************************************
INICIO
   BSF      OSCCON,IRCF2    ;CONFIGURO EL OSCILADOR INTERNO
   BSF      OSCCON,IRCF1    ;A 16MHZ
   BSF      OSCCON,IRCF0
;
   CLRF   SLRCON
   CLRF   ANSEL         ;CONFIGURAMOS TODOS LOS PINES
   CLRF   ANSELH         ;COMO I/O DIGITAL
   
;CONFIGURACION DE LOS PUERTOS
   CLRF   PORTA               ;PONGO TODAS LAS SALIDAS
   CLRF   PORTB               ;EN NIVEL BAJO
   CLRF   PORTC
   CLRF   LATA
   CLRF   LATB
   CLRF   LATC
   CLRF   TRISA               ;CONFGIRO LOS PUERTOS
   CLRF   TRISB               ;COMO SALIDAS
   CLRF   TRISC

   CALL CONF_ADC
   CALL INI_TMR
   CLRF VL
   CLRF VH


PRINCIPAL
   CALL CON_CH0
   MOVFF VH,PORTC
   MOVFF VL,PORTB
   GOTO PRINCIPAL
CONF_ADC
   MOVLW   B'00001110'; JUSTIFICADO A LA IZQUIERDA
   MOVWF   ADCON2
   CLRF    ADCON1
   MOVLW    B'00000000'; VAMOS A SELECCIONAR EL ADC 0 Y HABILITAR EL PUERTO DE CONVERSIÓN
   MOVWF    ADCON0
   BSF      TRISA,0
   BSF    ANSEL,ANS0      ;CONFIGURAMOS LA ENTRADA A0 PARA LEERLA
   RETURN
CON_CH0
   BSF    ADCON0,ADON
   BSF    ADCON0,GO
PROCESO
   BTFSC   ADCON0,GO
   BRA      PROCESO
   MOVFF   ADRESH,VH
   MOVFF   ADRESL,VL
   RETURN       

#INCLUDE<RET.INC>

   END
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 17 de Agosto de 2014, 20:44:07
Como se observa en el ejemplo hice dos tomas una a casi 5V y otra a 2.5 los leds al parecer me indican que todo es correcto  :) espero que les sirva y como les comente, tambien apenas comienzo a conocer un poco mas sobre los pics, asi que si desean que juntos aprendamos algo en especial sobre este micro acepto sugerencias....

Saludos
Título: Re: Practicas con el PIC18F13K22
Publicado por: vixctor en 17 de Agosto de 2014, 22:57:17
Como se observa en el ejemplo hice dos tomas una a casi 5V y otra a 2.5 los leds al parecer me indican que todo es correcto  :) espero que les sirva y como les comente, tambien apenas comienzo a conocer un poco mas sobre los pics, asi que si desean que juntos aprendamos algo en especial sobre este micro acepto sugerencias....

Saludos

Yo te sugeriria cambiar los GOTO por BRA, y los CALL por RCALL

BRA hace lo mismo que goto, pero ocupa 1 solo word del PIC (Goto ocupa 2) y eso es porque bra es relativo a + - 128 instrucciones, eso significa que para saltos cortos es preferible usar BRA que goto y lo mismo aplica para RCALL, que hace lo mismo que CALL pero el llamado lo hace a rutinas que estan + - 1024 instrucciones...

Saludos
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 18 de Agosto de 2014, 00:01:11
Gracias Victor por las sugerencias lo tomare mucho en cuenta para los demás codigos  ;-)
Título: Re: Practicas con el PIC18F13K22
Publicado por: jhozate en 18 de Agosto de 2014, 13:21:44
Puedes editar los códigos que has puesto, y ponerlos en ASM , esa opción la vez cuando vas a enviar el mensaje , donde dice GeShi le pones ASM y en medio de esas etiquetas pones tu codigo, le das previsualizar y aparecerá algo asi:

Código: ASM
  1. LIST p=18F13K22
  2. #INCLUDE <p18f13k22.inc>

saludos
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 20 de Agosto de 2014, 16:38:20
Gracias por la observación jhozate lo hare en los próximos códigos que suba.... ;-)
Título: Re: Practicas con el PIC18F13K22
Publicado por: jhozate en 20 de Agosto de 2014, 17:16:21
puedes modificar tus comentarios anteriores, ve a ely en la parte derecha dice "Modificar"
saludos
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 21 de Agosto de 2014, 15:28:09
Que tal amigos, he seguido realizando practicas con el PIC y a continuación les posteare el siguiente código. Les explico se trata de manejar un servo con el valor del pot, no se que tan complejo pueda ser pero vamos a realizarlo.....

El código para el ADC ya esta ahora tenemos que manejar el servo, como ya saben estos se manejan a una frecuencia de 50 o 60 hz. Un pulso mínimo para 0º de 0.5ms y un pulso máximo de 2.1ms.

Bien enfrente un poco de problemas para poderlo programar, el funcionamiento del programa es generar el primer pulso para posicionarlo a 0º, despues de ello vamos a generar 255 interrupciones en un intervalo de tiempo de 2.1ms (Máximo)- 0.5ms(Mínimo) que nos dio un retardo aproximado de 6us entre cada interrupcion, de esta manera podemos asignar el valor alto del adc directo al servo. Despues de estas 255 interrupciones generamos una de 17.9ms para completar el ciclo e iniciar de nuevo el pulso de inicio.
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 21 de Agosto de 2014, 15:29:04
Código: ASP
  1. LIST p=18F13K22
  2.         #INCLUDE <p18f13k22.inc>
  3.         CONFIG  FOSC    = IRC
  4.         CONFIG  PLLEN   = ON   
  5.         CONFIG  BOREN   = OFF
  6.         CONFIG  WDTEN   = OFF
  7.         CONFIG  MCLRE   = OFF
  8.         CONFIG  HFOFST  = OFF
  9.         CONFIG  LVP     = OFF
  10.         CONFIG  CP0     = ON
  11.         CONFIG  CP1     = ON
  12.         CONFIG  CPB     = OFF
  13.         CONFIG  CPD     = OFF
  14.         CONFIG  WRT0    = OFF
  15.         CONFIG  WRT1    = OFF
  16.         CONFIG  WRTB    = OFF
  17.         CONFIG  WRTD    = OFF
  18.         CONFIG  EBTR0   = OFF
  19.         CONFIG  EBTR1   = OFF
  20.         CONFIG  EBTRB   = OFF
  21.  
  22.         CBLOCK 0x000
  23.         VL
  24.         VH
  25.         VS
  26.         W_TEMP
  27.         STATUS_TEMP
  28.         BSR_TEMP
  29.         INTER
  30.         B1
  31.         ENDC
  32.  
  33.         ORG             0x00
  34.         GOTO    INICIO
  35.         ORG             0x008
  36. ;       GOTO BAJA
  37.         RETFIE;ALTA_PRIORIDAD
  38.         ORG             0x018
  39.         GOTO BAJA
  40.  
  41.         ;RETFIE
  42. #DEFINE SERVO1 PORTB,6
  43. VALORH  EQU     0XFF
  44. VALORL  EQU     0XCF
  45. ;**************************************************************
  46. INICIO
  47.         BSF             OSCCON,IRCF2    ;CONFIGURO EL OSCILADOR INTERNO
  48.         BSF             OSCCON,IRCF1    ;A 16MHZ
  49.         BSF             OSCCON,IRCF0
  50. ;
  51.         CLRF    SLRCON
  52.         CLRF    ANSEL                   ;CONFIGURAMOS TODOS LOS PINES
  53.         CLRF    ANSELH                  ;COMO I/O DIGITAL
  54.        
  55. ;CONFIGURACION DE LOS PUERTOS
  56.         CLRF    PORTA                                   ;PONGO TODAS LAS SALIDAS
  57.         CLRF    PORTB                                   ;EN NIVEL BAJO
  58.         CLRF    PORTC
  59.         CLRF    LATA
  60.         CLRF    LATB
  61.         CLRF    LATC
  62.         CLRF    TRISA                                   ;CONFGIRO LOS PUERTOS
  63.         CLRF    TRISB                                   ;COMO SALIDAS
  64.         CLRF    TRISC
  65. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  66.         BSF             RCON,7; DEFINIMOS INTERRUPCIONES COMO BAJA PRIORIDAD
  67.         CLRF    IPR1
  68.         CLRF    IPR2
  69.         CLRF    INTCON
  70.         BSF             PIE1,TMR1IE; ACTIVAMOS INTERRUPCION TMR1
  71.         CLRF    T1CON; CONFIGURAMOS EL TIMER 1 CON PREESCALER 1 Y DE 8 BITS
  72.         BSF             T1CON,7
  73.         CALL    CONF_ADC
  74.         CALL    INI_TMR
  75.         CLRF    VL
  76.         CLRF    VH
  77.         CLRF    VS
  78.         CLRF    B1; BANDERA DE AYUDA
  79.        
  80.         MOVLW   VALORH
  81.         MOVWF   TMR1H
  82.         MOVWF   VALORL
  83.         MOVWF   TMR1L
  84.         ; ANTES DE ENTRAR AL LOOP ACITVAMOS LAS INTERRUPCIONES Y TMR1
  85.         BCF             PIR1,TMR1IF; LIMPIAMOS BANDERA DE INTERRUPCION TMR1
  86.         CALL    SET_SERVO
  87.         BSF     T1CON,TMR1ON; ACTIVAMOS TMR0
  88.         BSF     INTCON,6
  89.         BSF             INTCON,7; HABILITAMOS INTERRUPCIONES
  90.         BSF     T1CON,7
  91.         CALL    CON_CH0
  92.         MOVFF   VH,VS
  93.         MOVLW   0XFF
  94.         MOVWF   INTER
  95. PRINCIPAL
  96.         CALL    CON_CH0
  97.         MOVFF   VH,PORTC
  98.         GOTO    PRINCIPAL
  99. CONF_ADC
  100.         MOVLW   B'00001110'; JUSTIFICADO A LA IZQUIERDA
  101.         MOVWF   ADCON2
  102.         CLRF    ADCON1
  103.         MOVLW   B'00000000'; VAMOS A SELECCIONAR EL ADC 0 Y HABILITAR EL PUERTO DE CONVERSIÓN
  104.         MOVWF   ADCON0
  105.         BSF             TRISA,0
  106.         BSF     ANSEL,ANS0              ;CONFIGURAMOS LA ENTRADA A0 PARA LEERLA
  107.         RETURN
  108. CON_CH0
  109.         BSF     ADCON0,ADON
  110.         BSF     ADCON0,GO
  111. PROCESO
  112.         BTFSC   ADCON0,GO
  113.         GOTO    PROCESO
  114.         MOVFF   ADRESH,VH
  115.         MOVFF   ADRESL,VL
  116.         RETURN         
  117. SET_SERVO
  118.         BSF     SERVO1
  119.         MOVLW   .9     
  120.         CALL    RET_X100us
  121.         RETURN 
  122. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ENTRA A VECTOR DE INTERRUPCION
  123. BAJA
  124.         MOVFF   W,W_TEMP
  125.         MOVFF   BSR,BSR_TEMP
  126.         MOVFF   STATUS,STATUS_TEMP
  127.         BTFSS   PIR1,TMR1IF
  128.         RETFIE
  129.         BTFSC   B1,0
  130.         GOTO    INTER17
  131.         BCF     T1CON,TMR1ON
  132.         BCF             PIR1,TMR1IF
  133.         MOVLW   VALORH
  134.         MOVWF   TMR1H
  135.         MOVLW   VALORL
  136.         MOVWF   TMR1L
  137.  
  138. ;       MOVF    VS,W
  139. ;       BTFSS   STATUS,Z
  140. ;       GOTO    $+2
  141. ;       GOTO    CLEAR_SERVO1
  142.  
  143.         DECFSZ  VS,F
  144.         GOTO    KEEP_SERVO1
  145. CLEAR_SERVO1
  146.         BSF             B1,1
  147.         BCF             SERVO1
  148. KEEP_SERVO1
  149.         MOVFF   W_TEMP,W
  150.         MOVFF   BSR_TEMP,BSR
  151.         MOVFF   STATUS_TEMP,STATUS
  152.         BSF     T1CON,TMR1ON
  153.         DECFSZ  INTER,F
  154.         RETFIE
  155.         BSF     PORTB,7
  156.         ;GENERAMOS AQUI LA INTERRUPCION DE 17.9ms
  157.         MOVLW   0X74
  158.         MOVWF   TMR1H
  159.         MOVLW   0X2F
  160.         MOVWF   TMR1L
  161.         BSF     T1CON,5
  162.         BSF             T1CON,4; PRENDEMOS PREESCALER DE 8
  163.         BSF     B1,0
  164.         BCF             SERVO1
  165.         RETFIE
  166. INTER17
  167.         CALL    SET_SERVO
  168.         MOVFF   VH,VS
  169.         BCF             B1,0
  170.         BCF             T1CON,5
  171.         BCF             T1CON,4
  172.         MOVLW   VALORH
  173.         MOVWF   TMR1H
  174.         MOVLW   VALORL
  175.         MOVWF   TMR1L
  176.         MOVFF   W_TEMP,W
  177.         MOVFF   BSR_TEMP,BSR
  178.         MOVFF   STATUS_TEMP,STATUS
  179.         RETFIE
  180.  
  181.        
  182. #INCLUDE<RET.INC>
  183.  
  184.         END
Título: Re: Practicas con el PIC18F13K22
Publicado por: Pinolillo16 en 21 de Agosto de 2014, 15:48:38
Aqui les platico que tuve muchos problemas para las interrupciones y fue hasta que limpie los dos bytes de interrupciones de alta prioridad