Autor Tema: Problema con entradas en 16f876  (Leído 2647 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado wolfman77

  • PIC12
  • **
  • Mensajes: 82
    • Dos en la ruta
Problema con entradas en 16f876
« en: 04 de Septiembre de 2010, 23:03:55 »
Hola a todos, estamos por hacer un juego de paintball y queremos simular una de las misiones del counter strike que es desactivar la bomba, yo me estoy encargando de "armar la bomba", y no parecia complicado, de hecho, hice el programa y lo simule en proteus sin ningun problema, hasta que lo lleve a la practica y me paso esto:

1 - El display visualiza cuando quiere, por ahi lo enciendo al circuito y me muetsra la linea de arriba con puros cuadros todos en blanco, y a veces me muestra el texto correcto, probe con otro display nuevo y pasa exactamente lo mismo, el display es un Casil CCM-1620CSL-V2, tienen idea de que puede ser?

2 - Cuando logro que se vea el texto en el display, no me toma ninguna de las dos entradas, utilice pulsadores normal abierto y no hay caso con que me muestre la secuencia o mensaje de desactivado.

Asi esta en el protoboard:



Este es el codigo en Pic Simulator IDE (PSI)

Código: [Seleccionar]
Define CONF_WORD = 0x3f72
Define CLOCK_FREQUENCY = 4
TRISA = %00000010  'todos los pines como salidas
TRISB = %00000000  'todos los pines como salidas
TRISC = %00100000  'todos los pines como salidas
ADCON1 = 0x0e

Define LCD_BITS = 8
Define LCD_DREG = PORTB
Define LCD_DBIT = 0
Define LCD_RSREG = PORTC
Define LCD_RSBIT = 0
Define LCD_RWREG = PORTC
Define LCD_RWBIT = 1
Define LCD_EREG = PORTC
Define LCD_EBIT = 2
Define LCD_READ_BUSY_FLAG = 1
Lcdinit

Dim an0 As Word
Dim an1 As Word
Dim m As Word
Dim seg As Word
Dim cen As Word
Dim alarma As Word

m = 1
seg = 59
cen = 100
alarma = 0
WaitMs 50

arranque:
Lcdout "* * C.O.A.T. * *"
Lcdcmdout LcdLine2Home
WaitMs 200
Lcdout "Inicializando..."
WaitMs 500
Lcdcmdout LcdLine1Clear
Lcdcmdout LcdLine2Clear
Lcdcmdout LcdLine1Home
Lcdout "Comience"
Lcdcmdout LcdLine2Home
Lcdout "secuencia"

secuencia:
If PORTC.5 = 1 Then alarma = 1
If alarma = 1 Then PORTA.0 = 1
WaitMs 2000
PORTA.0 = 0
If alarma = 1 Then Goto casihora
Goto secuencia

casihora:
Lcdcmdout LcdLine1Clear
Lcdcmdout LcdLine1Home
Lcdout "Detonacion en"

hora:
WaitMs 2
If m = 0 Then Goto final1
Goto time
final1:
If seg = m Then Goto final2
Goto time
final2:
If cen = 1 Then PORTA.0 = 1
If cen = 1 Then Goto termina

time:
Lcdcmdout LcdLine2Clear
Lcdcmdout LcdLine2Home
Lcdout "T - " #m
Lcdout ":", #seg
Lcdout ".", #cen
cen = cen - 1
If cen = 0 Then seg = seg - 1
If cen = 0 Then cen = 100
If seg = 60 Then m = m - 1
If seg = 60 Then seg = 59
If seg = 65535 Then seg = 60
If m = 65535 Then m = 0
If PORTA.1 = 1 Then Goto defuse
Goto hora

defuse:
Lcdcmdout LcdLine1Clear
Lcdcmdout LcdLine2Clear
Lcdcmdout LcdLine1Home
Lcdout "Bomba"
Lcdcmdout LcdLine2Home
Lcdout "Desactivada"
WaitMs 2000
Lcdcmdout LcdLine1Clear
Lcdcmdout LcdLine2Clear
Lcdcmdout LcdLine1Home
Lcdout "Puntaje final:"
Lcdcmdout LcdLine2Home
Lcdout #m
Lcdout "00"
WaitMs 2000
Goto defuse

termina:
Lcdcmdout LcdLine1Clear
Lcdcmdout LcdLine2Clear
Lcdcmdout LcdLine1Home
Lcdout "**[[ BOOOM ]]**"
Lcdcmdout LcdLine2Home
Lcdout "   Game  Over   "
fin:
End                                               


Si alguien lo quiere ensamblar en el protoboard dejo aca el codigo y el archivo para proteus (ignoren la parte del 4017 que es parte del kit de desactivacion jejeje)
Y si me pueden dar una mano con las fallas de 10 :D

Muchas gracias a todos! :)

Saludos

Volviendo al mundo de los PIC....


 

anything