.: Código para visualizar 4 display's
Recuerda, si quieres ensamblar este programa, deberás modificar el encabezado, cambiando el nombre del archivo P16F84luis.INC por el que tu tienes, por lo demás no creo que tengas problemas.
Suerte...!!!
;---------------Encabezado-------------------
LIST P=16F84
#include <P16F84luis.INC>
;-------- Variables a utilizar --------
ret1 equ 0x0d ; utilizado en retardos (milisegundos)
ret2 equ 0x0e ; utilizado en retardos
rota equ 0x0f ; rota el uno para habilitar displays
disp1 equ 0x10 ; primer dígito a mostrar
disp2 equ 0x11 ; segundo dígito a mostrar
disp3 equ 0x12 ; tercer dígito a mostrar
disp4 equ 0x13 ; cuarto dígito a mostrar
;-------Configuración de puertos-------
reset ORG 0x00
GOTO inicio
ORG 0x05
inicio BSF STATUS,RP0 ; configurando puertos
CLRF TRISA ; portA es salida
CLRF TRISB ; portB es salida
BCF STATUS,RP0
; ------- carga de registros a mostrar -------
MOVLW 0x01
MOVWF disp1
MOVLW 0x02
MOVWF disp2
MOVLW 0x03
MOVWF disp3
MOVLW 0x04
MOVWF disp4
; ----------- apaga transistores ----------
CLRF PORTA
; ----------- PROG. PPAL ----------
ini MOVLW 0x08
MOVWF rota ; rota= '00001000'
MOVLW disp1
MOVWF FSR ; CARGA FSR CON LA DIRECC. DE disp1
display MOVLW 0x00
MOVWF PORTB ; PORTB=00000000
MOVF rota,W
MOVWF PORTA ; PORTA= 00001000
MOVF INDF,W ; lee dato al que apunta FSR (o sea disp1)
CALL tabla ; llama a la tabla
MOVWF PORTB ; pasa el dato al puerto B
CALL retardo ; llama miniretardo
BTFSC rota,0 ; rota = 00000000 ???
GOTO ini ; si es así, se vio todo, comienza otra vez
BCF STATUS,C ; carry = 0 (para no afectar rotaciones)
RRF rota,F ; rota display
INCF FSR,F ; apunta al siguiente disp_X
GOTO display
;------- RETARDO -------
retardo MOVLW 0x03
MOVWF ret1
dos MOVLW 0x6E
MOVWF ret2
uno NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ ret2,F
GOTO uno
DECFSZ ret1,F
GOTO dos
RETLW 0x00
;------- TABLA -------
tabla ADDWF PCL,F ; se incrementa el contador de programa
;display . gfedcba segmentos de los leds del display
NOP
RETLW B'00111000' ; código para la L
RETLW B'00111110' ; código para la U
RETLW B'00000110' ; código para la I
RETLW B'11101101' ; código para la S.
;------------------------------------------
END
;------------------------------------------
| |
Sería bueno verlo funcionar, así que aquí lo tienen...
Es eso simplemente, mostrar un mensaje, y la secuencia entre cada carecter es muy difícil de notar, ya que la velocidad es muy elevada.
Podríamos mejorarlo y hacer que se desplacen los caracteres de un lado a otro, no crees...???, eso lo dejo en tus manos, ya que con todo lo que tienes, puedes hacer lo que se te ocurra, es más, podrías armarte tus display's con LED's comunes, agruparlos en forma de segmentos y trabajar con ellos, que más, bueno, no se, ya verás que es lo que haces, o te quedarás simplemente con esto...???
R-Luis...
<--Anterior
Introducción
Siguiente -->
Tabla de Referencias
|