martes, 8 de julio de 2008

Baseline. ProgBasico 1.

Este primer programa consiste en utilizar la instrucción de suma, concretamente la instrucción:

addwf f, d

La estructura de dicha instrucción se puede encontrar en el siguiente enlace: ADDWF f, d.

Para la realización de este programa, se ha utilizado el microcontrolador PIC10F222, cuyas características expuestas por Microchip, se pueden observar en la siguiente dirección: PIC10F222.

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 veracidad de su autor. *
; *
; El autor no se responsabiliza de las consecuencias que pueda *
; ocasionar éste código debido a un uso inadecuado del mismo. *
;**********************************************************************
; *
; Filename: Suma.asm *
; Date: 08-Julio-08 *
; File Version: vs0.0 *
; *
; Author: Manuel Caballero *
; Company: Hades *
; *
; *
;**********************************************************************
; *
; Files Required: P10F222.INC *
; *
;**********************************************************************
; *
; Notes: Incremento del contenido de W *
; *
;**********************************************************************

list p=10F222 ; Directiva para definir el procesador
#include < p10F222.inc > ; Registros especificas del procesador

__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _MCPU_OFF & _IOFSCS_4MHZ

; _MCLRE_ON: Reset externo ACTIVADO.
; _CP_OFF: Protección del código DESACTIVADO.
; _WDT_OFF: Watchdog DESACTIVADO.
; _MCPU_OFF: Resistencias de Pull-Up DESACTIVADO.
; _IOFSCS_4MHZ: Oscilador interno de 4MHz.

;***** DEFINICIÓN DE VARIABLES
cblock 09h ; Inicio RAM
Numero
endc

;**********************************************************************
ORG 0xFF ; Vector de reset

; El valor del oscilador interno se localiza en la dirección 0xFF
; como una instrucción movlw k, donde k es el valor de configuración del oscilador.

ORG 0x000 ; Inicio de código
movwf OSCCAL ; Actualiza el valor del oscilador interno

movlw d'1'
movwf Numero

Inicio
addwf Numero, W ; (Numero) + (W) -> (W)
goto Inicio


END ; directiva 'fin de programa'

Para el incremento del registro de trabajo W, se ha definido una variable en memoria RAM, se ha utilizado las instrucciones:

cblock------endc

Las cuales sirven para definir el espacio de memoria RAM del microcontrolador, en este caso, el inicio para el PIC10F222 es la dirección 0x09.

Dicha variable temporal, se ha llamado Numero, la cual se cargará posteriormente con el valor que se quiera incrementar el registro W:

(W) + (Numero) -> (W)

En este caso, se va incrementar en una unidad cada vez, por lo que se inicializa la variable Numero con el valor 1.

(W) + 1 -> (W)

Y se realiza la operación de suma, de forma continua, en un bucle infinito.



Para ver el resultado, compilamos el código y seleccionamos el MPLAB SIM para poder simularlo.

Abrimos la ventana de Special Function Registers para poder visualizar los cambios en los registros especiales del microcontrolador, en este caso, el que nos interesa es el registro de trabajo W, que se denomina en dicha ventana como WREG.



Realizando la simulación paso a paso, veremos como el registro de trabajo W se irá incrementando cada vez que se realice la instrucción:

addwf Numero, W



Se puede observar en el siguiente vídeo todo lo explicado anteriormente:





Este proyecto se puede descargar en la siguiente dirección:

Suma.
Suma.

0 comentarios: