Diagrama en bloque del programa

Comentarios

Transcripción

Diagrama en bloque del programa
Diseño de controladores digitales
Dosificador programable
con microcontrolador MC68HC11f1
Diseño:
Profesor:
Guillermo Hernan Carrera (4213)
Germán Sille
revisión: 03 12/17/02
fecha: segundo cuatrimestre de 2002
dosificador programable
descripción de la funcionalidad
Se trata de un dosificador de líquido programable donde se puede seleccionar el intervalo y la cantidad a dosificar. Ya
que el proceso es totalmente automático, posee alarmas para cualquier tipo de anomalías que puedan ocurrir con la
dosificación, como ser falta de líquido a dosificar, fallas en las válvulas, fallas en la bomba, etc.
utilidad del proyecto
El proyecto posee una selección analógica de la cantidad de líquido a dosificar y una selección del intervalo en el que se
producirá la dosificación.
Primera aproximación del proyecto y funcionalidad
intervalo
1
2
Cambiar
intervalo
Apagar
alarma
Valvula solenoide
Dosificación
Sensor de nivel
Bomba
Sensor de vacío
Funcionamiento principal:
1)Se debe seleccionar el intervalo de tiempo en el cual se producirá la dosificación mediante los comandos cambiar
intervalo, el intervalo seleccionado aparecerá en los display de 7 segmentos. Las opciones de selección van desde
apagado hasta 24 que son las 24 horas del día (en la demostración se utilizaran minutos en lugar de horas). Si el
dosificador está en la posición apagado (con los 2 display apagados) y se presiona la tecla de bajar intervalo, se
emite una señal acústica que indica una selección errónea, lo mismo sucede si de presiona la tecla de subir con el
dosificador en la posición 24.
2)Se debe seleccionar el nivel de dosificación, mediante el potenciómetro giratorio, es decir del valor del potenciometro
de referencia depende el nivel de llenado.
3)Una vez cumplido el intervalo se producirá la dosificación de la siguiente manera:
- Se abrirá la válvula solenoide para permitir la dosificación desde el vaso superior hacia el vaso inferior.
- Se producirá el llenado del vaso inferior hasta llegar al nivel seleccionado con el potenciómetro de referencia.
- Se producirá un tiempo de espera para visualizar el nivel y un aviso sonoro en señal de haberse cumplido en nivel
seleccionado mediante un “bip”.
- Se activará la bomba de vaciado (en el proyecto la dosificación volverá al primer recipiente, en la realidad debe ir al
lugar que queremos dosificar) retornando el líquido al vaso superior
- Cuando se active el detector de vacío, se apagará la bomba y se dará aviso acústico en señal de haberse cumplido el
ciclo completo de dosificación mediante 2 “bip”
- El sistema quedará listo para la siguiente dosificación, en el intervalo establecido.
Rutinas de alarma:
El dosificador posee 3 rutinas de alarma diferentes a saber:
1)Una vez cumplido el intervalo y aprontarse a la apertura de la válvula, el vaso inferior debe estar vacío, si no lo
estuviera es señal de que la válvula no está sellando correctamente o que el proceso de vaciado anterior no se
cumplió con normalidad, por lo tanto el dosificador antes de abrir la válvula verifica que el recipiente este vacío, si
no lo está, comienza a sonar la alarma. El modo de corrección del problema es verificar la falla, vaciar el recipiente
mediante el interruptor manual de la bomba y una vez vacío oprimir el botón de apagar alarma. Una vez realizado
esto se reinicia la rutina de dosificación.
2)Una vez abierta la válvula comienza a llenarse el recipiente, si no se detecta que el nivel alcanzado igualó al
seleccionado en un intervalo de 10 segundos aproximadamente es señal que no está funcionando la válvula o existen
problemas con el detector de nivel, por lo tanto si transcurren los 10 segundos y no se alcanzó el nivel seleccionado,
el dosificador cierra la válvula y emite una señal de alarma. El modo de corrección del problema es verificar la falla
y oprimir el botón de apagar alarma. Una vez realizado ésto se reinicia la rutina de llenado.
3)Terminado el ciclo de llenado se efectúa el vaciado del vaso inferior, si no se detecta que el vaso está vacío en un
intervalo de 10 segundos aproximadamente es señal que no está funcionando la bomba o el detector de vacío, por lo
tanto si transcurren los 10 segundos y no se vació el vaso inferior, el dosificador apaga la bomba y emite una señal
de alarma. El modo de corrección del problema es verificar la falla y oprimir el botón de apagar alarma. Una vez
realizado esto se reinicia la rutina de vaciado.
Observaciones: Hay que tener en cuenta que mientras el dosificador esté en señal de alarma el tiempo sigue
transcurriendo y puede ejecutarse la dosificación siguiente. De ocurrir esto, una vez atendida la rutina de alarma y
terminado el ciclo de dosificación, se ejecutará inmediatamente la o las rutinas de dosificación acumuladas, es decir el
dosificador memoriza las dosificaciones no atendidas y las ejecuta en forma seguida una vez que el sistema volvió a su
estado normal.
Funcionalidades utilizadas del micro
- 2 posiciones del conversor A/D, una para el nivel de referencia y otra para el nivel de llenado
- 2 interrupciones por timmer, con comparadores de tiempo, una para el reloj principal y otra para señales acústicas.
Configuración de los puertos utilizados
Bit 0
Bit 1
Bit 2
Bit 3
Bit 4
Bit 5
Bit 6
Bit 7
Bit 8
Port A
Timmer
------------------------------Parlante
-------------------
Port B
Port C
Port D
Display 7s Entradas
Sin uso
1 segmento Interrup. Subir
------1 segmento Interrup. Bajar
------1 segmento Interr. Alarma
------1 segmento Sensor Vacío
------1 segmento
------------1 segmento
------------1 segmento
------------------------------1 segmento
-------------
Port E
Conversor
Nivel refer.
------------Niv. llenado
-------------------------------
Port F
Port G
Display 7s Salidas
1 segmento Válvula
1 segmento Bomba
1 segmento
------1 segmento
------1 segmento
------1 segmento
------1 segmento
------------------1 segmento
-------
Diagrama en bloque de las conexiones
Parlante
Nivel de
referencia
Nivel de
llenado
Bomba
Válvula
Displays de
7 segm
Port F
Port A
Port B
Port E
Micro
Port G
Port C
Subir
Bajar
Botones
Alarma
Sensor
de vacío
Circuitos anexos
COMANDO DE VALVULA (24V) – COMANDO DE MOTOR (12V)
V2
12V
+V
+
5V
+V
1N4007
0.1uF
100uF
D1
DIODE
RLY1
12VSPDT
S1
D2
ZENER
BC337
R2
4.7k
M1
Q1
NPN
BZV49 C3V3
R1
10k
BC337
Q2
NPN
La fuente de tensión utilizada es una fuente universal de PC ya que el equipo trabaja con 5V para la parte de señal, 12V
para la bomba de vacío y 24V para la válvula solenoide, todas estas tensiones se pueden obtener de la fuente universal.
Los comandos de potencia de la válvula y el motor son dos circuitos independientes como los indicados en la figura
anterior. El pulso de activación ingresa por S1 (pulso del puerto) y polariza a los transistores BC337 en configuración
“Darlington”, el diodo zener se encarga de reducir la tensión de entrada a 1,7 V y la resistencia R2 aporta la corriente
necesaria para polarizar el transistor. La resistencia 1 asegura la tensión nula al transistor cuando no hay pulso. La
configuración Darlington se utiliza para alimentar en forma holgada al rele de comando con unos pocos miliamperes de
pulso. El diodo D1 protege a los transistores, y por consecuencia al puerto, de los picos de FEM producidos por la
bobina del relé. Los capacitores contribuyen a mantener la alimentación limpia de ruidos.
SENSOR DE VACIO
5V
+V
4,7K
50k 40%
1k
señal
10k
U1
OPTOISO
Q1
NPN
Q2
NPN
El sensor de vacío se trata de
una barrera infrarroja U1 la
misma posee un diodo emisor
alimentado en serie con una
resistencia de 1K que limita la
corriente de funcionamiento,
La parte receptora se alimenta
con una resistencia variable
ya que se debe regular en
función de la iluminación
ambiente. Nuevamente la
señal surge de 2 transistores
en configuración Darlington.
Diagrama en bloque del programa
Seteo inicial
Subir / bajar
Inicio
Si
Subir
Max
valor ?
Exceso
Boton
Subir?
Agrego OC3
No
Incremento X
Bajar
Busco valor
Boton
Bajar?
Subir?
Activa parlant
Actualizo display
No
No
Dosif
.
Solto
botón
?
Inicio
Dosif.
Si
Elimina OC3
No
masa
Alarma
Interrupción
de intervalo
cumplido
Apaga todo
Carga y suma
al comparador
Encien.parlant
e
Incr
Acumulador
No
RTS
Espera
Apaga
Llego
Espera
Si
Inc.
dosificación
No
Botón apagar?
RTS
Si
Borra acum.
RTS
Dosificacion
Vacio
No
Alarma
Si
Abre valvula
acum.
No
ConversorA/D
Borra acum.
Llego
?
No
Acumula
Si
Alarma?
Alarma
Cierra valvula
Señal acústica
No
Enciende
Bomba
Vacio
?
Si
Apaga bomba
Señal acústica
Decrementa
dosificación
Inicio
No
Acumula
Alarma?
Si
Alarma
Código fuente
;----------------------------------------------------------------------------;Proyecto: Dosificador programable
Autor: Guillermo Carrera
;Microcontrolador: MC68HC11F1
;Profesor: German Sille
;Fecha: Diciembre 2002
;----------------------------------------------------------------------------;----------------------Declaraciones-----------------------------------------;Puertos========================
PORTF EQU $1005
;display numero derecha
PORTB EQU $1004
;display numero izquierda
PORTC EQU $1006
;entradas varias botones
DDRC EQU $1007
;controlador PortC
PORTG EQU $1002
;salidas
DDRG EQU $1003
;controlador PortG
;Timmer=========================
TCTL1 EQU $1020
;control del timmer
TMSK1 EQU $1022
;mascaras de timmer
TOC2 EQU $1018
;comparador de tiempo 2 (general)
TOC3 EQU $101A
;comparador de tiempo 3 (sonido)
TFLG1 EQU $1023
;banderas del timmer
TMSK2 EQU $1024
;mascaras
;conversor A/D==================
ADCTL EQU $1030
ADR1 EQU $1031
ADR2 EQU $1032
OPTION EQU $1039
;--------------------programa------------------------------------------------;--------------------seteo inicial-------------------------------------------ORG
LDS
$0
#$3FF
;comienzo en 00
;fijo el inicio de la pila
;puertos===================
LDAA #$00
STAA DDRC
;puerto C todo entradas
LDAA #$FF
STAA DDRG
;puerto G todas salidas
LDAA #%00000100
;activo el pulso de reset
STAA PORTG
;del nivel de llenado
CLR PORTG
;inicia en 0
;timmer====================
CLI
;habilito interrupciones en registro general
LDAA #$40
;01000000
STAA TMSK1
;habilito interrupciones del TOC2
LDAA #$03
;00000011
LDAA TMSK2
;preescala en minimo %16
;-----------------------rutina de configuracion inicial-----------------------LDX #TABLA
;indice en el inicio de la tabla
LDAA $0,X
;A=1ø valor derecha
STAA PORTF
;lo coloco en display derecha
INX
;busco el valor de la izquierda
LDAB $0,X
;B=1ø valor izquierda
STAB PORTB
;lo coloco en display izquierda
INX
;dejo listo el indice para el 2ø valor
STX MEM
;guardo la posicion en una variable
;------------------------rutina principal------------------------------------INICIA: LDAA PORTC
;lee el puerto de entradas
ANDA #%00000011
;filtro el boton de subir y bajar
CMPA #%00000001
;pregunto por el boton de subir
BEQ SUBE
;si esta presionado sube
CMPA #%00000010
;pregunto por el boton de bajar
BEQ BAJA
;si esta presionado baja
LDAB DOSIFI
;verifica si hay alguna dosificacion acumulada
CMPB #$00
;si hay alguna
BNE VOY
;va al proceso de dosificacion
JMP INICIA
;queda en el bucle infinitamente
;----------------------------------------------------------------------------VOY: JMP PROCES
;como el salto es muy grande necesito usar un JMP
;-----------------------rutina para incrementar los minutos------------------SUBE: LDAA MINUTO
;toma el valor en del minuto actual
CMPA #24
;verifico si es el valor maximo posible
BEQ EXESO
;si es el maximo no puedo subir mas
LDX MEM
;si no es el maximo tomo el valor memorizado del indice
LDAA $0,X
;entro con ese valor a la tabla
STAA PORTF
;pongo el valor de la derecha
INX
;busco el valor de la izquierda
LDAB $0,X
;tomo el valor de la tabla
STAB PORTB
;pongo el valor de la izquierda
INX
;dejo listo el indice para el proximo valor
INC MINUTO
;incremento el valor del minuto
STX MEM
;guardo el valor del indice en una variable
JSR REBOTE
;hago un ciclo de espera anti-rebote
CLR ESP1
;borro las variables encadenadas del timmer
CLR ESP2
;para que el tiempo transcurra desde
CLR ESP3
;este punto del programa
JMP INICIA
;vuelvo al lazo principal
;----------------------------------------------------------------------------;-------------------------rutina para decrementar los minutos----------------BAJA: LDAA MINUTO
;tomo el valor actual de minuto
CMPA #0
;lo comparo con el minimo posible
BEQ EXESO
;si es el minimo no puedo seguir bajando
LDX MEM
;tomo el valor del indice de la variable
DEX
;lo decremento 4 veces porque siempre esta
DEX
;preparado para leer el valor inmediato
DEX
;superior
DEX
LDAA $0,X
;tomo el valor de la derecha
STAA PORTF
;muestro el valor de la derecha
INX
;busco el valor de la izquierda
LDAB $0,X
;tomo el valor de la izquierda
STAB PORTB
;muestro el valor de la izquierda
INX
;dejo listo el indice para el inmediato superior
DEC MINUTO
;decremento la variable minutos
STX MEM
;guardo el valor del indice en una variable
JSR REBOTE
;hago una rutina de espera anti-rebote
CLR ESP1
;borro las variables encadenadas del timmer
CLR ESP2
;para que el tiempo transcurra desde este punto
CLR ESP3
;del programa
JMP INICIA
;vuelvo al lazo principal
;----------------------------------------------------------------------------;--------------------rutina de senalizacion acustica de exeso----------------EXESO: LDAA TMSK1
;toma el valor actual de la mascara del timmer
ORAA #%00100000
;agrego OC3
STAA TMSK1
;para la onda cuadrada del parlante
LDAA #$10
;0001000 modo de salida por el PORTA
STAA TCTL1
;XOR del bit 5
NOSOLT: LDAA PORTC
;tomo el estado actual del puerto
ANDA #%00000011
;filtro los botones de subir y bajar
CMPA #0
;pregunto si los solto
BNE NOSOLT
;si no solto espero
LDAA TMSK1
;tomo el valor actual del la mascara del timmer
ANDA #%11011111
;elimino OC3
STAA TMSK1
;para que deje de sonar el parlante
CLR TCTL1
;borro el modo de salida porque sino "ronronea"
JMP INICIA
;vuelvo al programa principal
;----------------------------------------------------------------------------;------------------interrupciones--------------------------------------------;parlante============================
ORG $D9
JMP PARLAN
;general=============================
ORG $DC
JMP INTOC2
;-----------------atencion de interrupciones---------------------------------;-----------------parlante---------------------------------------------------PARLAN: LDD TOC3
;tomo el valor actual del TOC3
ADDD #$100
;le sumo $100 para establecer frecuencia
STD TOC3
;de onda y lo vuelvo a guardar
LDAA #%00100000
;borro la bandera para que entre la
STAA TFLG1
;siguiente interrupcion
RTI
;vuelvo a la rutina exeso
;Nota: no tengo que hacer nada mas porque al generarse la interrupcion, de la
;
forma que esta seteado el TCTL1, me hace un XOR con el bit de salida, generando
;
onda cuadrada
;----------------------------------------------------------------------------;----------------Timmer principal--------------------------------------------INTOC2: LDD TOC2
;carga valor actual del contador
ADDD #$B500
;le suma el tiempo de espera
STD TOC2
;y lo vuelve a cargar
LDAA #$40
;limpia el flag de interrupcion del
STAA TFLG1
;timer OC2
JSR TEMP
;entra en subrutina de acumulacion
RTI
;vuelve a la rutina principal
;------------acumulacion de variables encadenadas----------------------------TEMP: INC ESP1
;incremento la 1ø variable hasta que llegue a 256
BNE FALTA
;mientras no llegue espero otra interrupcion
INC ESP2
;incremento la 2ø variable hasta que llegue a 10
LDAA ESP2
;mientras no llegue espero otro bucle de la 1ø variable
CMPA #$0A
;la segunda variable debe llegar a 10
BNE FALTA
;si no llego sigo esperando
CLR ESP2
;si llego borro para dejar lista la variable
INC ESP3
;incremento la 3ø variable la cantidad de veces
LDAA ESP3
;que tenga cargado la variable minuto
CMPA MINUTO
;mientras no llegue espero otro bucle de la 2ø variable
BNE FALTA
;
;----------------------------------------------------------------------------;-------------------------acumula dosificacion-----------------------------LISTO: CLR ESP2
CLR ESP3
INC DOSIFI
FALTA: RTS
;si llego borro las variables encadenadas
;para que encadene todo de nuevo
;lo unico que hace contar en el port
;si no llego vuelve a INTOC2
;-------------------rutina de anti-rebote------------------------------------REBOTE: CLR CONT1
;incrementa 256 x 256
LAZO1: CLR CONT2
LAZO2: INC CONT2
BNE LAZO2
INC CONT1
BNE LAZO1
RTS
;----------------------------------------------------------------------------;---------------------------llamado de alarma--------------------------------ALARM1: JSR ALARMA
;entra en alarma
LDAA #%00000100
;activo el pulso de reset
STAA PORTG
;del nivel de llenado
CLR PORTG
;dejo apagado
PROCES: LDAA PORTC
;leo el puerto de entradas
ANDA #%00001000
;selecciono la bandera de vacio
CMPA #$00
;si el recipiente inferior no esta
BNE ALARM1
;vacio entro en alarma
LDAA OPTION
;tomo el valor actual del registro
ORAA #%10000000
;y le agrego la habilitacion del conversor
STAA OPTION
;A/D
LDAB #$02
;cargo el valor se seteo para espera
STAB TEMPO
;de llenado (cuanto tiempo esperar para activar alarma)
LDAB #$01
;activo la valvula de llenado
STAB PORTG
;con un 00000001 en el PORTG
STAB ESTADO
;lo guargo por si entro en alarma
MAYOR: LDAA #$10
;escribiendo un $10 en el registro de control
STAA ADCTL
;del conversor A/D inicio el ciclo de lectura
ESPERA: LDAA ADCTL
;cuando termino el ciclo de conversion me pone un 0 en el
BPL ESPERA
;bit mas alto, sino quedo en espera
JSR CUENTA
;empiezo a acumular el tiempo de alarma
LDAA ADR1
;VALOR DE REFERENCIA (bit 0)
LSRA
;hago un shift para evitar el complemento A2
LDAB ADR2
;VALOR VARIABLE (bit 3)
LSRB
;hago un shift para evitar el complemento A2
CBA
;A-B
BPL MAYOR
;si la referencia A>B sigue esperando que se llene
JSR BORRAN
CLR PORTG
;si B>A (supero el nivel) apago la valvula de llenado
JSR REBOTE ;espera para visualizar
JSR REBOTE ;espera para visualizar
JSR UNBIP
;senal sonora "bip"
LDAB #$05
;cargo la cantidad de rebotes
STAB TEMPO
;que quiero para visualizar
OKLLE: JSR REBOTE
;espera para visualizar
DEC TEMPO
;tantas esperas como diga tempo
BNE OKLLE
;si no llegó vuelve
LDAB #$09
;cargo el valor se seteo para espera
STAB TEMPO
;de vaciadoo (cuanto tiempo esperar para activar alarma)
LDAB #$02
;activo la bomba
STAB PORTG
;para vaciar el recipiente
STAB ESTADO
;lo guargo por si entro en alarma
VACIAR: LDAA PORTC
;leo el PORTC
ANDA #%00001000
;y selecciono la bandera de vacio
JSR CUENTA
;acumulo las variables de alarma
CMPA #$00
;espero a que se active la
BNE VACIAR
;bandera de vacio
JSR REBOTE
;(sacar despues)
CLR PORTG
;apaga todo
JSR BORRAN
;borra las variables encadenadas
JSR REBOTE
;(sacar despues)
JSR DOSBIP
;senal sonora de "bip bip" indica fin del ciclo
DEC DOSIFI
;ya atendi una interrupcion
LDAA #%00000100
;activo el pulso de reset
STAA PORTG
;del nivel de llenado
JSR REBOTE
;espero
CLR PORTG
;apago todo
JMP INICIA
BORRAN: CLR ACUMUL1
;si llego borro
CLR ACUMUL2
;las variables de acumulacion
CLR ACUMUL3
;de la alarma
RTS
;--------------------------senal acustica "bip"------------------------------UNBIP: JSR REBOTE
;espero
JSR BIP
;activo el parlante
JSR REBOTE
;y espera
JSR NOBIP
;apago el parlante
RTS
;--------------------------senal acustica "bip"------------------------------DOSBIP: JSR REBOTE
;espero
JSR BIP
;activo el parlante
JSR REBOTE
;y espera
JSR NOBIP
;apago el parlante
JSR REBOTE
;y espera
JSR BIP
;activo el parlante
JSR REBOTE
;y espera
JSR NOBIP
;apago el parlante
RTS
;-------------------------acumulacion de variables de alarma-----------------CUENTA: INC ACUMUL1
;incremento la 1ø variable hasta que llegue a 256
BNE FALTA1
;mientras no llegue espero
INC ACUMUL2
;incremento la 2ø variable hasta que llegue a 10
BNE FALTA1
;mientras no llegue espero
INC ACUMUL3
;incremento la 3ø variable la cantidad de veces
LDAA ACUMUL3
;que tenga cargado la variable TEMPO
CMPA TEMPO
;mientras no llegue espero
BNE FALTA1
;
CLR ACUMUL3
;borro que encadene todo de nuevo
JSR ALARMA
;entra en alarma
FALTA1: RTS
;si no llego vuelve
;Nota: Los valores de TEMPO deben ser distintos porque en el llenado se llama a la acumulacion
;dentro del bucle de coversion del conversor y en la de vaciado dentro del bucle de lectura
;del puerto que es mucho rapido que el bucle de conversion
;-----------------encendido del parlante-------------------------------------BIP: LDAA TMSK1
;toma el valor actual de la mascara del timmer
ORAA #%00100000
;agrego OC3
STAA TMSK1
;para la onda cuadrada del parlante
LDAA #$10
;0001000 modo de salida por el PORTA
STAA TCTL1
;XOR del bit 5
RTS
;vuelvo
;------------------apagado del parlante--------------------------------------NOBIP: LDAA TMSK1
;tomo el valor actual del la mascara del timmer
ANDA #%11011111
;elimino OC3
STAA TMSK1
;para que deje de sonar el parlante
CLR TCTL1
;borro el modo de salida porque sino "ronronea"
RTS
;vuelvo
;------------------rutina de alarma------------------------------------------ALARMA: CLR PORTG
;apaga lo que este funcionando
JSR BIP
;enciendo el parlante
JSR REBOTE
;espero
JSR NOBIP
;apago el parlante
JSR REBOTE
;espero
LDAA PORTC
;leo el puerto de entradas
ANDA #%00000100
;y selecciono el interruptor de apagado
CMPA #$00
;si no esta presionado
BEQ ALARMA
;quedo en un bucle
; LDAA PORTC
;leo el PORTC
; ANDA #%00001000
;y selecciono la bandera de vacio
;CMPA #$00
;espero a que se active la
; BNE NOVAC
;bandera de vacio
; LDAA #%00000100
;activo el pulso de reset
;STAA PORTG
;del nivel de llenado
NOVAC: LDAB ESTADO
;recupera el estado inicial del puerto
STAB PORTG
;enciende lo que estaba prendido
RTS
;-----------------------------------------------------------------------------;----------------------variables declaradas-----------------------------------;posicion del indice====================
MEM: BYTE $00
BYTE $00
;estado del puerto======================
ESTADO: BYTE $00
;valor espera de alarmao================
TEMPO: BYTE $00
;valor del minuto=======================
MINUTO: BYTE $00
;variables encadenadas principales======
ESP1: BYTE $00
ESP2: BYTE $00
ESP3: BYTE $00
;variables de rebote====================
CONT1: BYTE $0
CONT2: BYTE $0
;dosificaciones acumuladas==============
DOSIFI: BYTE $0
;variables encadenadas de alarma========
ACUMUL1:BYTE $0
ACUMUL2:BYTE $0
ACUMUL3:BYTE $0
;tabla con valores de display===========
TABLA: BYTE $FF
BYTE $FF ;nada nada
BYTE $5F
BYTE $FF ;nada 1
BYTE $C8
BYTE $FF ;nada 2
BYTE $4A
BYTE $FF ;nada 3
BYTE $53
BYTE $FF ;nada 4
BYTE $62
BYTE $FF ;nada 5
BYTE $60
BYTE $FF ;nada 6
BYTE $4F
BYTE $FF ;nada 7
BYTE $40
BYTE $FF ;nada 8
BYTE $42
BYTE $FF ;nada 9
BYTE $44
BYTE $5F ;1 0
BYTE $53
BYTE $C8 ;2 4
;nota: los display utilizados son de anodo comun
;--------------------------------fin del programa-----------------------------

Documentos relacionados