Você está na página 1de 4

;----------------------------------------------------------------------------------

-------------------------------------------
;Rutina de ejemplo para uso de arreglos para almacenamiento de datos en
memoria RAM. Esta memoria es de tipo VOLATIL y
;se borrar cuando se desenergize el MEC.
;
;Para este caso se presenta el uso del arreglo como herramienta de clculo
del filtro virtual.
;
;Aclaro que en este ejemplo slo se muestra la rutina para uso de arreglos
para almacenamiento
;pero el filtro estara por calcularse
;
; ing. edgar gmez acero
;----------------------------------------------------------------------------------
-------------------------------------------

list p=18F4550
include <p18F4550.inc>
; include <Configuration Bits.txt>
;----------------------------------------------------------------------------------
-------------------------------------------
;Defining Special Bits
;----------------------------------------------------------------------------------
-------------------------------------------
STATUSLED EQU 2
;----------------------------------------------------------------------------------
-------------------------------------------
;Defining General Registers (GPR)
;----------------------------------------------------------------------------------
-------------------------------------------
CBLOCK 0x00
COUNTER, FILTROVIRTUAL
WATERLEVEL_ARRAY : ;Instruccin para definicin del
WATERLEVEL ;arreglo. Las variables del arreglo se llaman
WATERLEVEL
ENDC

;----------------------------------------------------------------------------------
-------------------------------------------

ORG 00
GOTO Start
;----------------------------------------------------------------------------------
-------------------------------------------
;Main Program
;----------------------------------------------------------------------------------
-------------------------------------------
Start

CALL CONFIGURATION ;Configuration


routine

MAIN ;starts main program


BSF PORTA,STATUSLED ;Turn on Status led

;----------------------------------------------------------------------------------
-------------------------------------------
;Ejemplo de filtro virtual. Este dato es entrado por pantalla (teclado)
;----------------------------------------------------------------------------------
-------------------------------------------

MOVLW .5
MOVWF FILTROVIRTUAL

;---------
-----------------------------------------------------------------------------------
---------------------------------
;Para propsitos de validacin se prueba la rutina de almacenamiento de un grupo de
datos utilizando un contador que se inicia
;25. En este caso (ejemplo) se debern almacenar los datos que correspondan al
tamao del filtro virtual.
; Ejemplo No. 1: si el tamao del filtro virtual es cinco entonces se deben
almacenar los siguientes valores:
; 25, 26, 27, 28, 29
; Ejemplo No. 2: si el tamao del filtro vitual es 3 entonces se debem
almacenar los siguientes valores:
; 25, 26, 27
;----------------------------------------------------------------------------------
-------------------------------------------
MOVLW .37
MOVWF COUNTER
;----------------------------------------------------------------------------------
-------------------------------------------
;Esta es la rutina que permite el almacenamiento de datos en el arreglo. Se
utiliza la directiva WHILE
;Para el caso del sistema de control que est efectuando lecturas de una variable y
se desea aplicar un filtro virtual
;(en este ejemplo el filtro virtual entrado por pantalla es de 5) se debe tener
registro de cinco (5) lecturas para proceder
;al clculo de acuerdo a lo explicado en clase.
;
;Para efectos de la aplicacin de su filtro virtual en lugar de su contador
(COUNTER en el ejemplo) deberan hacer conversin A/D
;y los resultados de la conversin (ADRESH Y ADRESL) se debern almacenar en el
arreglo.
;----------------------------------------------------------------------------------
-------------------------------------------
VARIABLE i ;Define i como variable
i=0 ;Inicio del ciclo WHILE
WHILE i < 20 ;En este ejemplo el tamao mximo
del filtro es 20
;se puede trabajar un filtro mayor si se
quiere
;El tamao del filtro lo define la
variable FILTROVIRTUAL y deber
;entrar por pantalla (teclado)
MOVF COUNTER,W ;Este contador es para prueba
(ejemplo) de almacenamiento)
MOVWF WATERLEVEL + i ;Variable de almacenamiento
MOVF WATERLEVEL_ARRAY + i, W ;Almacena dato en arreglo
INCF COUNTER
DECF FILTROVIRTUAL ;Estas insrucciones son para
MOVLW .0 ;hacer que el almacenamiento sea
igual al
CPFSGT FILTROVIRTUAL ;tamao del
GOTO TASK0 ;filtro virtual
i+=1 ;Incrementa el ciclo WHILE de uno en uno
ENDW

;----------------------------------------------------------------------------------
-------------------------------------------
;COMPROBACIN DEL ALMACENAMIENTO DE DATOS EN EL ARREGLO (Se puede usar la ventana
WATCHES para simular)
;----------------------------------------------------------------------------------
-------------------------------------------
TASK0
MOVF WATERLEVEL + 0, w ;Verificacin del alamacenamiento
de datos
MOVF WATERLEVEL + 1, w
MOVF WATERLEVEL + 2, w
MOVF WATERLEVEL + 3, w
MOVF WATERLEVEL + 4, w

;----------------------------------------------------------------------------------
-------------------------------------------
;Tambin se puede emplear un ciclo WHILE para limpieza de variables. Este es un
ejemplo
;----------------------------------------------------------------------------------
-------------------------------------------

VARIABLE i ;Define i como variable


i=0 ;Inicio del ciclo WHILE
WHILE i < 20
CLRF WATERLEVEL + i ;LIMPIA LA VARIABLE DE
ALMACENAMIENTO
MOVF WATERLEVEL_ARRAY + i, W ;Almacena dato en arreglo
i+=1 ;Incrementa el ciclo WHILE de uno en uno
ENDW

MOVF WATERLEVEL + 0, w ;Verificacin de la LIMPIEZA de LAS


VARIABLES DEL ARREGLO de datos
MOVF WATERLEVEL + 1, w
MOVF WATERLEVEL + 2, w
MOVF WATERLEVEL + 3, w
MOVF WATERLEVEL + 4, w

;----------------------------------------------------------------------------------
-------------------------------------------

GOTO MAIN ;Continue

CONFIGURATION
;----------------------------------------------------------------------------------
-------------------------------------------
;Configuring Special Registers (SFR)
;----------------------------------------------------------------------------------
-------------------------------------------

CLRF PORTA
CLRF PORTB
CLRF PORTC
MOVLW B'00000010' ;RA1 inputs, others ouput
MOVWF TRISA
MOVLW B'00000000' ;PORTB all outputs
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
MOVLW B'00001111'
MOVWF ADCON1 ;All digital
MOVLW B'10000000'
MOVWF OSCTUNE
MOVLW B'01101111' ;Internal clock, 4 MHz
MOVWF OSCCON
CLRF UCON
CLRF UCFG

RETURN

END

Você também pode gostar