Sie sind auf Seite 1von 102

RESUMEN DE PRACTICAS MICROCONTROLADORES MOTOROLA GP ETIQUETAS DE INICIO DEL WINIDE SOFTWARE EN INSTRUCCIONES DE PREPROCESADOR Y ASM. RESUMEN POR ANONIMUS.

SUERTE Y QUE LES SIRVA.

126.6 mm largo 72,15 mm ancho DIAGRAMA DE PINES, BAQUELA DEL QUEMADOR Y MODULO DE PRACTICA INTEGRADO.

ENCONTRAR EL NUMERO MAYOR $Include 'jl3regs.inc' ; For the 68HC908JL3, 68HC908JK3, 68HC908JK1 RAM FLASH EQU $0080 EQU $EC00 ; Valid for all JL3, JK3, JK1

VecReset EQU $FFFE ORG RAM DATOS DB 23T,50T,28T,100T,69T,156T,150T,192T

DB 180T,111T,90T,8T,254T,199T,178T,87T DB 101T,79T,70T,3T,211T,190T,67T DB 88T,40T,171T,240T,120T,10T,33T MAXIMO DS 1

ORG FLASH INICIO BSET 0,CONFIG1 LDX #30T ; Se desabilita el watchdog del COP

; cargar el n?mero total de datos ;cargar de manera indexada los datos desde el ?ltimo

CARGAR LDA DATOS-1,X DECREM DECX BEQ FINAL CMP DATOS-1,X BHS DECREM BRA CARGAR FINAL STA MAXIMO

;en la tabla hasta el primero ; decrementar X ;si X=0 ir al final ;comparar el dato en el acumulador con el inmediatamente anterior ;si el dato en el acumulador es mayor, ir a decrementar ;si no es mayor, cargar el dato anterior ;al finalizar todas las comparaciones, salvar el valor m?ximo

BRA FINAL ORG DW VECRESET INICIO

;bifurcar al final del programa

; Reset Vector

ENCONTRAR EL MAXIMO Y MINIMO NUMERO $Include 'jl3regs.inc' RAM FLASH EQU $0080 EQU $EC00

VecReset EQU $FFFE ORG RAM DATOS DB 23T,50T,28T,100T,69T,156T,150T,192T

DB 180T,111T,90T,8T,254T,199T,178T,87T DB 101T,79T,70T,3T,211T,190T,67T DB 88T,40T,171T,240T,120T,10T,33T MAXIMO DS MINIMO DS DATOX DS 1 1 1

ORG FLASH INICIO BSET 0,CONFIG1 CLR MAXIMO LDX #$FF STX MINIMO STX DATOX LDX #30T CARGAR LDA DATOS-1,X CMP DATOX BEQ FINAL CMP MAXIMO

BHI MAXIM CMP MINIMO BLO MINIM DECREM STA DATOX DECX BEQ FINAL BRA CARGAR MINIM STA MINIMO

CMP MAXIMO BHI MAXIM BRA DECREM MAXIM STA MAXIMO

BRA DECREM FINAL BRA FINAL VECRESET INICIO ; Reset Vector

ORG DW

ejemplo ROTACION DE LEDS DEL PTA Y PTB.

programa $ include 'gpgtregs.inc'

RAM

EQU

$0040 $8000 $FFFE

FLASH EQU VECTOR EQU T NUM TIME EQU EQU EQU 2

1 2

ORG

FLASH 0,CONFIG1

INICIO BSET

MOV

#%11111111,DDRA ; COLOCA TODOS LOS PINES DEL PUERTO COMO SALIDA

MOV

#%11111111,DDRB ; COLOCA TODOS LOS PINES DEL PUERTO COMO SALIDA

MOV

#%00000,DDRC ; COLOCA TODOS LOS PINES DEL PUERTO COMO ENTRADA

ENTRA BCLR NUM,PTC ALMACENA EN NUM

; TODO NUMERO BINARIO EN LA ENTRADA DEL PUERTO SE

*---------------------------------------------------------------------------------------------------

IGUAL CMP ASIGNADO

NUM, #%10000 ; COMPARAR EL VALOR DEL PUERTO NUM CON EL BINARIO

BEQ

IGUAL

; SI EL VALOR DE LA ETIQUETA ES IGUAL PASA LINEA

STX

TIME,200T

;ASIGNA 200T A LA VARIBLE TIME

BRA

ROTAIZ1

;VUELVE Y COMPARA-------------------------------------------------------------------------------------

IGUAL CMP ASIGNADO

NUM, #%01000 ; COMPARAR EL VALOR DEL PUERTO NUM CON EL BINARIO

BEQ

IGUAL

; SI EL VALOR DE LA ETIQUETA ES IGUAL PASA LINEA

STX

TIME,300T

;ASIGNA 300T A LA VARIBLE TIME

BRA

ROTAIZ1

;VUELVE Y COMPARA-------------------------------------------------------------------------------------

IGUAL CMP ASIGNADO BEQ STX BRA

NUM, #%00100 ; COMPARAR EL VALOR DEL PUERTO NUM CON EL BINARIO

IGUAL TIME,400T ROTAIZ1

; SI EL VALOR DE LA ETIQUETA ES IGUAL PASA LINEA ;ASIGNA 400T A LA VARIBLE TIME

*---------------------------------------------------------------------------------------------------MOV #%00000001,PTA PTA

ROTAIZ1 ROL

*-----------------------------------------------------------------------------------------;TIEMPO DE RETARDO RET_1S MOV LDA TIME,CONTA

#100T

REDO NOP NOP DBNZA REDO LDA #100T

DBNZ CONTA,REDO

RTS *-------------------------------------------------------------------------------------------

BCS MOV

ROTAIZ1 ; SALTA LINEA CUANDO CARRY ES 1, OSEA 1-00000000 #%00000001,PTB PTB

ROTAIZ2 ROL

*-----------------------------------------------------------------------------------------;TIEMPO DE RETARDO RET_1S MOV LDA TIME,CONTA

#100T

REDO NOP NOP DBNZA REDO LDA #100T

DBNZ CONTA,REDO RTS *------------------------------------------------------------------------------------------BCS ROTAIZ2 ; SALTA LINEA CUANDO CARRY ES 1

BRA MOV

ENTRA #$FF,DDRC

ORG DW

VECTOR INICIO

ROTACION DE LEDS FORMA CORTA

$Include 'gpgtregs.inc'

RAMStart RomStart

EQU $0040 EQU $E000 ; This is valid ROM on the GP32, GT16, and GT8

VectorStart EQU $FFDC SW COP K1 K2 K3 K4 EQU 2 EQU 0 EQU 500000 EQU 1000000 EQU 2000000 EQU 3000000 ;Constantes para el retardo de 0.5 seg, 1 seg, 2 seg, 3 seg. ;velocidades igual a 4

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

Org RAMStart

CONTA DATO2

DS 2 DS 1

ORG RET1

RomStart MOV #200T,CONTA

LDA #100T REDO NOP NOP DBNZA REDO

LDA

#100T

DBNZ CONTA,REDO RTS ;----------------------------------------------------------------------------------------------

INICIO

BSET MOV MOV

0,CONFIG1 ;Configuracion del PTA como salida ;Configuracion del PTB como salida

#%11111111,DDRA #%11111111,DDRB

;--------------------------------------------------------------------------------------------DESP MOV MOV BRA MOV BRA MOV BRA MOV BRA MOV BRA MOV BRA MOV #%10000000,PTA

#%00000000,PTB RET1 #%01000000,PTA RET1 #%00100000,PTA RET1 #%00010000,PTA RET1 #%00001000,PTA RET1 #%00000100,PTA RET1 #%00000010,PTA

BRA MOV BRA MOV

RET1 #%00000001,PTA RET1 #%00000000,PTA

;-------------------------------------------------------------------------------------------BRA MOV BRA MOV BRA MOV BRA MOV BRA MOV BRA MOV BRA MOV BRA MOV BRA RET1 #%01000000,PTB RET1 #%00100000,PTB RET1 #%00010000,PTB RET1 #%00001000,PTB RET1 #%00000100,PTB RET1 #%00000010,PTB RET1 #%00000001,PTB RET1 #%00000000,PTB DESP

DETECTOR DE METALES (ADC)

Esta prctica tiene como objetivo la utilizacin del mdulo de conversin anlogo - digital incluido en el microcontrolador, junto con la LCD y una etapa de acondicionamiento de seal construida a partir de electrnica anloga. La idea es construir un detector de metales que informe de manera grfica en una LCD de 2x16 el grado de proximidad del objeto metlico. El rango de distancia debe ser entre cero y 10 cm como mnimo. La distancia mxima la determinar cada persona dependiendo del principio fsico que utilice para la medicin y el sensor construido. El sensor debe ser en lo posible lineal, aunque no es una caracterstica indispensable ya que se puede linea lizar por software. Toda la etapa de acondicionamiento de seal del sensor y las fuentes adicionales tienen libertad de eleccin y diseo. No hay limitaciones de hardware para el proceso de sensado de los metales. El sistema consta de tres etapas. La primera el sensado mediante un sensor inductivo (preferiblemente). La segunda una etapa de acondicionamiento de seal. La etapa final que es la de adquisicin de datos y de visualizacin de datos y despliegue grfico en la LCD.

La configuracin del mdulo ADC puede o no utilizar una interrupcin. Se puede realizar un proceso de conversin continua sin involucrar interrupciones o directamente testeando el valor de la bandera COCO, como en el ejemplo adjunto. Se puede emplear ms de un canal del ADC si es necesario. En la LCD se debe mostrar el carcter ASCII $FF cada vez que se acerca el sensor al objeto metlico, de manera que se produce el efecto de una barra desplegable en la segunda lnea que se alarga conforme aumenta la proximidad, o que se hace ms corta conforme se aleja el sensor del objeto metlico. En la primera lnea debe aparece un mensaje fijo de usuario y en la segunda lnea la barra indicadora de proximidad. Como parece en el diagrama.

ejemplo del ADC $include 'gpgtregs.inc' memprog RAM EQU $8000 EQU $0040

VectorStart EQU $FFDC COCO EQU 7

org RAM org memprog Resetea mov #$01,config1 #%01110000,ADCLK 0,DDRB #$FF,DDRA

mov bclr MOV

main

clra jsr sta bra medicion PTA main #%00100000,ADSCR

medicion MOV brclr lda mov rts

coco,ADSCR,* ADR #%00011111,ADSCR

************************************************************** * DUMMY_ISR - Dummy Interrupt Service Routine. * Just does a return from interrupt. * *

************************************************************** dummy_isr: rti ; return

************************************************************** * Vectors - Timer Interrupt Service Routine. * after a RESET. * *

************************************************************** org VectorStart dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr ; Time Base Vector ; ADC Conversion Complete ; Keyboard Vector ; SCI Transmit Vector ; SCI Receive Vector ; SCI Error Vector

dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw Resetea

; SPI Transmit Vector ; SPI Receive Vector ; TIM2 Overflow Vector ; TIM2 Channel 1 Vector ; TIM2 Channel 0 Vector ; TIM1 Overflow Vector ; TIM1 Channel 1 Vector ; TIM1 Channel 0 Vector ; ICG/CGM Vector ; ~IRQ1 Vector ; SWI Vector ; Reset Vector

EJEMPLO LCD 2X16

diagrama conexin LCD.

$include 'gpgtregs.inc' FLASH RAM EQU $8000 EQU $0040

VectorStart EQU $FFDC fdt RW RS EN equ equ equ equ org RAM BANDERA DS DATA DS 1 1 $FF 0 1 2 ;entrada de control / dato ;entrada de habilitacion del LCD ;registro para indicar fin de escritura en lcd

CONTLCD DS CONTDEL DS CONTREL DS org FLASH inicio:

1 1 1

bset 0,CONFIG1 clrx clra

;deshabilita el cop

**** CONFIGURACION DE PUERTOS ***** MOV #$FF,DDRA MOV #$00,PTA MOV #%11100000,DDRB MOV #$00,PTB **** INICIALIZACION DE VARIABLES Y REGISTROS **** CLR CONTLCD CLR CONTDEL CLR CONTREL MOV #$00,PTA ;bits d4 RS(0 contr. 1 dato) y d5 Habil.por 1 bclr EN,PTB ;lcd deshabilitado ; SENALES DE CONTROL PARA EL LCD ; DATOS PARA EL LCD

******************************** * RUTINAS DE CONFIGURACION LCD * ******************************** SETTING lda jsr #$01 ;borra la pantalla

control ;0000 0001

lda jsr lda jsr lda jsr lda jsr

#$02

;vuelve a posicion inicial

control ;0000 0010 #$06 ;desplazamiento del cursor con cada dato

control ;0000 0110 #$0C ;cursor apagado (OFF) sin parpadeo o "blink"

control ;0000 1100 #$38 ;interface de 8 bits,2 lineas,matriz de 7x5

control ;0011 1000

************************************** * CICLO PRINCIPAL *

************************************** MAIN: JSR CLI BRA SETTING MOSTRAR ; HABILITA INTERRUPCIONES

************************************** * RUTINA MOSTRAR *

************************************** MOSTRAR: LDA JSR CLRH CLRX MOV #16T,CONTLCD #$80 CONTROL ; DIRECCIONA LA PRIMERA LINEA

MOSTRAR1: LDA MENS1,X

JSR INCX

ESCRIBIR

DBNZ CONTLCD,MOSTRAR1 SETTING2

lda jsr lda jsr lda jsr

#$06

;desplazamiento del cursor con cada dato

control ;0000 0111 #$0E ;cursor apagado (OFF) sin parpadeo o "blink"

control ;0000 1110 #$38 ;interface de 8 bits,2 lineas,matriz de 7x5

control ;0011 1000

MOSTRAR2: LDA JSR CLRH CLRX MOV #16T,CONTLCD #$C0 CONTROL ; DIRECCIONA LA SEGUNDA LINEA

MOSTRAR3: LDA JSR INCX DBNZ CONTLCD,MOSTRAR3 RTS ************************************** * RUTINA ESCRIBIR * MENS2,X ESCRIBIR

************************************* ESCRIBIR: nop STA PTA nop nop BSET rs,PTB ;INDICA QUE ES UN DATO nop BSET en,PTB ;habilitacion LCD nop nop BCLR en,PTB ;deshabilitacion LCD nop JSR DELAY RTS ************************************** * RUTINA DE CONTROL * ;PONE DATO EN EL PUERTO B

************************************** control: nop sta nop nop bclr RS,PTB ;indico que es un comando de control nop bset EN,PTB ;habilitacion LCD PTB ;pongo palabra de control en el puerto b

nop nop bclr EN,PTB ;deshabilitacion LCD nop jsr rts ************************************** DELAY: MOV DELAY1: MOV DELAY2: DBNZ CONTREL,DELAY2 DBNZ CONTDEL,DELAY1 RTS MENS1: db " PRIMERA LINEA " db fdt MENS2: db " SEGUNDA LINEA " db fdt ************************************************************** org VectorStart dw inicio ; Reset Vector #255T,CONTREL #40T,CONTDEL DELAY

EJEMPLO ESCRITURA EN UNA LCD $include 'gpgtregs.inc'

FLASH RAM

EQU $8000 EQU $0040

VectorStart EQU $FFDC fdt RW RS EN equ equ equ equ org RAM DATA DS 1 1 1 1 $FF 0 1 1 ;registro para indicar fin de escritura en lcd ;LECTURA CUANDO ESTA SIEMPRE ESTA CONECTADO A NEGATIVO 0 ;entrada de control / dato RS EN CERO CONTROL / EN 1 PARA ESCRIBIR ;entrada de habilitacion del LCD **ENABLE O HABILITADOR** EN 1

CONTLCD DS CONTDEL DS CONTREL DS org FLASH inicio:

bset 0,CONFIG1 clrx clra

;deshabilita el cop

*********************************************************** **** CONFIGURACION DE PUERTOS ***************************** *********************************************************** MOV #%11111111,DDRA MOV #%00000000,PTA DE ENVIO MOV #%11100000,DDRB ; PUERTO B CON TODOS LOS PINES COMO SALIDA ;ENVIO CEROS A LA SALIDA POR DEFECTO, EVITA ERRORES

; LOS PRIMEROS TRES PINES DEL PUERTO C COMO SALIDA

MOV #%00000000,PTB ENVIO

;ENVIO CEROS AL PUETO C POR DEFECTO, EVITA ERRORES DE

************************************************** **** INICIALIZACION DE VARIABLES Y REGISTROS **** ************************************************** CLR CONTLCD CLR CONTDEL CLR CONTREL MOV #%00000000,PTA ;BORRAR EL BIT

;bits d4 RS(0 contr. 1 dato) y d5 Habil.por 1 bclr EN,PTB ;lcd deshabilitado

******************************** * RUTINAS DE CONFIGURACION LCD * ******************************** SETTING lda jsr lda jsr lda jsr lda jsr lda jsr #%00000001 control ;borra la pantalla

;saltar a la subrutina ;vuelve a posicion inicial HOME

#%00000010 control #%00000110 control #%00001100 control #%00111000 control

;desplazamiento del cursor con cada dato

;cursor apagado (OFF) sin parpadeo o "blink"

;interface de 8 bits,2 lineas,matriz de 7x5

************************************** * RUTINA DE CONTROL *

************************************** control: nop sta nop nop bclr RS,PTB nop bset EN,PTB nop nop bclr EN,PTB nop jsr rts DELAY PTA ; ciclo vacio ;pongo palabra de control en el puerto A ; ciclo vacio ; ciclo vacio ;indico que es un comando de control ; ciclo vacio ;habilitacion LCD ; ciclo vacio ; ciclo vacio ;deshabilitacion LCD ; ciclo vacio ;saltar a la subrutina ;retornar a la subrutina

******************************************************** *RUTINA DE RETARDO NORMAL O DELAY********************** ******************************************************** DELAY: MOV DELAY1: MOV DELAY2: DBNZ CONTREL,DELAY2 DBNZ CONTDEL,DELAY1 RTS ;RETORNAR A LA SUBRUTINA #255T,CONTREL #40T,CONTDEL

****************************************************** HABILITAR LINEAS ****************************************************** BSET en,PTB ;habilitacion LCD ****************************** ESCRIBIR MOV #%1000000,PTB ; ESCRIBIO RS EN 0 ENVIAR LETRA MOV #%01000100,PTA ; C org VectorStart dw inicio ; Reset Vector

MANEJO DE UN SERVOMOTOR SERVOMOTOR (PWM) Esta prctica combina el modulo TIM del microcontrolador, un servomotor, y un potencimetro de una sola vuelta (5K o superior). Preferiblemente el potencimetro debe ser lineal. El microcontrolador se encarga de recibir la seal de entrada al conversor que proviene del potencimetro y de tomar las decisiones correspondientes al valor de conversin. Esto es, utilizando la modulacin por ancho de pulso, controlar un servomotor para que con la entrada al microcontrolador de un potencimetro de una sola vuelta se posicione el eje del servo en la misma posicin angular del eje del potencimetro. Esto configurara un sistema de lazo abierto, aunque internamente el servo conste de un sistema en lazo cerrado.

PRUEBA DEL SERVO. $include 'gpgtregs.inc' memprog RAM EQU $8000 EQU $0040

VectorStart EQU $FFDC COCO RS EN EQU 7 EQU 0 EQU 1 org RAM num1 NUM2 ds DS 1 1 1 1 1

CONTLCD DS CONTDEL DS CONTREL DS

CONTDEL1 DS CONTREL1 DS NOM CONT1 DS DS 1 1

1 1

org memprog Resetea mov #$01,config1 #%00010000,ADCLK 0,DDRB #$FF,DDRA #$FF,DDRC #$00,DDRD #$FF,PTDPUE #0T,NOM MAIN main 0,PTC DELAY 0,ptc delay3 INICIO

mov bclr MOV MOV MOV MOV MOV JSR inicio jsr BSET JSR bclr jsr JMP main clra jsr sta sta rts

medicion num1 pta

medicion MOV

#%00100000,ADSCR

brclr lda mov rts

coco,ADSCR,* ADR #%00000100,ADSCR

************************************** DELAY: MOV DELAY1: MOV DELAY2: DBNZ CONTREL,DELAY2 DBNZ CONTDEL,DELAY1 RTS DELAY3 MOV DELAY4: MOV DELAY5: DBNZ CONTREL1,DELAY5 DBNZ CONTDEL1,DELAY4 RTS ************************************************************** * DUMMY_ISR - Dummy Interrupt Service Routine. * Just does a return from interrupt. * * #170t,CONTREL1 #1t,CONTDEL1 num1,CONTREL #1t,CONTDEL

************************************************************** dummy_isr:

rti

; return

************************************************************** * Vectors - Timer Interrupt Service Routine. * after a RESET. * *

************************************************************** org VectorStart dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw Resetea ; Time Base Vector ; ADC Conversion Complete ; Keyboard Vector ; SCI Transmit Vector ; SCI Receive Vector ; SCI Error Vector ; SPI Transmit Vector ; SPI Receive Vector ; TIM2 Overflow Vector ; TIM2 Channel 1 Vector ; TIM2 Channel 0 Vector ; TIM1 Overflow Vector ; TIM1 Channel 1 Vector ; TIM1 Channel 0 Vector ; ICG/CGM Vector ; ~IRQ1 Vector ; SWI Vector ; Reset Vector

ENSAYO DEL SERVO $include 'gpgtregs.inc'

memprog RAM

EQU $8000 EQU $0040

VectorStart EQU $FFDC COCO RS EN EQU 7 EQU 0 EQU 1 org RAM num1 NUM2 ds DS 1 1 1 1 1 1 1

CONTLCD DS CONTDEL DS CONTREL DS CONTDEL1 DS CONTREL1 DS NOM CONT1 DS DS 1 1

org memprog Resetea mov #$01,config1 #%00010000,ADCLK 0,DDRB #$FF,DDRA #$FF,DDRC #$00,DDRD #$FF,PTDPUE #0T,NOM MAIN

mov bclr MOV MOV MOV MOV MOV JSR

inicio

jsr BSET JSR bclr jsr JMP

main 0,PTC DELAY 0,ptc delay3 INICIO

main

clra jsr sta sta rts medicion num1 pta

medicion MOV brclr lda mov rts

#%00100000,ADSCR

coco,ADSCR,* ADR #%00000100,ADSCR

************************************** DELAY: MOV DELAY1: MOV DELAY2: DBNZ CONTREL,DELAY2 DBNZ CONTDEL,DELAY1 RTS DELAY3 num1,CONTREL #1t,CONTDEL

MOV DELAY4: MOV DELAY5:

#2t,CONTDEL1

#181t,CONTREL1

DBNZ CONTREL1,DELAY5 DBNZ CONTDEL1,DELAY4 RTS ************************************************************** * DUMMY_ISR - Dummy Interrupt Service Routine. * Just does a return from interrupt. * *

************************************************************** dummy_isr: rti ; return

************************************************************** * Vectors - Timer Interrupt Service Routine. * after a RESET. * *

************************************************************** org VectorStart dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr ; Time Base Vector ; ADC Conversion Complete ; Keyboard Vector ; SCI Transmit Vector ; SCI Receive Vector ; SCI Error Vector ; SPI Transmit Vector ; SPI Receive Vector

dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw dummy_isr dw Resetea

; TIM2 Overflow Vector ; TIM2 Channel 1 Vector ; TIM2 Channel 0 Vector ; TIM1 Overflow Vector ; TIM1 Channel 1 Vector ; TIM1 Channel 0 Vector ; ICG/CGM Vector ; ~IRQ1 Vector ; SWI Vector ; Reset Vector

MANEJO DE LCD DE 2X16 El objetivo de la prctica es la familiarizacin y el uso de una LCD alfanumrica de 2X16 mediante la implementacin de una rutina que integra el envi de datos a la LCD y las prcticas anteriores de envi de datos desde el microcontrolador. Rotar los nombres y los cdigos de los integrantes del grupo en el rea visible de la LCD tipo publik de izquierda a derecha en las dos lneas. La frecuencia de desplazamiento de los caracteres es libre, pero debe ser tal que permita ver claramente los caracteres cuando se estn moviendo. Cuando el ltimo caracter de la palabra de la primera lnea desaparece debe aparecer en la lnea inferior. El rea visible es el que aparece a continuacin:

La siguiente tabla contiene los nombres y cdigos con sus espacios de memoria correspondientes. 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 0 1 2 2 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 n n n n n n n n &n n n n 1 1 3 3 3 4 4 4 5 5 5 1 0 0 8 9 5 3 3 0 1 5 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 n n n 1 0 1 2 1 2 3 3 0 9 7 1 0 1 7 2 2 3 3 0 1 2 n n n n n n n n &n

El procedimiento fue el siguiente: Se activa la primera lnea con los nombres ya ingresados en la memoria RAM de la LCD, se empieza a rotar pantalla, la cual es un marco imaginario que recorre los espacios de memoria, con 16 caracteres dentro. La rotacin es izquierda, despus de terminada la rotacin, los caracteres que quedan en el extremo derecho son borrados sucesivamente, aparentando una ocultacin, cuando se termina de borran el numero especifico de veces, se activa la segunda lnea y se empieza a rotar pantalla de nuevo.

Inicio Preproceso, cargar las libreras, definir los alias de memoria Entrada de variables Datos, variables de comparacin y variables de conteo Configuracin del micro, inicializacin de variables Si los datos son iguales Si el primer nmero es mayor que el segundo Fin Decrementar la variable de conteo de parejas Reorganizar los datos La variable de conteo de parejas llego a cero Limpiar el registro ndice, reinicializar la variable de conteo de parejas Cargar los datos por parejas en las variables de comparacin usando modo de direccionamiento indexado Realizar la comparacin entre los datos por parejas Verificar si ya se ordenaron todos los datos Se termino el ordenamiento Incrementar la variable de veces de comparacin. PROGRAMA. $include 'gpgtregs.inc' FLASH EQU $8000 RAM EQU $0040

Vector EQU $FFFE

fdt RW RS EN

equ equ equ equ

$FF 0 6 7

;registro para indicar fin de escritura en lcd

;entrada de control / dato ;entrada de habilitacion del LCD

org RAM CONTDEL DS CONTREL DS ESCRI DS 1 1 1 1 1 1

CONTLCD DS CONT CONT2 DS DS

org FLASH inicio: bset 0,CONFIG1 clrx clra **** CONFIGURACION DE PUERTOS ***** MOV #$FF,DDRA MOV #$00,PTA MOV #$FF,DDRB MOV #$00,PTB MOV #$00,DDRC MOV #$FF,PTCPUE ;PONER PUERTO C COMO ENTRADA ;PONER RESISTENCIA DE PULLUP ; SEALES DE CONTROL PARA EL LCD ; DATOS PARA EL LCD ;deshabilita el cop ;BORRAR REGISTROS

**** INICIALIZACION DE VARIABLES Y REGISTROS ****

MOV

#$00,PTA

BCLR RS,PTB bclr EN,PTB ******************************** * RUTINAS DE CONFIGURACION LCD * ******************************** SETTING lda jsr lda jsr lda jsr lda jsr MOV MOV MOV MOV BCLR #$01 ;borra la pantalla

control ;0000 0001 #$02 ;vuelve a posicion inicial

control ;0000 0010 #$0C ;cursor apagado (OFF) sin parpadeo o "blink"

control ;0000 1100 #$38 ;ACTIVAR SEGUNDA LINEA

control ;0000 1110 #$C3,ESCRI ;CARGARDOR DE POSICIONES DE LA LINEA DE ABAJO

#0T,CONTLCD ;contador general del total de letras #0T,CONT #0T,CONT2 RS,PTB ;CONTADOR GENERAL , DE LOS 80 DATOS ;CONTADOR PARA CARGAR SOLAMENTE 8 DATOS...matrix 8*5

************************************** * RUTINA CARGAR LOS GRAFICOS *

************************************** MOSTRAR:LDA JSR CLRH #$80 ;RUTINA DE ESCRITURA DE LOS NOMBRES

CONTROL

CLRX BSET NOMBRES LDX LDA JSR INCX STX CONTLCD CONTLCD MENS1,X ESCRIBIR RS,PTB

CBEQX #13T,CARGAR BRA CARGAR LDA JSR CLRH CLRX DIGITOS LDX LDA JSR INCX CBEQX #80T,MOV2 COMPA BRSET 0,PTC,COMPA BRSET 0,PTC,COMPA STX LDX CONT CONT2 ;COMPARAR SOLAMENTE PARA Q GUARDE 8 DATOS EN LA ;GUARDAR LOS CONTADORES ;COMPARAR SI TERMINO DE ESCRIBIR TODOS LOS DATOS ;MIRAR EL PULSADOR SI ESTA EN 0 ,CONTINUA CONT ;CARGAR EL CONTADOR GENERAL #64T CONTROL NOMBRES ;RUTINA PARA CARGAR LA PRIMERA POSICION DE LA CGRAM

DATOS,X ESCRIBIR

CBEQX #7T,MOVI PRIMERA INCX

;POSICION DE LA CGRAM

STX BRA

CONT2 DIGITOS ESCRI ;RUTINA DE ESCRITURA DE LOS DATOS EN LA LCD

MOVI LDA JSR INCA STA

CONTROL ;AUMENTAR LAS POSICIONES Y AL LA MISMA VEZ BORRARLAS ESCRI ;COMPARAR EL PULSADOR SI ESTA EN 0,CONTINUA

COMPA1 BRSET 0,PTC,COMPA1 BRSET 0,PTC,COMPA1 MOV LDA JSR LDA JSR LDA JSR JSR JSR JSR JSR LDA JSR #$00,CONT2 #$00 ESCRIBIR #$8E CONTROL #$00 ESCRIBIR DELAY DELAY DELAY ERASE ESCRI CONTROL

;PONE EN 0 EL CONTADOR DE 0 A 8 ;ESCRIBE EL PRIMER DATO DE LA CGRAM

;ESCRIBIRLO TAMBIEN EL LA POSICIO $8E

;RETARDOS

;IR A LA RUTINA DE BORRADO PARA BORRAR EL DATO DE LA $8E

JSR ERASE POSICION DE JMP CARGAR

;IR A LA RUTINA DE BORRADO PARA BORRAR EL DATO DE LA

;LA POSICION DE ABAJO

MOV2 LDA JSR

ESCRI

;RUTINA PARA MOSTRAR EL ULTIMO DIGITO ;YA QUE NO LO visualizara SI NO SE HACE ESTA RUTINA

CONTROL

INCA STA MOV LDA JSR LDA JSR LDA JSR JSR JSR JSR JSR LDA JSR JSR MOV MOV MOV JMP ESCRI #$00,CONT2 #$00 ESCRIBIR #$8E CONTROL #$00 ESCRIBIR DELAY DELAY DELAY ERASE ESCRI CONTROL ERASE #00T,CONT #00T,CONT2 #$C3,ESCRI CARGAR ;PONER EL CONTADOR DE POSICIONES,DE LA LINEA DE ABAJO ;IR A CARGAR PARA REPETIR EL CICLO ;PONER LOS CONTADORES EN 0 PARA VOLVER A COMENZAR

ERASE LDA JSR LDA JSR RTS

#$10 ;

;MOVER EL CURSOR HACIA LA IZQUIERDA

CONTROL #$20 ESCRIBIR

;PONER UN ESPACIO EN ESA POSICION

;VOLVER DE LA SUBRUTINA

************************************** * RUTINA ESCRIBIR *

**************************************

ESCRIBIR: nop STA PTA nop nop BSET rs,PTB ;INDICA QUE ES UN DATO nop BSET en,PTB ;habilitacion LCD nop nop BCLR en,PTB ;deshabilitacion LCD nop JSR DELAY RTS ;PONE DATO EN EL PUERTO B

************************************** * RUTINA DE CONTROL *

**************************************

control: nop sta nop nop bclr RS,PTB ;indico que es un comando de control nop bset EN,PTB ;habilitacion LCD nop nop bclr EN,PTB ;deshabilitacion LCD nop jsr rts ************************************** DELAY: MOV DELAY1: MOV DELAY2: DBNZ CONTREL,DELAY2 DBNZ CONTDEL,DELAY1 #255T,CONTREL #20T,CONTDEL DELAY PTA ;pongo palabra de control en el puerto b

RTS

DATOS db 00,00,00,00,00,1c,14,18 db 00,00,00,1c,14,10,10,00 db 00,1c,14,10,10,00,00,00 db 1c,14,0c,00,00,00,00,00 db 0f,01,03,00,00,00,00,00 db 03,05,07,00,00,00,00,00 db 00,01,01,05,07,00,00,00 db 00,00,00,01,01,05,07,00 db 00,00,00,00,00,06,05,07 db 00,00,00,00,00,18,10,1e MENS1 DB "PLUTO&RON"

;DATOS DE CADA UNO DE LOS GRAFICOS ;SON 80 DATOS ;EQUIVALENTE A 10 DIGITOS DIFERENTES

************************************************************** org Vector dw inicio ; Reset Vector

CARACTERES PARA LA LCD 2X16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 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

0 0 0 1 1 0 0 0

0 0 0 0 0 0 0

0 0 0 0 0 0 0

0 0 0 0 0 0 0

1 1 1 1 1 1 1

1 1 1 1 1 1 1

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 0 0 0 0 0

0 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

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

0 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

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

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

1 1 1 1 1 1 1 1

16 T 16 T 16 T 16 T 16 T 16 T

HEXA 10 HEXA 10 HEXA 10 HEXA 10 HEXA 10 HEXA 10

16 T 16 T

HEXA 10 HEXA 10

24 T 24 T 24 T 24 T 24 T 24 T 24 T 24 T

HEXA 18 HEXA 18 HEXA 18 HEXA 18 HEXA 18 HEXA 18 HEXA 18 HEXA 18

28 T 28 T 28 T 28 T 28 T 28 T 28 T 28 T

HEXA 1C HEXA 1C HEXA 1C HEXA 1C HEXA 1C HEXA 1C HEXA 1C HEXA 1C

30 T 30 T 30 T 30 T 30 T 30 T 30 T 30 T

HEXA 1E HEXA 1E HEXA 1E HEXA 1E HEXA 1E HEXA 1E HEXA 1E HEXA 1E

31 T 31 T 31 T 31 T 31 T 31 T 31 T 31 T

HEXA 1F HEXA 1F HEXA 1F HEXA 1F HEXA 1F HEXA 1F HEXA 1F HEXA 1F

MANEJO DE TECLADO 4 X 4

digito 1 2 3 A 4 5 6 B 7 8 9 C * 0 # D

C1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1

C2 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1

C3 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1

C4 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0

F1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1

F2 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1

F3 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1

F4 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0

a 0 1 1 1 0 1 1 0 1 1 1 1 0 1 0 0

b 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 1

c 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1

d 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1

e 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1

f 0 0 0 1 1 1 1 1 0 1 1 1 0 1 1 0

g 0 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1

$ include 'gpgtregs.inc' RAM EQU $0040 $8000 $FFFE

FLASH EQU VECTOR EQU

;-------------------------LA ENTRADA DEL TECLADO ES EL PUERTO A... ;-------------------------LA SALIDA EN EL DISP ES EL PUERTO B.... ORG CONTA DS N1 N2 N3 DS DS DS 1 1 1 RAM 1

NA

DS

;-----------------------------------SEGUNDA FILA N4 N5 N6 NB DS DS DS DS 1 1 1 1

;-----------------------------------TERCERA FILA N7 N8 N9 NC DS DS DS DS 1 1 1 1

;-----------------------------------CUARTA FILA NX N0 ND NS DS DS DS DS ORG 1 1 1 1 FLASH

INICIO BSET 0,CONFIG1 MOV #%01110111,N1 COLUMNAS MOV MOV MOV #%10110111,N2 #%11010111,N3 #%11100111,NA ;NUMERO 1 EN EL TECLADO LAS CONBINACIONES DEL TECLADO FILAS Y

;NUMERO 2 EN EL TECLADO ;NUMERO 3 EN EL TECLADO ;NUMERO A EN EL TECLADO

;---------------------------------------SEGUDA FILA MOV MOV #%01111011,N4 #%10111011,N5 ;NUMERO 4 EN EL TECLADO ;NUMERO 5 EN EL TECLADO

MOV MOV

#%11011011,N6 #%11101011,NB

;NUMERO 6 EN EL TECLADO ;NUMERO B EN EL TECLADO

;---------------------------------------TERCERA FILA MOV MOV MOV MOV #%01111101,N7 #%10111101,N8 #%11011101,N9 #%11101101,NC ;NUMERO 7 EN EL TECLADO ;NUMERO 8 EN EL TECLADO ;NUMERO 9 EN EL TECLADO ;NUMERO C EN EL TECLADO

;--------------------------------------CUARTA FILA MOV MOV MOV MOV MOV MOV MOV MOV #%01111110,NX #%10111110,N0 #%11011110,NS #%11101110,ND #%00001111,DDRA #%11111111,DDRB #%11110000,PTAPUE #%00000000,PTB #%00000111,PTA PTA ;NUMERO * EN EL TECLADO ;NUMERO 0 EN EL TECLADO ;NUMERO # EN EL TECLADO ;NUMERO D EN EL TECLADO ;CONFIG LA MITAD DEL PUERTO COMO ENTRADA Y LA OTRA COMO SALIDA ;CONFIG PUERTO B COMO SALIDA ;RESISTENCIAS DE PULLUP ;ENVIAR CEROS A PTB ;PRIMERA CONBINACION DE LA FILA 1, UN BIT ESTA EN 0 Y ROTA

CMP1 MOV COMP LDA

;CARGAR EN EL ACUMULADOR PTA ;COMPARARLO CON LA COMBINACION DE 1 E IR A LA ETIQUETA PARA MOSTRAR EL

CBEQ N1,ST1 1 CBEQ N2,ST2 CBEQ N3,ST3 CBEQ NA,STA JSR MOV LDA RETA

;RUTINA DE RETARDO ;HABILITAR LA SEGUNDA FILA

#%00001011,PTA PTA

;CARGAR EL PTA

COMP2 CBEQ N4,ST4 CBEQ N5,ST5 CBEQ N6,ST6 CBEQ NB,STB JSR MOV LDA RETA

;COMPARAR CON LA CONFIG DE 4 E IR A MOSTRAR EN DISP EL 4

;RUTINA DE RETARDO ;HABILIDAR LA TERCERA FILA

#%00001101,PTA PTA

;CARGAR EL PTA ;COMPARAR CON LA CONFIG DE 7 E IR A MOSTRAR EN DIS EL 7

COMP3 CBEQ N7,ST7 CBEQ N8,ST8 CBEQ N9,ST9 CBEQ NC,STC JSR MOV LDA RETA

;RUTINA DE RETARDO ;HABILITAR LA CUARTA FILA

#%00001110,PTA PTA

;CARGAR EL ACUMULADOR ;COMPARA CON LA CONFIG DE ASTERISCO E IR A MOSTRA EN EL DISP "S

COMP4 CBEQ NX,STXL INVERTIDA" CBEQ N0,ST0 CBEQ NS,STS CBEQ ND,STD BRA ST1 CMP1

;VOLVER A COMPARAR ;CONFIGURACION EN EL DISP DEL NUMERO 1

CLRA MOV JMP

#%00011000,PTB COMP ;CONFIGURACION EN EL DISP DEL NUMERO 2 #%01101101,PTB COMP

ST2

CLRA MOV JMP

ST3

CLRA MOV JMP

;CONFIGURACION EN EL DISP DEL NUMERO 3 #%00111101,PTB

COMP

STA

CLRA MOV JMP #%01011111,PTB COMP

ST4

CLRA MOV JMP #%00011011,PTB COMP2

ST5

CLRA MOV JMP #%00110111,PTB COMP2

ST6

CLRA MOV JMP #%01110111,PTB COMP2

STB

CLRA MOV JMP #%01110011,PTB COMP2

ST7

CLRA MOV JMP #%00011100,PTB COMP3

ST8

CLRA MOV JMP #%01111111,PTB COMP3

ST9

CLRA

MOV JMP STC

#%00011111,PTB COMP3

CLRA MOV JMP #%01100110,PTB COMP3

STXL CLRA MOV JMP ST0 #%00010011,PTB COMP4

CLRA MOV JMP #%01111110,PTB COMP4

STS

CLRA MOV JMP #%01011011,PTB COMP4

STD

CLRA MOV JMP #%01111001,PTB COMP4

RETA MOV LDA

#50T,CONTA

;RETARDOS

#100T

REDO NOP NOP DBNZA REDO LDA #100T

DBNZ CONTA,REDO

RTS ORG DW VECTOR INICIO

MOTOR DE PASOS (SISTEMA DE ESTAMPADO) Este proyecto consiste en un sistema de estampado de caracteres segn la informacin que entra al microcontrolador a travs del teclado matricial. Tambin cuenta con un pulsador externo para borrar el cdigo almacenado en memoria (sea voluntariamente o porque se cometi un error de digitacin) y una LCD de 2x16 donde se visualizar el cdigo conforme se va digitando y que permitir verificar que no hay un error antes de realizar su impresin. El impresor es un sistema dinmico de control de lazo abierto ya que no hay ningn elemento sensor que permita establecer una desviacin y realizar una correccin del error de manera dinmica. Por lo tanto, el correcto desempeo del dispositivo depende completamente de la calibracin y ajuste inciales que se realizan a nivel fsico y mecnico. El esquema general de los componentes es el que se muestra a continuacin.

Figura (1).

Dentro del sistema se distinguen las siguientes etapas o subsistemas. Una etapa de adquisicin de informacin. Esta se realiza mediante un teclado matricial acoplado al microcontrolador (usando o no las interrupciones de teclado). Una segunda etapa de visualizacin donde irn apareciendo los datos pulsados al momento de digitarse cada uno de los nmeros. En esta etapa se muestra un mensaje fijo en la primera lnea de la LCD preguntando por el cdigo. En la segunda lnea es donde aparecer el cdigo, conforme se realiza el proceso de almacenamiento.

El proceso de estampado inicia cuando se pulsa la tecla de validacin en el teclado. Esta tecla de validacin es # y es la misma para todos los estudiantes. Pueden tambin programarse otras funciones adicionales con las teclas restantes.

La etapa de estampado consiste en unos sellos distribuidos en la periferia de un disco acoplado a un motor de pasos. Esta etapa adems cuenta con un solenoide alineado con la posicin radial a la que se encuentran los caracteres (sellos) y que cumplir la funcin de ser el actuador, una vez se haya realizado el desplazamiento del disco. La entrada de la etapa de estampado es una etapa de potencia que se encarga de recibir las instrucciones por parte del micro y enviarlas a las diferentes bobinas involucradas, ya sean las del motor o la del solenoide. El proceso de desplazamiento del papel sobre el que se est estampando es manual. Para simplificar el problema de tinta, se recomienda usar papel carbn sobre el papel blanco. DESCRIPCION DEL MONTAJE: Se utilizo un motor de pasos unipolar que consta de varias bobinas, el cual funciona a 20 voltios DC, el disco rotativo se fabrico con 12 agujeros en la periferia donde se encontraran los (marcadores) adheridos a una lamina de acetato flexible con el objeto de que permita flexionarse al bajar el ncleo del solenoide, se deicidio construir la maquina en acero, puesto que el impacto del solenoide podra desajustar la maquina al estar hecha de materiales como maderas y plsticos, en la figura (2) pueden apreciar el montaje. La etapa de potencia se realizo mediante el circuito integrado (ULN 2803), donde la funcin bsica de este es reemplazar los transistores (2n3904) o (2n3906) en estado de interrupcin. El (ULN 2803) se encuentra conectado a las cuatro primeras salidas del puerto ( C ) del microcontrolador GP32, donde provienen las seales de control para el motor de pasos, all se realiza una ola de dos bit seguidos. En la figura (5) se puede apreciar el integrado. Para manejar los 30v y los 0.4 amperios que alimentan al solenoide, fue necesario utilizar un relevo, que opera con 5v a 12 v en la entrada, y permite una salida de 120v 1 amperio. Esto tambin pudo solucionarse con el transistor (2n 3055) en estado de interrupcin.

DESCRIPCION DEL PROGRAMA: 1)-asignacin de variables y configuracin de puertos. 2)-activacin del teclado y de la LCD. 3)-guardar indexado los datos. 4)-cargar el primer dato. 5)-cargar los dems datos indexado y compararlos con el inmediatamente anterior. 6)-imprimir.

Figura (2).

Figura (3).

Figura (4).

Figura (5) MANEJO DEL MOTOR DE PASOS Unipolar: Estos motores suelen tener 6 o 5 cables de salida, dependiendo de su conexionado interno (ver figura 2). Este tipo se caracteriza por ser ms simple de controlar. En la figura 6 podemos apreciar un ejemplo de conexionado para controlar un motor paso a paso unipolar mediante el uso de un ULN2803, el cual es una array de 8 transistores tipo Darlington capaces de manejar cargas de hasta 500mA. Las entradas de activacin (Activa A, B, C y D) pueden ser directamente activadas por un microcontrolador.

Figura (6)

Secuencias para manejar motores paso a paso Unipolares Existen tres secuencias posibles para este tipo de motores, las cuales se detallan a continuacin. Todas las secuencias comienzan nuevamente por el paso 1 una vez alcanzado el paso final (4 u 8). Para revertir el sentido de giro, simplemente se deben ejecutar las secuencias en modo inverso. Secuencia Normal: Esta es la secuencia ms usada y la que generalmente recomienda el fabricante. Con esta secuencia el motor avanza un paso por vez y debido a que siempre hay al menos dos bobinas activadas, se obtiene un alto torque de paso y de retencin. PASO 1 2 3 4 BOBINA A 1 0 0 1 BOBINA B 1 1 0 0 BOBINA C 0 1 1 0 BOBINA D 0 0 1 1

$ include 'gpgtregs.inc' RAM equ $0040 $8000 $FFFE 0 4 5 2 ;entrada de habilitacion del LCD ;entrada de control / dato

FLASH EQU VECTOR EQU RW RS EN equ equ equ

SOLENO EQU

ORG

RAM

CONTDEL DS CONTREL DS CONTLCD DS

1 1 1

;controle lcd

CONTA DS

;retardo teclado

TIME DS

;variable de posicion

CONT6 DS NUM1 DS NUM2 DS N1 N2 N3 NA DS DS DS DS 1 1 1 1

1 1 1

;-----------------------------------SEGUNDA FILA N4 N5 N6 NB DS DS DS DS 1 1 1 1

;-----------------------------------TERCERA FILA N7 N8 N9 NC DS DS DS DS 1 1 1 1

;-----------------------------------CUARTA FILA NX N0 DS DS 1 1

ND NS

DS DS

1 1 1 1 20 flash ;variable de incremento de posicion de memoria

CONT3 DS CONT4 DS DATOS DS ORG inicio:

bset 0,CONFIG1 clrx clra

;deshabilita el cop

**** CONFIGURACION DE PUERTOS ***** MOV #%00001111,DDRA MOV #%11110000,PTAPUE MOV #$FF,DDRB MOV #$FF,DDRC MOV #$FF,DDRD MOV #$00,PTA MOV #$00,PTB MOV #$00,PTC MOV #$00,PTD MOV #0T,TIME MOV #0T,CONT3 MOV #0T,CONT5 MOV #0T,CONT6 ; SEALES DE CONTROL PARA EL LCD ; DATOS PARA EL LCD

MOV MOV MOV MOV

#%01110111,N1 #%10110111,N2 #%11010111,N3 #%11100111,NA

;NUMERO 1 EN EL TECLADO ;NUMERO 2 EN EL TECLADO ;NUMERO 3 EN EL TECLADO ;NUMERO A EN EL TECLADO

;---------------------------------------SEGUDA FILA MOV MOV MOV MOV #%01111011,N4 #%10111011,N5 #%11011011,N6 #%11101011,NB ;NUMERO 4 EN EL TECLADO ;NUMERO 5 EN EL TECLADO

;---------------------------------------TERCERA FILA MOV MOV MOV MOV #%01111101,N7 #%10111101,N8 #%11011101,N9 #%11101101,NC

;--------------------------------------CUARTA FILA MOV MOV MOV MOV #%01111110,NX #%10111110,N0 #%11011110,NS #%11101110,ND

BCLR SOLENO,PTD SETTING lda jsr lda jsr #$01 control #$02 control ;borra la pantalla ;0000 0001 ;vuelve a posicion inicial ;0000 0010

lda jsr lda jsr MOV BCLR

#$0F control #$38 control

;cursor apagado (OFF) sin parpadeo o "blink" ;0000 1100 ;ACTIVAR SEGUNDA LINEA ;0000 1110 ;contador general del total de letras

#0T,CONTLCD RS,PTD #$80

MOSTRAR:LDA JSR CLRH CLRX

;RUTINA DE ESCRITURA DE LOS titulo "impresora"

CONTROL

BSET RS,PTD NOMBRES LDX LDA JSR INCX STX CONTLCD CONTLCD MENS1,X ESCRIBIR

CBEQX #13T,RESE BRA RESE LDA JSR NOMBRES #$C0

CONTROL

CMP1

MOV

#%00000111,PTA

COMP LDA

PTA

CBEQ N1,IR1 CBEQ N2,IR2 CBEQ N3,IR3 CBEQ NA,IRA JSR MOV LDA RETA #%00001011,PTA PTA

COMP2 CBEQ N4,IR4 CBEQ N5,IR5 CBEQ N6,IR6 CBEQ NB,IRB JSR MOV LDA RETA #%00001101,PTA PTA

COMP3 CBEQ N7,IR7 CBEQ N8,IR8 CBEQ N9,IR9 CBEQ NC,IRC JSR RETA

MOV LDA

#%00001110,PTA PTA

COMP4 CBEQ NX,IRX CBEQ N0,IR0 CBEQ NS,IRS CBEQ ND,IRD

BRA

CMP1

IR1 IR2 IR3 IRA IR4 IR5 IR6 IRB IR7 IR8 IR9 IRC IRX IR0 IRS IRD

JMP JMP JMP JMP JMP JMP JMP JMP JMP JMP JMP JMP JMP JMP JMP JMP

ST1 ST2 ST3 STA ST4 ST5 ST6 STB ST7 ST8 ST9 STC STXL ST0 STS STD

ST1

CLRA LDA JSR LDA LDX STA INCX STX LDX INCX STX JMP CONT5 COMP2 CONT3 CONT5 #$31 ESCRIBIR #1T CONT3 DATOS,X

ST2

CLRA LDA JSR LDA LDX STA INCX STX LDX INCX STX JMP CONT5 COMP2 CONT3 CONT5 #$32 ESCRIBIR #2T CONT3 DATOS,X

ST3

CLRA

LDA JSR LDA LDX STA INCX STX LDX INCX STX JMP STA

#$33 ESCRIBIR #3T CONT3 DATOS,X

CONT3 CONT5

CONT5 COMP2

CLRA JMP COMP2

ST4

CLRA LDA JSR LDX LDA STA INCX STX LDX INCX STX CONT5 CONT3 CONT5 #$34 ESCRIBIR CONT3 #4T DATOS,X

JMP ST5

COMP2

CLRA LDA JSR LDA LDX STA INCX STX LDX INCX STX JMP CONT5 COMP2 CONT3 CONT5 #$35 ESCRIBIR #5T CONT3 DATOS,X

ST6

CLRA LDA JSR LDA LDX STA INCX STX LDX INCX STX JMP CONT5 COMP2 CONT3 CONT5 #$36 ESCRIBIR #6T CONT3 DATOS,X

STB

CLRA JMP COMP2

ST7

CLRA LDA JSR LDA LDX STA INCX STX LDX INCX STX JMP CONT5 COMP3 CONT3 CONT5 #$37 ESCRIBIR #7T CONT3 DATOS,X

ST8

CLRA LDA JSR LDA LDX STA INCX STX LDX INCX STX CONT5 CONT3 CONT5 #$38 ESCRIBIR #8T CONT3 DATOS,X

JMP

COMP3

ST9

CLRA LDA JSR LDA LDX STA INCX STX LDX INCX STX JMP CONT5 COMP3 CONT3 CONT5 #$39 ESCRIBIR #9T CONT3 DATOS,X

STC

CLRA JMP COMP3

STXL CLRA JMP ST0 COMP4

CLRA LDA JSR LDA LDX STA INCX #$30 ESCRIBIR #0T CONT3 DATOS,X

STX LDX INCX STX JMP

CONT3 CONT5

CONT5 COMP4

STS

CLRA JSR JMP IMPRIMIR COMP4

STD

CLRA LDA JSR LDA LDX STA INCX STX JMP CONT3 COMP4 #$2D ESCRIBIR #10T CONT3 DATOS,X

IMPRIMIR LDX LDA STA JSR JSR #0T DATOS,X NUM1 PRINT SOLEN

MOV

#0T,TIME

CARGARDATOS

LDX LDA CMP BHI BLO BEQ BRA DERECHA LDX LDA SUB STA MOV JSR JSR LDX INCX STX JMP

CONT6 DATOS+1,X DATOS,X DERECHA IZQUIERDA IGUAL FIN

CONT6 DATOS+1,X DATOS,X NUM1 #0T,TIME PRINT SOLEN CONT6

CONT6 CARGARDATOS

IZQUIERDA

LDX CONT6 LDA DATOS,X SUB DATOS+1,X STA NUM1 MOV #0T,TIME JSR PRINT2 JSR SOLEN LDX CONT6 INCX STX CONT6

;CONTADOR DE CARGADA DE DATOS

JMP CARGARDATOS IGUAl JSR RETA JSR RETA JSR SOLEN LDX CONT6 INCX STX CONT6 JMP CARGARDATOS PRINT2 LDX TIME LDA NUM1 CMP TIME BEQ SALIR2 BRA SEGUIR2 ;bajar solenoide ;si es igual el numero

SEGUIR2 JSR ROTARI INCX STX TIME JMP PRINT2 SALIR2 RTS PRINT LDX TIME LDA NUM1 CMP TIME BEQ SALIR BRA SEGUIR SEGUIR JSR ROTARD INCX STX TIME JMP PRINT ;

SALIR RTS ROTARD JSR JSR JSR JSR RTS ROTARDERECHA MOV #%1100,PTC ;riotar derecha ROTARDERECHA ROTARDERECHA ROTARDERECHA ROTARDERECHA

jsr jsr

reta reta

MOV jsr jsr

#%0110,PTC reta reta

MOV jsr jsr

#%0011,PTC reta reta

MOV jsr jsr

#%1001,PTC reta reta

RTS ROTARI JSR JSR JSR JSR ROTARIZQUIERDA ROTARIZQUIERDA ROTARIZQUIERDA ROTARIZQUIERDA

RTS

ROTARIZQUIERDA

;rotar izquierda

MOV jsr jsr

#%1001,PTC reta reta

MOV jsr jsr

#%0011,PTC reta reta

MOV jsr jsr

#%0110,PTC reta reta

MOV

#%1100,PTC

jsr jsr

reta reta

RTS SOLEN BSET 2,PTD JSR JSR JSR RETA RETA RETA ;rutina bajar solenoide

JSR JSR JSR JSR

RETA RETA RETA RETA

BCLR 2,PTD RTS

************************************** * RUTINA ESCRIBIR *

**************************************

ESCRIBIR: nop STA PTB nop nop BSET rs,PTD ;INDICA QUE ES UN DATO nop BSET en,PTD ;habilitacion LCD nop nop BCLR en,PTD ;deshabilitacion LCD nop JSR DELAY RTS ;PONE DATO EN EL PUERTO B

************************************** * RUTINA DE CONTROL *

**************************************

control: nop sta PTB ;pongo palabra de control en el puerto b nop nop bclr RS,PTD ;indico que es un comando de control nop bset EN,PTD ;habilitacion LCD nop nop bclr EN,PTD ;deshabilitacion LCD nop jsr DELAY rts

************************************** DELAY: MOV #20T,CONTDEL DELAY1: MOV #255T,CONTREL

DELAY2: DBNZ CONTREL,DELAY2 DBNZ CONTDEL,DELAY1 RTS RETA MOV LDA #255T,CONTA

#100T

REDO NOP NOP DBNZA REDO LDA #100T

DBNZ CONTA,REDO RTS MENS1 DB "Impresora " ORG DW VECTOR INICIO

DEDICATORIA

Las universidades privadas de comunidades catlicas o cristianas, castran, limitan, cohben, la libertad de pensamiento. su negocio es lavar cerebros mediante libros que estn escritos al acomodo y beneficio, de quienes quieren atemorizar y gobernar al mundo. estas comunidades solo piensan en captar dinero y poder en las arcas de quien las administra. son carentes de tica y de fundamento filosfico. Al observar cmo actan te dars cuenta del costal de falacias que vomitan por sus bocas. esta gente no merece ser llamada comunidad sino partido poltico religioso. estas populistas son clasistas y mezquinos, contra aquellos que promueven la libertad y el multi culturalismo del mundo. son hipcritas y faltos de carcter cuando de asumir responsabilidades se trata, sobre todo cuando ellos son causantes de los problemas de la humanidad. estas universidades privadas solo piensan en recibir el dinero de una matrcula, sin pensar en la calidad de educacin que estn vendiendo. estos solo pretenden llenar sus

aulas de estudiantes incautos, con sueos de superacin personal. Quines aceptan su falsa retorica, triunfan, obteniendo el titulo, quienes no, padecern hasta el punto de hacerlos desistir de su sueo u objetivo. Para estos polticos, con traje de sacerdote, lo ms importante es la propaganda, para recibir ms de estos incautos, mediante la falsa fachada de la investigacin como principio, que resulta ser una mentira, puesto que ni siquiera se invierten recursos significativos para que funcione, el objeto de esta, es consultar sobre lo ya investigado, y pegarlo en una revista con el nombre de la universidad. para aquellos que piensan entrar a desarrollar un proyecto de innovacin o invencin, no pierdan su tiempo en buscar apoyo en estas instituciones, preocpense por patentarlo, y luego en construirlo por cuenta propia. como ya es sabido, la ambicin desmedida, de estos comits es apropiarse del trabajo, para modificarlo, y patentarlo como modelo de utilidad a nombre de la universidad, y por ultimo venderlo a un tercero de manera oculta. si usted ya ha patentado su proyecto, y desea entrar en conciliacin con la universidad para fabricarlo. no pierda su tiempo, se ganara un enemigo, y pondr en cuerda floja su carrera. si quiere tener xito en una universidad de estas, nunca demuestre mayores capacidades de las que puedan tener sus docentes, nunca devele cosas anteriormente aprendidas, sea preguntn y adulador al mismo tiempo, no haga caer en cuenta los errores de los docentes delante de la clase, no genere controversia, ni siquiera coloque crticas constructivas, no sea autodidacta, recurra siempre al profesor, recuerde que mantenerle el ego a los integrantes es lo importante, sea catlico, entre a sus templos, siga sus costumbres, haga parte enteramente de su comunidad, as usted no est de acuerdo. estudie y haga parte de un grupo de investigacin, as no hagan nada extraordinario, ganara puntos. por ltimo les invito hacer del estado, su escudo y espada, para defenderse de aquellos, que pretenden serlo, pero que nunca aparecen, cuando tienen que luchar por nuestros derechos, no hay que dejaos amedrentar por una partida de fascistas con sotana y silla en el senado. la educacin y la ciencia, sern las herramientas para sostenernos y liberarnos del yugo. la universidad pblica prevalecer.

la educacin no es un negocio. es el futuro de una nacin y un pas.

ATT ANONIMUS

Das könnte Ihnen auch gefallen