desktop

[Aporte] Dado electrónico con PIC16F628A

Hola que tal, bueno hoy quisiera dejarles este pequeño programa que hice cuando comenzaba con la programación en pic basic pro. Se trata de un dado electrónico con el pic16f628a, pero a diferencia de los que eh visto este utiliza un display de 7 segmentos. Se aprieta un botón y muestra un número “aleatorio” entre 1 y 6 y este permanece hasta que se vuelve a apretar el botón , el programa no es la gran cosa ni mucho menos, pero espero le pueda servir a alguien, en especial a los novatos en la programación von pbp.
El archivo que adjunto contiene los archivos .pbp y .hex por si alguien solo quiere cargarlo y verlo funcionar de inmediato, además adjunto una imagen de las conexiones.

el programa es el siguiente:

Código:
DEFINE OSC 4

CMCON = 7  
TRISA = %00000010
TRISB = %00000000

B1 VAR PORTA.1
X VAR BYTE
Y VAR BYTE
X = 0

PORTB = %00110000
PAUSE 300
PORTB = %01011011
PAUSE 300
PORTB = %01001111
PAUSE 300
PORTB = %01100110
PAUSE 300
PORTB = %01101101
PAUSE 300
PORTB = %01111101
PAUSE 300
PORTB = %00000000

INICIO:
IF B1== 1 THEN
PAUSE 25
GOSUB Dado
ENDIF
GOTO INICIO

Dado:
WHILE B1==1

 X = X+1
 
	IF X == 6 THEN
	X = 0
	ENDIF

WEND
lookup X,[48,91,79,102,109,125 ],Y
PORTB=Y

RETURN
 

Adjuntos

  • dado.zip
    173.9 KB · Visitas: 53
Última edición:
Gracias por el aporte, pero tienes que corregir unas cosas en el esquema.
- Debes colocar resistencias limitadoras de corriente para cada segmento del display.
- La resistencia R1 de 330 Ω es muy baja, cámbiala por una de 4.7 kΩ
- Para el sistema de reset, no es necesario R2 ni C2 (Evitan el rebote, pero para un reset no sirven de nada)
- Al código le hace falta la palabra de configuración.
 
hola gracias por las observaciones no uso palabra de configuración en código (quizá sea un mal habito ) yo lo configuro en mplab o en su defecto a la hora de programarlo.
Como sea los fusibles ya vienen configurados con el wdte deshabilitado, el lvp deshabilitado y el oscilador interno seleccionado
 
Hola. Gracias por las observaciones. No uso palabra de configuración en código (quizá sea un mal hábito ) yo lo configuro en mplab o en su defecto a la hora de programarlo.
Si es un mal hábito, porque debes indicar que configuración utilizaste, de otra forma sólo tú lo sabrás.
Como sea los fusibles ya vienen configurados con el WDTE deshabilitado, el LVP deshabilitado y el oscilador interno seleccionado.
No. El archivo ejecutable que entregas, tiene mal la palabra de configuración.
Compilado.jpg
Así que estás seleccionando los fuses incorrectos para grabar el PIC.

Cuando compilas un programa sin usar la palabra de configuración, el compilador usará la que está por defecto en el archivo *.INC (En este caso, la del archivo 16F628A.INC)
Y la palabra de configuración por defecto es la siguiente:
PHP:
        LIST p = 16F628A, r = dec, w = -302
        INCLUDE "P16F628A.INC"  ; MPASM  Header
        __config _XT_OSC & _WDT_ON & _MCLRE_ON & _LVP_OFF & _CP_OFF
Así que no se establecerá como mencionas. :cool:

Y éste será el resultado de compilar sin usar la palabra de configuración:
Por defecto.jpg
Tal cual como se encuentra en la palabra de configuración por defecto del archivo 16F628A.INC
 
Atrás
Arriba