lunes, 20 de julio de 2009

programa para encender y apagar un led en PIC16f627 de Microchip (ASM)

;PROGRAMA SENCILLO PARA EMPEZAR A MANEJAR LOS PICS
;ENCIENDE Y APAGA UN LED CON RETARDO DE 1 SEGUNDO


#INCLUDE ;DECLARO LA LIBRERIA

CBLOCK 0X20 ;DECLARO MIS VARIABLES

NUM1,NUM2,NUM3 ;REGISTROS OCUPADOS EN LOS RETARDOS

ENDC

ORG 0X00 ;DECLARO INICIO DE LA ESCRITURA EN LA MEMORIA DE PROGRAMA

;C O N F I G U R A C I O N D E P U E R T O S
BSF STATUS,RP0 ;CAMBIO A BANCO 1
BCF TRISB,0; DECLARO PORTB,0 COMO SALIDA
BCF STATUS, RP0; CAMBIO A BANCO 0

;P R O G R A M A P R I N C I P A L
START ;ETIQUETA QUE MARCA EL INICIO DEL PROGRAMA PRINCIPAL
BSF PORTB,0 ;ENCIENDO EL LED
CALL RETARDO;LLAMO AL RETARDO
BCF PORTB,9;APAGO EL LED
CALL RETARDO ;LLAMO A RETARDO
GOTO START; CON EL SALTO VUELVE A EMPEZAR EL CODIGO

RETARDO:
MOVLW .10
MOVWF NUM3

OTRA2:
MOVLW .200
MOVWF NUM2

OTRA1:
MOVLW .166
MOVWF NUM1

OTRA:
DECFSZ NUM1,F
GOTO OTRA

DECFSZ NUM2,F
GOTO OTRA1

DECFSZ NUM3,F
GOTO OTRA2
RETURN
END;FIN DE PROGRAMA

;***********************
; I N F O
;Los punto y coma significan, inicio de comentarios
;descripcion de los registros
;PORTB registro del microcontrolador a travez del
;cual, se tiene acceso a los pines del microcontrolador
;TRISB registro del microcontrolador que configura
;como entrada o salida los pines correspondientes
;STATUS registro del microcontrolador que en este caso
;nos sirve para poder cambiar de banco y configurar
; los pines del micro

;este es un ejemplo muy simple,
;para ayudar a quien necesite irle perdiendo el
;miedo a los microcontroladores

;Cualquier duda, quedamos a sus ordenes.

3 comentarios:

  1. puedo usar este mismo código en el pic 18f4550? o que modificaciones debo hacerle? de antemano gracias

    ResponderEliminar
  2. Hola, que tal?

    El pic18f4550 pertenece a una familia diferente de microcontroladores.

    Si se puede usar, pero no es directo, ya que en el 4550 necesitas usar otra palabra de configuración, declarar en otra parte los registros de propósito general, en el pic18 ya no necesitas cambiar de banco, etc.

    Saludos!

    ResponderEliminar
  3. ;P R O G R A M A P R I N C I P A L
    START ;ETIQUETA QUE MARCA EL INICIO DEL PROGRAMA PRINCIPAL
    BSF PORTB,0 ;ENCIENDO EL LED
    CALL RETARDO ;LLAMO AL RETARDO
    BCF PORTB,9 ;APAGO EL LED, debería ser 0?
    CALL RETARDO ;LLAMO A RETARDO
    GOTO START ; CON EL SALTO VUELVE A EMPEZAR EL CODIGO

    ResponderEliminar