Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Dado Electronico con PIC16F84


       



#1  Dado Electronico con PIC16F84
oscar11111
Ubicación: Rep . Dom. Santo Domingo
Registrado: 20 May 2006
Mensajes: 1
citar
Hola,

Tengo un circuito y la programación de un dado electrónico con PIC16F84, genera #'s del 1-6, pero quiero que los genere del 1-7, si me podrías ayudar te lo agradecería. Es para poder pasar un examen y soy nuevo en la programación y se me a hecho difícil.


GRACIAS.



Este mensaje contiene archivos adjuntos, para verlos debes estar registrado.

#2  
fdesergio
Registrado: 03 Nov 2005
Mensajes: 133
citar
Hola solo debes modificar aca:

texto del asm.



; ****************************************************************
; RUTINA QUE GENERA UN NUMERO ALEATORIO MIENRAS ESTAN PULSANDO RA0
; ****************************************************************

NUM_ALEATORIO:

bsf STATUS,RP0 ; Seleccionamos Banco 1
MOVLW b'00000000' ; Deshabilitamos todas las interrupciones posibles
MOVWF INTCON
bcf STATUS,RP0 ; Seleccionamos Banco 0
MOVLW b'00000000'
MOVWF PORTB ; Escribimos en el puerto B
CLRF PULSA

SI: btfss PORTA,0 ; Se explora RA0 para ver si sigue pulsado
GOTO NO ; Si no sigue pulsando significa que ya no pulsan y x tanto mostramos
; el numero aleatorio que hemos generado anteriormente
INCF PULSA,F ; Incrementamos valor aleatorio
MOVF PULSA,W ; Miramos si es 6 segundos
SUBLW 8 ; ACA CAMBIAMOS 7 POR 8
BTFSS STATUS,Z ; Si Z esta a 1 es que la resta fue 0 y x tanto 1
GOTO SI ; Seguimos generando el numero aleatorio
MOVLW 1 ; Movemos un 0 a segundos, para q la cuenta siga 1..6
MOVWF PULSA
GOTO SI ; Seguimos generando el numero aleatorio

NO: MOVF PULSA,W ; Movemos el valor de PULSA a W
MOVWF SEG ; Movemos el valor de W a SEG, q muestra la rutina MOSTRAR_SEG
CALL MOSTRAR_SEG ; Mostramos el numero x el display

bcf STATUS,RP0 ; Seleccionamos Banco 0 y Cargamos TMR0 con 196
MOVLW b'11000100'
MOVWF TMR0
MOVLW b'10100000' ; Permitimos interrupcion de TMR0 y la global GIE
MOVWF INTCON ; Habilitamos de nuevo las interrupciones
CLRF SEG ; Limpiamos segundos anteriores
CLRF NUM ; Limipiamos numeros de interrupciones anteriores
RETURN

Solo debes cambiar el No 7 por el No 8 en la linea que esta marcado con rojo y listo, el genera un numero aleatorio, se detiene y resta con 7 para saber si es menor o igual a 7 y listo, ah pruebalo pues en esto no hay nada dicho, avisame, chauuuuuu, chauuuuuuuuuuuuuuuuu

 Responder





 Otros temas de interés 
No hay mensajes nuevos Circuito de Dado Electrónico
No hay mensajes nuevos Como crear un dado electronico, con compuertas
No hay mensajes nuevos Problema con dado electrónico
No hay mensajes nuevos Diseñar un dado electrónico
No hay mensajes nuevos Dado Electronico

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||