Leds - Assembler

Páginas: 5 (1098 palabras) Publicado: 24 de octubre de 2013
Código fuente del programa
Quizá el programa éste, que solo enciende un LED, sea una trivialidad, pero no te confíes. Los µCs no entienden nuestro lenguaje humano y hay que aprender a hablarles en el suyo. Eso, como cualquier idioma nuevo, nos tomará un poquito de tiempo. Así que no te vayas a echar para atrás cuando veas el programa ni cuando leas la enorme explicación del mismo.;****************************************************************************
; FileName: BlinkLed.asm
;****************************************************************************
list p = PIC16F84A ; Seleccionar procesador
#include "P16F84A.inc" ; incluir archivo P16F84A.inc
__config _PWRTE_ON & _WDT_OFF & _XT_OSC & _CP_OFF

cont1 equ 0x0C; Ubicar cont1 en dirección 0x0C
cont2 equ 0x0D ; Ubicar cont2 en dirección 0x0D

org 0x00 ; Código ejecutable empieza aquí
Start ; Iniciar
bsf STATUS, RP0 ; RP0 = 1. Cambiar al Banco 1
bcf TRISB, 0 ; Configurar pin RB0 como salida
bcf STATUS, RP0 ; RP0 = 0. Cambiar alBanco 0
MLoop ; Bucle principal
bsf PORTB, 0 ; Prender el led
call pausa ; Llamar pausa
bcf PORTB, 0 ; Apagar el led
call pausa ; Llamar pausa
goto MLoop ; Saltar a MLoop




;****************************************************************************
;Subrutina pausa. Genera 325 milisegundos aprox.
pausa
movlw d'100' ; Mover 100 a W
movwf cont1 ; Mover W a cont1 (cargar cont1)
movlw d'255' ; Mover 255 a W
movwf cont2 ; Mover W a cont2 (cargar cont2)
loop1
decfsz cont1, f ; decrementar cont1, saltear si da 0
goto loop2 ; saltar aloop2
decfsz cont2, f ; decrementar cont2, saltear si da 0
loop2 goto loop1 ; saltar a loop1
return ; retornar de subrutina

end ; Fin del código
Descripción del programa
Antes de nada, asumiré que jamás en tu vida viste un programa como éste. Así que lo explicaré como para un bebé.
El programa se componebásicamente por directivas, instrucciones y comentarios. Las directivas le dan alguna orden al ensamblador para realizar su trabajo. En este código aparecen en color azul. Las instrucciones son el verdadero código ejecutable y sus nombres aquí se muestran en marrón. Un comentario es el texto decorativo que sigue a un punto y coma (;) y aparece de color verde. El siguiente capítulo describe mejorestos conceptos.
La primera línea significativa es una directiva que le dice al ensamblador que estamos haciendo un programa para el PIC16F84A.
list p = PIC16F84A ; Seleccionar procesador
La siguiente línea es una directiva para decirle al ensamblador que incluya el archivo de dispositivo P16F84A.inc como parte del código. Allí se encuentran los nombres de los registros, de los fusesde configuración, etc., del PIC usado. El ensamblador sabe dónde buscarlo.
#include ; incluir archivo P16F84A.inc
Lo que sigue es la directiva para poner los Fuses de Configuración. Ya los conocimos en el capítulo anterior, así que no diré mucho. Solo nota que no era necesario añadir el _CP_OFF porque es la opción por defecto de ese fuse.
__config _PWRTE_ON & _WDT_OFF &_XT_OSC & _CP_OFF
Luego tenemos dos directivas más. Sirven para nombrar con cont1 y cont2 a los registros GPR de las direcciones 0x0C y 0x0D. Se usan esas direcciones porque son los primeros registros GPR del PIC16F84A. Pueden ser otros, siempre que estén en el área de los GPR.


cont1 equ 0x0C ; Ubicar cont1 en dirección 0x0C
cont2 equ 0x0D ; Ubicar cont2 en...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Assembler
  • Assembler
  • Assembler
  • assembler
  • Leds
  • Leds
  • leds
  • Leds

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS