Este programa consiste en familiarizarnos más con el diseño de subrutinas en lenguaje ensamblador.
En este programa, se centrará en manejar las siguientes instrucciones:
- CALL.
- NOP.
Para la realización de este programa, se ha utilizado el microcontrolador PIC16F77, cuyas características expuestas por Microchip, se pueden observar en la siguiente dirección: PIC16F77.
El programa es el siguiente:
;**********************************************************************
;                      AqueronteBlog@gmail.com                        *
;                                                                     *
;   Este archivo es propiedad intelectual del blog Aqueronte,         *
;   cuya dirección web, es la siguiente:                              *
;                                                                     *
;                   http://unbarquero.blogspot.com/                   *
;                                                                     *
;   Se permite cualquier modificación del archivo siempre y cuando    *
;   se mantenga la autoría del autor.                                 *
;                                                                     *
;   El autor no se responsabiliza de las consecuencias que pueda      *
;   ocasionar éste código debido a un uso inadecuado del mismo.       *
;**********************************************************************
;                                                                     *
;    Filename:      Ejemplo9.asm                                      *
;    Date:          20-Octubre-08                                     *
;    File Version:  vs0.0                                             *
;                                                                     *
;    Author:        Manuel Caballero                                  *
;    Company:       Hades                                             *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Files Required: P16F77.INC                                       *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Notes: Crear y usar una subrutina.                               *
;                                                                     *
;**********************************************************************
   list      p=16F77               ; Directiva para definir el procesador
   #include < p16F77.inc >         ; Registros especificas del procesador
   __CONFIG   _BODEN_OFF & _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
; _BODEN_OFF:   Reset por Brown-out DESACTIVADO.
; _CP_OFF:      Protección de código DESACTIVADO.
; _PWRTE_ON:    Retraso al reset ACTIVADO.
; _WDT_OFF:     Watchdog DESACTIVADO.
; _XT_OSC:      Oscilador externo del tipo XT.
;***** DEFINICIÓN DE VARIABLES
; Ninguna variable es usada para este programa
;**********************************************************************
       ORG     0x0000      ; Inicio de código
       goto    Inicio      ; Salta a programa principal
       ORG     0x0004      ; Vector de Interrupción
; El vector de interrupción se encuentra en la dirección 0x0004
; En este ejemplo no se usará interrupciones.
       retfie
Inicio
       nop
       call    Subrutina     ; Llamada a la Subrutina
       sleep                 ; uC entra en modo Sleep
       goto    Inicio        ; Vuelve a Inicio
;**********************************************************************
;                                                                     *
;    Subrutina: Subrutina                                             *
;                                                                     *
;**********************************************************************
;                                                                     *
;    Date:         20-Octubre-08                                      *
;    File Version: vs0.0                                              *
;                                                                     *
;    Author:       Manuel Caballero                                   *
;    Company:      Hades                                              *
;                                                                     *
;**********************************************************************
;                                                                     * 
;  NOTAS: Carga un literal al registro de trabajo W                   *
;                                                                     *
;  Datos de Salida:                                                   *
;     · W                                                             *
;                                                                     *
;**********************************************************************
Subrutina
        nop
       nop
 
       retlw    d'15'        ; Fin de subrutina: 15 -> (W)
       END                   ; directiva 'fin de programa'
En este programa se muestra como se diseña y se usa una subrutina simple, pero esta vez, la instrucción de fin de subrutina carga un literal al registro W.
Para ver el resultado, compilamos el código y seleccionamos el MPLAB SIM para poder simularlo.
Abrimos la ventana de Watch y seleccionamos en la categoría de SFR, el registro WREG.
Simulamos el código paso a paso.
El propósito de este programa es diseñar una subrutina cuya función sea cargar un literal en el registro de trabajo W cuando salga de la subrutina, posteriormente el microcontrolador entrará en modo de bajo consumo, denominado Sleep.
Se puede observar en el siguiente vídeo todo lo explicado anteriormente:
Este proyecto se puede descargar en la siguiente dirección:
|  |  | Ejemplo 9. | 
|  |  | Ejemplo 9. | 
 
 








0 comentarios:
Publicar un comentario