por MedeM - 28 Feb 2011, 12:16
-
Perfil básico de usuario
- 28 Feb 2011, 12:16
#258990
Hola soy estudiante de Ingeniería Electrónica, y estoy haciendo con PIC 16F84 un reloj que cuente segundos, minutos y horas con 4 displays para que muestre las unidades de minutos, decenas de minutos, unidades de horas y decenas de horas.
Tengo el programa hecho para que haga la cuenta pero a la hora de hacer los displays no se como hacerlo ni como configurar el PORTA y PORTB.
Acá pongo el trozo del programa del main donde intento configurar los puertos del pic a ver si me pueden echar una mano! Gracias de antemano!
bsf STATUS,RP0 ;Ponemos a 1 el RP0 para acceder al banco 1 para OPTION_REG
bcf OPTION_REG, T0CS ; Para obtener FOSC/4
bsf OPTION_REG, PS2 ;
bcf OPTION_REG, PS1 ;[101]--> 61,0351 --> 61 Interrupciones.
bsf OPTION_REG, PS0 ;
bcf OPTION_REG, PSA ; Para activar el prescaler.Se hace la division entre 64
bsf INTCON, GIE ;Activamos GIE para acceder a nuevas interrupciones
bsf INTCON, T0IE ;Activamos el bit de T0IE para habilitar la interrupcion por desbordamiento del timer
movlw B'11100' ;configuro 3 bits como entra y 2 bits como salida
movwf TRISA
movlw B'00000000' ;configuro todo como salida
movwf TRISB
bcf STATUS, RP0 ;Ponemos a 0 RP0 para acceder al banco 0
Aquí pongo un display como creo que debería de implementarse pero no se si estaría correcto, la función call tabla, te lleva a una tabla que te devuelve el numero correcto que creo eso si está correcto.
; El Display
Display
;Display1
movf uminutos,W
call tabla
bcf PORTA, 0
bcf PORTA, 1
movf uminutos, W
movwf PORTB
tabla
addwf PCL, F
retlw B'11000000'
retlw B'10100100'
retlw B'10110000'
retlw B'10011001'
retlw B'10010010'
retlw B'10000011'
retlw B'11111000'
retlw B'10000000'
retlw B'10011000'
Gracias de antemano! y un saludo!
Tengo el programa hecho para que haga la cuenta pero a la hora de hacer los displays no se como hacerlo ni como configurar el PORTA y PORTB.
Acá pongo el trozo del programa del main donde intento configurar los puertos del pic a ver si me pueden echar una mano! Gracias de antemano!
bsf STATUS,RP0 ;Ponemos a 1 el RP0 para acceder al banco 1 para OPTION_REG
bcf OPTION_REG, T0CS ; Para obtener FOSC/4
bsf OPTION_REG, PS2 ;
bcf OPTION_REG, PS1 ;[101]--> 61,0351 --> 61 Interrupciones.
bsf OPTION_REG, PS0 ;
bcf OPTION_REG, PSA ; Para activar el prescaler.Se hace la division entre 64
bsf INTCON, GIE ;Activamos GIE para acceder a nuevas interrupciones
bsf INTCON, T0IE ;Activamos el bit de T0IE para habilitar la interrupcion por desbordamiento del timer
movlw B'11100' ;configuro 3 bits como entra y 2 bits como salida
movwf TRISA
movlw B'00000000' ;configuro todo como salida
movwf TRISB
bcf STATUS, RP0 ;Ponemos a 0 RP0 para acceder al banco 0
Aquí pongo un display como creo que debería de implementarse pero no se si estaría correcto, la función call tabla, te lleva a una tabla que te devuelve el numero correcto que creo eso si está correcto.
; El Display
Display
;Display1
movf uminutos,W
call tabla
bcf PORTA, 0
bcf PORTA, 1
movf uminutos, W
movwf PORTB
tabla
addwf PCL, F
retlw B'11000000'
retlw B'10100100'
retlw B'10110000'
retlw B'10011001'
retlw B'10010010'
retlw B'10000011'
retlw B'11111000'
retlw B'10000000'
retlw B'10011000'
Gracias de antemano! y un saludo!