Autor Tema: ¿Cómo programo un 82C55 con un AT89C51?  (Leído 6372 veces)

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

Desconectado literatronic

  • PIC12
  • **
  • Mensajes: 98
¿Cómo programo un 82C55 con un AT89C51?
« en: 25 de Junio de 2009, 14:28:27 »
Un saludo. 

Tengo un detector que tiene una red de fotodiodos receptores conectados a un 82C55 y éste a un micro AT89C51.  Quiero modificarla, y me he puesto a mirar el circuito y veo que tiene el puerto P0 del micro conectado al puerto de datos (D0 a D7) del 82C55.  Después de estudiar los dos dispositivos me doy cuenta que al 82C55 hay que enviarle un byte de programación por el puerto de datos (y configurar A0, A1, etc.) y después por este mismo recopilo la información que le llega por los bancos A, B o C;  ahora, el P0 del micro no tiene resistencias de pull up internas ni externas (en la tarjeta no están) y no sé cómo hace entonces para configurar el 82C55.  Si alguien ha trabajado con estos dos dispositivos agradecería que me aclarara esta duda.

Gracias.     

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: ¿Cómo programo un 82C55 con un AT89C51?
« Respuesta #1 en: 25 de Junio de 2009, 15:06:39 »
Hay varias forma de programarlo, asi que lee bien como yo nunca he programado ese Mcu , espero que algun amigo aqui de foro nos de mas detalle.
http://electronicapcb.iespana.es/esquemas/Programador_EASY.htm

Saludo

Desconectado literatronic

  • PIC12
  • **
  • Mensajes: 98
Re: ¿Cómo programo un 82C55 con un AT89C51?
« Respuesta #2 en: 30 de Junio de 2009, 09:20:53 »
stk500 gracias por responder.  Para programar el AT89C51 ya tengo el programador e información, en lo que estoy pegado es en como programar el PPI 82C55 con este uC.

Desconectado FuYiVape

  • PIC12
  • **
  • Mensajes: 69
    • Electronica y Sistemas
Re: ¿Cómo programo un 82C55 con un AT89C51?
« Respuesta #3 en: 30 de Junio de 2009, 10:11:04 »
Primero bajate el datasheet.
http://www.embeddedsys.com/subpages/resources/images/documents/82C55_datasheet.pdf
Y despues la cosa pasa por definir la funcionalidad de cada uno de sus pines de sus puertos.
De forma parecida a como lo haces con el micro que utilizas.
Fijate que cada puerto tiene su particularidad.
Lo primero que tenes que hacer es definir la funcionalidad de cada puerto accediendo a los registros mediante las señales A0-A1
Para acceder al micro tenes que utilizar las señales CS, WR y RD.
Ejemplo:
Supongamos que definiste el puerto PA como entrada y queres leer el valor que tienen sus pines.
Pones un 0 en CS
Pones un 1 en WR
pones un 0 en RD
pones un 0 en A0 y A1
Y luego lees el valor que hay en el bus de datos D0..D7
Fijate que en el datasheet hay tablas que te indican como leer y escribir en el PPI.

Saludos.

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: ¿Cómo programo un 82C55 con un AT89C51?
« Respuesta #4 en: 30 de Junio de 2009, 12:04:55 »
Primero que nada, leer la hoja de datos del 8255, pero de antes te comento que este es un dispositivo programable muy simple, aunque al principio parezca intimidante. Y digo esto porque a mis estudiantes les parece que duele como un parto, pero no es cierto, es muy simple luego que te das cuenta de cómo es su lógica.

Saludos
Reinier

Desconectado literatronic

  • PIC12
  • **
  • Mensajes: 98
Re: ¿Cómo programo un 82C55 con un AT89C51?
« Respuesta #5 en: 30 de Junio de 2009, 12:54:42 »
Gracias FuYiVape por la hoja de datos, tenía una muy incompleta.  Voy a leerla muy bien y te comento.

reiniertl ya lo he simulado en Proteus con un PIC y me funciona bien, pero al montarlo en la board las salidas del PPI se me mantienen en 1.6V, mientras que con el programa le digo que las prenda y apague cada 2 seg.

 

Desconectado literatronic

  • PIC12
  • **
  • Mensajes: 98
Re: ¿Cómo programo un 82C55 con un AT89C51?
« Respuesta #6 en: 01 de Julio de 2009, 16:24:53 »
OK. Después de leer bien, por fin pude poner a parpadear los leds cada 2 seg.  Les dejo la rutina para un 16F84 en PBP: 

CS  VAR PORTA.0
RD  VAR PORTA.1
A0  VAR PORTA.2
A1  VAR PORTA.3
WR  VAR PORTA.4

TRISA = 0
TRISB = 0
PORTA = 0:PORTB = 0

CS = 1
A0 = 1
A1 = 1
RD = 1
WR = 0
CS = 0
PORTB = 128
PAUSE 1000
INICIO:
CS = 1
A0 = 0
A1 = 0
RD = 1
WR = 0
CS = 0
PORTB = 255
PAUSE 2000
CS = 1
A0 = 0
A1 = 0
RD = 1
WR = 0
CS = 0
PORTB = 0
PAUSE 2000
GOTO INICIO

END

Ahora voy a intentarlo con el AT89C51.



 

anything