Este programa pretende destacar el uso de las siguientes instrucciones:
- OPTION: Registro de configuración.
- IORWF: Operación lógica OR.
- XORWF: Operación lógica XOR.
- NOP: Instrucción que no tiene ninguna función, consume 1 ciclo de reloj.
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: Ejemplo5.asm *
; Date: 11-Julio-08 *
; File Version: vs0.0 *
; *
; Author: Manuel Caballero *
; Company: Hades *
; *
; *
;**********************************************************************
; *
; Files Required: P10F206.INC *
; *
;**********************************************************************
; *
; Notes: En este programa, se muestra la utilización de las *
; instrucciones OPTION, iorwf, xorwf y nop. *
;**********************************************************************
list p=10F206 ; Directiva para definir el procesador
#include < p10F206.inc > ; Registros especificas del procesador
__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _IntRC_OSC
; _MCLRE_ON: Reset externo ACTIVADO.
; _CP_OFF: Protección del código DESACTIVADO.
; _WDT_OFF: Watchdog DESACTIVADO.
; _IntRC_OSC: Oscilador interno de 4MHz.
;***** DEFINICIÓN DE VARIABLES
; Ninguna para este programa
;**********************************************************************
ORG 0x01FF ; Valor del oscilador interno
; 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 0x0000 ; Inicio de código
movwf OSCCAL ; Actualiza el valor del oscilador interno a 4MHz
bcf CMCON0,CMPON ; Comparador Off
clrf GPIO
movlw b'11011111'
OPTION ; GP2 pin I/0
clrw
TRIS GPIO ; GPI0-GP2 pin salida
movlw d'7'
Inicio
iorwf GPIO,F ; GPI0-GP2 ON
nop
xorwf GPIO,F ; GPI0-GP2 OFF
goto Inicio
END ; directiva 'fin de programa'
Para ver el resultado, compilamos el código y seleccionamos el MPLAB SIM para poder simularlo.
Abrimos la ventana de Special Function Registers para controlar los registros OPTION_REG, WREG, TRISIO, GPIO y CMCON0.
Simulamos el código paso a paso.
Este microcontrolador tiene 4 pines que pueden actuar como entrada o salida, de los cuales tres de ellos, GP0, GP1 y GP2, pueden ser configurados tanto de entrada como de salida, mientras que el pin GP3 sólo puede ser usado como pin de entrada.
Lo que pretende este programa, es usar dichos los pines GP0, GP1 y GP2 como salida digitales, para ello, deben ser configurados previamente.
El registro CMCON0 es el encargado, entre otras cosas, del comparador que tiene este microcontrolador, inicialmente, dicho comparador está activo sirviéndose de los pines del microcontrolador.
Por lo tanto, el primer paso será desactivar dicho comparador, para ello está la siguiente instrucción:
bcf CMCON0,CMPON
Donde se pone a cero el bit CMPON para desactivar el comparador.
El siguiente paso es desactivar que la transición del Timer que dispone el microcontrolador sea vía GP2.
Para ello, se debe desactivar, ya que al inicio está activado.
movlw b'11011111'
OPTION................
Una vez configurados los registros para que el periférico a usar sea de entrada o salida digitales, se pasa a configurarlos para que sean de salidas. Eso se realiza mediante la instrucción siguiente:
TRIS GPIO
Donde un '0' significa pin de salida y un '1' significa pin de entrada.
Una vez configurado todo, se pasa a encender los pines GP0, GP1 y GP2 y a apagarlos continuamente, es decir, a poner a '1' dichos pines y a ponerlos a '0'.
Para ponerlos a '1', se utiliza la siguiente instrucción:
iorwf GPIO,F
Posteriormente, se ejecutará una instrucción que no tiene ninguna función, excepto que consume un ciclo de reloj.
nop
En este caso, el reloj es de 4MHz, por lo tanto, la instrucción consumirá 1us.
Y por último, se pretende apagar o poner a cero nuevamente los pines del microcontrolador, para ello, se usa la siguiente instrucción:
xorwf GPIO,F
Se puede observar en el siguiente vídeo todo lo explicado anteriormente:
Este proyecto se puede descargar en la siguiente dirección:
Ejemplo 5. | ||
Ejemplo 5. |
0 comentarios:
Publicar un comentario