TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: aiioli en 08 de Octubre de 2008, 05:26:01

Título: Led con pic 16f886
Publicado por: aiioli en 08 de Octubre de 2008, 05:26:01
alguien tiene el mitico "hello world" para micros para el pic 16f886?

necesito un buen ejemplo en assembler con este pic con un led conectado al pin 14 (RC3). que parpadee cada x tiempo (unos 500ms)

alguien me ayuda?
Título: Re: Led con pic 16f886
Publicado por: jonruiz en 09 de Octubre de 2008, 06:42:36
aiioli..... para aprender assembler, y con un ejemplo tan sencillo como un led parpadeante, es mucho mejor que lo hagas sólo.
poco a poco. vete escribiendo el codigo desde el principio y simulalo viendo los registros para que compruebes como van cambiando, etc...

aqui ademas encontrarás un programa muy muy similar. Lo he modificado un poco para que lo apliques con tu pic 16f886, ya que en el ejemplo hay instrucciones que no corresponden con pic (ddrb,....).

aqui lo tienes, no tienes mas que copiarlo, ensamblarlo y probarlo con tu pic.
pero lo dicho: mejor empezar tu solito...

un saludo!


*******************************


   list P=16F886 ; indicamos el modelo de PIC que tenemos

#include "P16F886.inc"
__CONFIG _CONFIG1, _MCLRE_OFF & _PWRTE_ON & _LVP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _FCMEN_OFF & _IESO_OFF
; registros


; constantes del programa

TIEMPO  equ 0x30   ; posicion de memoria
;TICKS   equ 20     ; Ticks entre parpadeo


#define K_TICKS .20

   org 0


; Accedemos al segundo banco de RAM de Datos
   
   bsf   STATUS,RP0   

; Configuración puertos

   movlw   0
   movwf   TRISC  ;
; configuracion del timer

   movlw   b'01010111'  ; divisor = 256, timer
   movwf   OPTION_REG

; Accedemos al primer banco de RAM

   bcf   STATUS,RP0

; Pongo a cero el puerto C
   clrf   PORTC

; empieza el programa principal
 
inicio
   bsf      PORTC,3 ; enciende led
   call    pausa
   bcf     PORTC,3 ; apaga led
   call    pausa
   goto    inicio


; RUTINA DE ESPERA
pausa
   movlw   K_TICKS      ; tiempo_espera = TICKs * t_tic
   movwf   TIEMPO     ; guarda valor en memoria   
otro_tic
   movlw   0xB2
   movwf   TMR0       ; t_tic = 20 mseg    
sigue   
   clrwdt
   btfss   INTCON,2   ; ¿desbordamiento ?
   goto   sigue      ; no
    bcf      INTCON,2   ; si -> repongo flag
   decfsz   TIEMPO,1
   goto    otro_tic   
   return     

   END
Título: Re: Led con pic 16f886
Publicado por: RedPic en 09 de Octubre de 2008, 07:59:06
¡Uy! Doble personalidad contestándose a si mismo.  :5]
Título: Re: Led con pic 16f886
Publicado por: Nocturno en 09 de Octubre de 2008, 08:03:20
Jaja, no sólo se contesta, sino que encima se regaña
Título: Re: Led con pic 16f886
Publicado por: pocher en 11 de Octubre de 2008, 02:01:45
Ja, ja, ja ... que me troncho.
Título: Re: Led con pic 16f886
Publicado por: maunix en 20 de Octubre de 2008, 09:55:08
Jaja, no sólo se contesta, sino que encima se regaña

 :D :D :D :D :D