Mostrar cuenta de 0 - 9 con 74164 con pic

HOLA AMIGOS.. SOY UN ESTUDIANTE DE ING ELECTRONICA... ESTOY ENTRANDO EN EL MUNDO DE LOS Uc PIC y ya tengo varios proyectos.. bueno mi problema es el siguiente quiero hacerme un contador con el pic de 0 - 9 con el registro 74164 con el pic claro.. ya lo e implementado con instrucciones simples como el bsc y bsf.. bueno quiero que me muestre los numeros en el display anodo comun pero utilizando la instruccion RRF.. la para secuencias de luces ya la e implementado pero para mostrar un numero con ese registro no puedo hacerlo.. si alguien me pudiera ayudar o ya lo a hecho y me pueda pasar algo de la programacion en ASM se lo agradeceria muchisimo.. SALUDOS DESDE PERUU.
 
Si áun lo necesitas; el punto de tu problema es hacer una rutina que envié serialmente el byte que hará que ciertos segmentos de tu display se enciendan. Por acá te dejo una rutina que utilicé para enviar datos serialmente precisamente a un registro SIPO 74164:

Código:
        movf		Byte,W
	movwf		Corrimiento		;Transfiere el dato a enviar al registro de  desp  
	movlw		.8
	movwf		Contador1			;Numero de bits a enviar al registro de relés
	bcf			Dat
	btfsc		Corrimiento,.7
	bsf			Dat				;Revisa si el bit a enviar es 0 o 1
	bcf			Rlj
	bsf			Rlj				;Envía el bit al registro externo
	rlf			Corrimiento,F		;Pasa al siguiente bit a enviar
	decfsz		Contador1,F		;¿Ya se enviaron los 8 bits?
	goto		$-.7				        ;Aún no, siguen enviado los siguientes bits
	return						;Datos enviados, retorno de la subrutina

Es una sencilla rutina que envía el dato almacenado en el registro "byte" por medio del pin definido como Dat (pin de datos) y el pin de señal de reloj (Rlj), el "Contador1" funciona como contador de bits enviados y el registro "Corrimiento" es un registro temporal donde se copia el byte a enviar
 
Saludos.
Aqui les adjunto un ejemplo de un contador 0-999 con un PIC16F628A y tres 74LS164
Omitendo las líneas de configuración del registro CMCON, cambiando la dirección de RAM del bloque de variables,
por 0x0C y la cabecera del programa por.
list p=16F84A
#include <P16F84A.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

Se puede usar para un PIC16F84A. Espero sirva de ayuda.

Suerte y hasta luego.
 

Adjuntos

  • Contador 0-999 con PIC16F628A y 74LS164.rar
    20 KB · Visitas: 220
  • SCH.gif
    SCH.gif
    49.8 KB · Visitas: 97
Última edición:
Un saludo a todos los amigos visitantes de este foro, que siempre comparten sus conocimientos.
También agradecerle el Sr. D@rkbytes, por el archivo que subió contador 0-999 con un PIC16F628A y tres 74LS164.

También quiero pedir su autorización para modificar este programa y subirlo nuevamente.
En el cual estoy trabajando. Como contador de 4 dígitos programable. Que aumentare algunos pulsadores.

Al estar trabajando ya con este programa como contador de pulsos de 4 dígitos, al descender de más de 1000 tengo problemas.
Quisiera que me dé una mano en esta parte del programa para 4 dígitos.

Gracias anticipadamente.

Atentamente. Hércules.

PHP:
btfss    PORTA,Desc
        goto    $-1                ; Esperar hasta que se suelte el botón
        decf    Display1,1        ; Decrementar Display1
        movlw    b'11111111'      ;d'255'            ; Si paso de 0 a 255
        subwf    Display1,0        ; Decrementar Display2
        btfss    STATUS,Z
        goto    RefrescaDisp    ; no es 255 
        movlw    b'00001001'     ;d'9' 
        movwf    Display1        ; Si, cargo 9
        decf    Display2,1        ; Decrementar Display2
        movlw    b'11111111'    ;d'255'            ; Si paso de 0 a 255
        subwf    Display2,0        ; Decrementar Display3 
        btfss    STATUS,Z
        goto    RefrescaDisp    ; No es 10
        movlw    b'11111111'    ;d'9' 
        movwf    Display2        ; Si, cargo 9
        decf    Display3,1        ; Decrementar Display3
        movlw   B'11111111'      ;    d'255'            ; Si paso de 0 a 255
        subwf    Display3,0   
        btfss    STATUS,Z 
        goto    RefrescaDisp    ; No es 10
        movlw    b'00001001'    ;d'9' 
        movwf    Display3        ; Si, cargar 9
        goto    RefrescaDisp 
;************************************************************************ 
Ascender   
        btfss    PORTA,Asc
        goto    $-1                ; Esperar hasta que se suelte el botón
        incf    Display1,1        ; Incrementar Display1
        movlw     b'00001010'            ; Si es 10 resetear e incrementar Display2
        subwf    Display1,0
        btfss    STATUS,Z
        goto    RefrescaDisp    ; no es 10
        clrf    Display1        ; Si, resetear
        incf    Display2,1        ; Incrementar Display2
        movlw     b'00001010'            ; Si Decena = 10, resetear e incrementar
 
Última edición por un moderador:
Un saludo a todos los amigos visitantes de este foro, que siempre comparten sus conocimientos.
También agradecerle el Sr. D@rkbytes, por el archivo que subió contador 0-999 con un PIC16F628A y tres 74LS164.

También quiero pedir su autorización para modificar este programa y subirlo nuevamente.
En el cual estoy trabajando. Como contador de 4 dígitos programable. Que aumentare algunos pulsadores.
Puedes modificar el programa sin inconvenientes.
Todo lo expuesto en el Foro es de libre distribución y modificación, a menos que se indique lo contrario.
Al estar trabajando ya con este programa como contador de pulsos de 4 dígitos, al descender de más de 1000 tengo problemas.
Quisiera que me dé una mano en esta parte del programa para 4 dígitos.
Modifiqué el programa que subí para tres dígitos, ahora cuenta hasta 9999.
Mira ambos programas y compara los cambios realizados.
 

Adjuntos

  • Contador 0-9999 con PIC16F628A y 74LS164.rar
    31.3 KB · Visitas: 21
Gracias amigo por su respuesta. Aquí subo lo que he estado modificando. Si podría darle una revisión para ver si está bien o no lo que hice. Bueno lo que debo hacer es un contador programable para rebobinar transformadores y campos de licuadora. Ejemplo. Necesito por decir. 1230, espiras lo programo. Luego enter y rebobinar con un motor. Cuando llegue al programado deje de funcionar el motor. De seguro que utilizare un censor para contar los giros del motor.
También subo otro que está hecho ccs que casi no entiendo tanto. Pero algo similar quisiera hacer, que este cuando programo en 10 no anda.
Gracias por respuesta.
Atentamente hércules.
 

Adjuntos

  • CONTADOR 74LS164.rar
    127.8 KB · Visitas: 20
  • REBOBINADOR original 7seg.rar
    79.9 KB · Visitas: 15
Ya había revisado esa página. Lo que debo hacer es con display de 7 segmentos. En lenguaje de asm. Ccs no entiendo. Si subí el otro archivo era para indicarle algo similar.
Gracias por su comprensión.
Subo en asm modificado
 

Adjuntos

  • CONTADOR 74LS164 .asm.rar
    129.8 KB · Visitas: 12
Ya había revisado esa página. Lo que debo hacer es con display de 7 segmentos. En lenguaje de asm. Ccs no entiendo. Si subí el otro archivo era para indicarle algo similar.
Gracias por su comprensión.
Subo el asm modificado
Bien, pues ya nada más era cosa de adaptar el hardware, pero ahora le hace falta el reset.

Por cierto; CCS no es un lenguaje de programación, son las siglas de la empresa. Custom Computer Services.
 
Amigo D@rkbytes quisiera una mano. Como puedo insertar al programa del contador 74ls164. Asm. Los pulsadores iniciar, unidad, centena. Y me escriba en el display 7segmentos. de 0 a 99.el pulsador unidad. Y el pulsador centena escriba de 100 en 100 hasta 9900.es para rebobinar la cantidad de espiras que uno requiera. El pulsador iniciar sirve para empezar el conteo y activar el pin 3 del puerto A. hasta que concluya el conteo.
Le agradeceré por su respuesta.
Atentamente hércules.
 

Adjuntos

  • contador.jpg
    contador.jpg
    145.3 KB · Visitas: 22
Pues igualmente agregando esas nuevas rutinas y la comprobación de esas condiciones.
También puedes realizar comprobaciones que modifiquen el conteo.
Si posees conocimientos del lenguaje, no tendrás problemas, si no, te va a resultar demasiado complicado.
 
Atrás
Arriba