Está en la página 1de 7

*************************************Histograma**********************************

Representa la frecuencia en la que aparece un dato entre ciertos rangos indicados ( 00- 9F)
ORG $5050 TABLA00:FCB $01,$03,$15,$33,$05,$16,$17,$18,$29,$2A,$22,$4C,$4D,$4E,$6F,$50,$91,$58,$62,$94,$93,$58,$72,$86,$46,$47,$48,$12, $4D,$4E,$74 ORG $5078 Entry: _Startup: LDS #RAMEnd+1 ; initialize the stack pointer CLI ; enable interrupts

LDX #TABLA00 CONT1: EQU $5070 MOVB #0 , CONT1 CONT2: EQU $5071 MOVB #0 , CONT2 CONT3: EQU $5072 MOVB #0 , CONT3 CONT4: EQU $5073 MOVB #0 , CONT4 CONT5: EQU $5074 MOVB #0 , CONT5 CONT6: EQU $5075 MOVB #0 , CONT6 CONT7: EQU $5076 MOVB #0 , CONT7 CONT8: EQU $5077 MOVB #0 , CONT8 CONT9: EQU $5078 MOVB #0 , CONT9 CONTA: EQU $5079 MOVB #0 , CONTA ; Indica direcciones para los contadores y se inicializan con cero . CLAS1: CPX #$506F; compara X con el valor de 506e hex LBEQ FINAL; si z=1 brinca a la etiqueta final LDAA X; carga el acumulador A con el valor de X. CMPA #$10; compara A con 10 hex BCC CLAS2; brinca a CLAS2 si el bit c del ccr esta en cero , C=0 INC CONT1; incrementa CONT1 en uno INX; incrementa X LDAA X; carga al registro A el valor de X BCS CLAS1; si el bit c del ccr esta en uno salta a CLAS1 CLAS2: CMPA #$20; compara X con 20 hex BCC; brinca a CLAS3 si el bit c del ccr esta en cero , C=0 INC; CONT2; incrementa CONT2 en uno INX; incrementa X LDAA X; carga al registro A el valor de X BCS CLAS1; si el bit c del ccr esta en uno salta a CLAS1 CLAS3: CMPA #$30; compara X con 30 hex BCC CLAS4; brinca a CLAS4 si el bit c del ccr esta en cero , C=0 INC CONT3; incrementa CONT3 en uno INX; incrementa X LDAA X; carga al registro A el valor de X BCS CLAS1; si el bit c del ccr esta en uno salta a CLAS1 CLAS4: CMPA #$40; compara X con 40 hex BCC CLAS5; brinca a CLAS5 si el bit c del ccr esta en cero , C=0

INC CONT4; incrementa CONT4 en uno INX; incrementa X LDAA X; carga al registro A el valor de X BCS CLAS1; si el bit c del ccr esta en uno salta a CLAS1 CLAS5: CMPA #$50; compara X con 50 hex BCC CLAS6; brinca a CLAS6 si el bit c del ccr esta en cero , C=0 INC CONT5; incrementa CONT5 en uno INX ; incrementa X LDAA X; carga al registro A el valor de X BCS CLAS1; si el bit c del ccr esta en uno salta a CLAS1 CLAS6: CMPA #$60; compara X con 60 hex BCC CLAS7; brinca a CLAS7 si el bit c del ccr esta en cero C=0 INC CONT6; incrementa CONT6 en uno INX LDAA X BCS CLAS5; si el bit c del ccr esta en uno salta a CLAS5 CLAS7: CMPA #$70; compara X con 70 hex BCC CLAS8; brinca a CLAS8 si el bit c del ccr esta en cero C=0 INC CONT7; incrementa CONT7 en uno INX LDAA X BCS CLAS5 ; si el bit c del ccr esta en uno salta a CLAS5 CLAS8: CMPA #$80; compara X con 80 hex BCC CLAS9; brinca a CLAS9 si el bit c del ccr esta en cero C=0 INC CONT8; incrementa CONT8en uno INX LDAA X BCS CLAS5; si el bit c del ccr esta en uno salta a CLAS5 CLAS9: CMPA #$90; compara X con 90 hex BCC CLASA; brinca a CLASA si el bit c del ccr esta en cero C=0 INC CONT9; incrementa CONT9 en uno INX LDAA X BCS CLAS5; si el bit c del ccr esta en uno salta a CLAS5 CLASA: CMPA #$A0; compara X con A0 hex INC CONTA; incrementa CONTA en uno INX LDAA X BCS CLAS6; si el bit c del ccr esta en uno salta a CLAS6 FINAL: END

En las siguientes imgenes podemos ver el resultado de nuestro histograma.

*******************************************Ordenamiento de datos***************************************** Ordenar datos de una tabla ya sea de mayor a menor o de menor a mayor
ORG $3800 TABLA: fcb $1,$6,$3,$5,$8,$7,$4,$9,$2,$A,$C,$B,$E,$F,$D CONTA: EQU $3814 ; code section ORG ROMStart Entry: _Startup: LDS #RAMEnd+1 CLI

; initialize the stack pointer

; enable interrupts

LDY #15 ; CONTADOR GLOBAL VUELTA: LDX #TABLA+1; CARGA X CON EL VALOR DE DIRECCION DE LA TABLA MAS UNO LDAA #14 ; CONTADOR DE COMPARACION STAA CONTA; GUARDA EL VALOR DE A EN CONTA

RUTINA: LDAA 1,X+; CARGA A CON EL VALOR DE LA DIRECCION INDICADA POR X , E INCREMENTA X.

CMPA -2,X; COMPARA A CON EL VALOR DE X-2 BLE ORDENAR; SI ES MENOR QUE O IGUAL A CERO BIRNCA A LA ETIQUETA INDICADA DEC CONTA; DECREMENTA EL CONTADOR BNE RUTINA; SI Z=0 BIRNCA A RUTINA DBNE Y, VUELTA ; DECREMENTA Y SALTA A VUELTA

ORDENAR: BSR ORDEN ; BIRNCA A SUBRUTINA ORDEN DEC CONTA; DECREMENTA EL CONTADOR BNE RUTINA ;SI Z=0 BIRNCA A RUTINA DBNE Y, VUELTA; DECREMENTA Y SALTA A VUELTA ORDEN: LDAB -2, X; CARGA B CON EL VALOR DE X-2 STAA -2, X; GUARDA EL VALOR DE A EN LA DIRECCION DE X-2 STAB -1, X; GUARDA EL VALOR DE B EN LA DIRECCION X-1 RTS ; REGRESA A LA INSTRUCCION SIGUIENTE DESPUES DEL SALTO A SUBRUTINA

Esta imagen muestra nuestra tabla ordenada , de manera ascendente , para acomodarla de mayor a menor solamente se cambia la instruccin BLE por la instruccin BGE, que brinca si es mayor o igual a cero,

*******************Suma de dos tablas, suma de dos nmeros de 16 bytes, suma BCD , corrimiento de una tabla y bsqueda de un dato ***************************************
ORG $5050; se inicializa la memoria en esta direccin TABLA1: FCB $01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F,$00 TABLA2: FCB $45,$56,$32,$67,$53,$11,$21,$33,$11,$38,$72,$22,$18,$87,$55,$21 TABLA3: FCB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

TABLA4: FCB 10,23,42,45,99,34,32,78,11,13,14,15,15,34,34,34 TABLA5: FCB 29,35,56,32,56,23,21,12,21,23,34,54,67,51,11,11 TABLA6: FCB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

TABLA7: FCB 1,2,3,4,5,6,7,8,9,1,3,4,5,6,5,1 TABLA8: FCB 2,4,6,8,2,3,2,1,7,3,1,9,9,1,7,9 TABLA9: FCB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

TABLA10:FCB $01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F,$00,$11,$02,$21,$04

TABLA11:FCB $01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F,$00,$11,$02,$21,$04

; Se declaran las tablas a utilizar ; code section ORG ROMStart Entry: _Startup: LDS #RAMEnd+1 CLI

; initialize the stack pointer

; enable interrupts

;***********************SUMA DE 2 TABLAS ****************************** LDAB #16 ; REGISTRO B COMO CONTADOR LDX #TABLA1+15; Carga X con el valor de la direccin de la tabla1 mas 15 espacios. LDY #TABLA2+15; Carga Y con el valor de la direccin de la tabla2 mas 15 espacios.

SUMA: LDAA 1, X-; Carga A con el ultimo valor de la tabla y despus Decrementa X para sumar el ; Siguiente valor.

ADDA 1, Y-; Aade al registro A el valor de apuntado Y , despus Decrementa Y para sumar el ; Siguiente dato.

STAA $21, X; Guarda el contenido de A en la direccin de memoria de X mas un offset de 33 lugares ; (TABLA3)

DECB ; Decrementa el contador ; BNE SUMA; Salta a la etiqueta SUMA, mientras Z=0 , mientras el contador no llegue a cero .

;***********************SUMA DE 80 BITS COMO UN SOLO NUMERO ****************************** CLC; Se limpia el bit de carrier. LDAB #16 ; REGISTRO B COMO CONTADOR LDX #TABLA4+15; Carga X con el valor de la direccin de la tabla4 mas 15 espacios. LDY #TABLA5+15; Carga Y con el valor de la direccin de la tabla5 mas 15 espacios.

SUMA1: LDAA 1, X-; Carga A con el ultimo valor de la tabla y despus Decrementa X para sumar el ; Siguiente valor.

ADCA 1, Y-; Aade el contenido del registro A al contenido de la locacin de memoria apuntada por ; Y, aade tambin el valor del carrier y el resultado lo guarda en A. Despus ; : Decrementa Y para sumar el siguiente valor.

STAA $21, X; Guarda el contenido de A en la locacin de memoria indicada. DECB; Decrementa B que esta siendo usado como contador,

BNE SUMA1; salta a la etiqueta suma hasta que el decremento sea cero, (Z=1).

;************************SUMA DE BCD ************************************************************* CLC; Se limpia el bit del carrier del CCR. LDAB #15 ; REGISTRO B COMO CONTADOR. LDX #TABLA7+15; Carga X con el valor de la direccin de la tabla7 mas 15 espacios. LDY #TABLA8+15; Carga X con el valor de la direccin de la tabla8 mas 15 espacios.

SUMA2: LDAA 1, X-; Carga A con el ultimo valor de la tabla y despus Decrementa X para sumar el ; Siguiente valor.

ADDA 1, Y-; Aade al registro A el valor de apuntado Y, despus Decrementa Y para sumar el ; Siguiente dato.

DAA; Ajusta el contenido del acumulador A y el estado del carrier para representarlo de manera ; BCD.

STAA $21, X; Guarda el contenido de A en la locacin de memoria indicada.

DECB; Decrementa el contador BNE SUMA2; Brinca a la etiqueta suma mientras el contador no sea cero. Z=0.

;***********************CORRIMIENTO ************************************************ CLRA; Se limpia el registro A CLC; Se limpia el bit C del CCR. LDAA #20; se carga el registro A con el valor de 20 dec , como contador LDX #TABLA10; Se carga X con la direccin de la TABLA10

AQUI: ROR X; recorre todos los bits de la locacin de memoria de X, un lugar a la derecha, el bit 7 es ; cargado con el estatus del carrier, el bit c es cargado con el valor del bit 0.

INX; Incrementa X, para recorrer la siguiente posicin de memoria. DECA; Decrementa A. BNE AQU; Salta al a etiqueta indicada hasta que la bandera Z del CCR sea uno (Z=1).

;***********************BUSQUEDA DE UN DATO EN UNA TBALA ****************************** CLC; Se limpia el bit C. CLRB; Se limpia el registro B.

LDX #TABLA11; Carga X con el valor de la direccin LDAA #$21; Carga A con el valor del cual se quiere encontrar la direccin. AQUI2: CMPA 0, X; Compara A con el valor apuntado por X.

......ESCANENADO. BEQ GUARDAR; Si Z=1, salta a la etiqueta indicada INCB; incrementa B para saber a cuantos espacios esta el valor buscado del primer dato. INX; incrementa X para comparar con la siguiente direccin de memoria BRA AQUI2; brinca siempre a la etiqueta AQU2

GUARDAR: TFR X, Y; Transfiere el contenido de X a Y.

Instituto Tecnologico de Nuevo Laredo Departamento de Ingenieria Electrica ,Electronica Ingenieria Electronica 8 semestre

Aplicacin de los Microcontroladores Practica 3:1. -Suma de 2 tablas. 2. -Suma de 2 datos de 16 bytes. 3. -Suma BCD 4. -Corrimiento de una tabla 5. -Busqueda de un dato 6. -Ordenamiento de una tabla 7. Histograma Ing. Juan Jos Rodrguez Loera

Gilberto Orozco Alvarado 08100174 Nuevo Laredo Tamps. Marzo del 2012

También podría gustarte