• Sábado 16 de Noviembre de 2024, 23:25

Autor Tema:  Una Orientacion a Principiante  (Leído 1328 veces)

frnaco_0610

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Una Orientacion a Principiante
« en: Viernes 29 de Octubre de 2004, 16:03 »
0
este es un pequño ejemplo de hacer parpadear un led con un retardo de 1 seg pero no comete su objetivo el led se vuelve intermitente y quisiera saber que estoy haciendo mal, ahora que configuracion debo hacer en el epicwin para poder utilizar un cristal de 20Mhz
   List P=16F877A
   Include "P16F877A.INC"

PDel0   EQU   0x20
PDel1   EQU   0x21
PDel2   EQU   0x22

#Define   BANCO_H   bsf   STATUS,RP1
#Define   BANCO_L   bcf   STATUS,RP1
#Define   BANCO1   bsf   STATUS,RP0
#Define   BANCO0   bcf   STATUS,RP0


#Define   BAUD   D'100'            ; Baud Rate Deseada en kbps
#Define   FOSC   D'4000'            ; Frecuencia del oscillator en kHz

   __config      (_CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC)
 ;)  ;) no se que significa esto alguien puede ayudarme?????????
      org      0
      
      goto   INICIO
;************************************************************************************************
;               PROGRAMA PRINCIPAL
;************************************************************************************************
INICIO   BANCO_L
      BANCO1
      MOVLW   B'00000111'   
      MOVWF   ADCON1      ;SELECIONO LA OPCION DE E/S DIGITALES
      CLRF   TRISA      ;PORTA SON SALIDAS
      
      BANCO0
      CLRF   PORTA
   BUCLE   BSF   PORTA,0
      CALL   DEMORA
      BCF   PORTA,0
      CALL   DEMORA
                                GOTO        BUCLE

DEMORA  movlw     .14       ; 1 set numero de repeticion  ©
        movwf     PDel0     ; 1 |
PLoop0  movlw     .72       ; 1 set numero de repeticion  (B)
        movwf     PDel1     ; 1 |
PLoop1  movlw     .247      ; 1 set numero de repeticion  (A)
        movwf     PDel2     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        decfsz    PDel2, 1  ; 1 + (1) es el tiempo 0  ? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel1,  1 ; 1 + (1) es el tiempo 0  ? (B)
        goto      PLoop1    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) es el tiempo 0  ? ©
        goto      PLoop0    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 ciclos delay
PDelL2  clrwdt              ; 1 ciclo delay
        return              ; 2+2 Fin.
      
   

      END

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Una Orientacion a Principiante
« Respuesta #1 en: Sábado 30 de Octubre de 2004, 00:12 »
0
Código: Text
  1. __config (_CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC)
  2.  

   Esta es la configuracion para el grabado del programa en el PIC... es lo mismo que configurar el programa con el que grabaras... aqui tienes codigo de proteccion, perro guardian, escritura en eeprom, tipo de oscilador.. etc...

   Si el led se vuelve intermitente es porque los tiempo no son de un segundo... para hacer que el programa funcione a 20Mhz, solo debes variar los retardos y hacerlos mas largos... ya que en 4Mhz cada ciclo de instruccion demora 400ns (4 ciclos de reloj de 100ns) y a 20Mhz demora 50ns. Espero haberte sido de ayuda. Me dices tus dudas. Saludos! :hola:

PD: hace mucho, en este foro, deje un programita para generar retardos... eso te podria ser muy util.
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»