Autor Tema: Como le digo en lenguaje C al AT89S8252 que el Puerto 0 sea salida y no entrada  (Leído 5927 veces)

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

Desconectado Ratlos

  • PIC10
  • *
  • Mensajes: 10
Necesito saber, como iniciar el micro AT89S8252. Lo tengo configurado de tal manera que el Puerto 0 es el puerto por donde le van a entrar los datos, en mi caso una señal digital, (eso si consigo que el A/D funcione correctamente), pero para ello necesito previamente, enviarle informacion al A/D por dicho puerto.
En resumen, como puedo hacer, para que cuando quiero configurar el A/D el Puerto 0 sea salida, y como puedo hacer para cuando quiero recoger datos el puerto 0 sea entrada. Todo ello en lenguaje C
El problema es que la informacion que tengo esta en Ingles y Aleman demasiado tecnico para mis pobres conocimientos de micros.
Muchas gracias por anticipado.
RATLOS

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Como le digo en lenguaje C al AT89S8252 que el Puerto 0 sea salida y no entrada
« Respuesta #1 en: 30 de Noviembre de 2004, 17:22:00 »
No te puedo ayudar con ello porque no sé nada de programación de C para AVR... Enfurruñado

Ayudaría mucho si nos pasaras algún tutorial de programación en C para AVRs, no importa que esté en inglés, ya que he buscado tutoriales así y no los he encontrado.

Si quieres mándame el tutorial que tienes en Inglés y ya veré como lo publico en el foro para ver si te podemos ayudar con tu duda.

Giño

Desconectado Ratlos

  • PIC10
  • *
  • Mensajes: 10
RE: Como le digo en lenguaje C al AT89S8252 que el Puerto 0 sea salida y no entrada
« Respuesta #2 en: 01 de Diciembre de 2004, 02:45:00 »
Gracias por tu respuesta. Es un paso.
Yo no tengo mucha idea de programacion, pero tengo vario tutoriales de C.
Tengo tres pdf de programacion en C.

- Aprenda C como si estuviera en primero, (es para poder dar los primeros pasos)
- Curso de programcion en C de Angel Salas, (bastante completo)
http://ciberia.ya.com/nachocabanes/c.htm#cursos
en esta pagina aparecen un monton de cursos, y el de Angel Salas esta en castellano.
- Curso Visul C.

Y otro pdf para programar el 8051 y el 8052, el problema es que esta en lenguaje ensamblador.

Pero,  ¿¿Cómo te envio los manuales??

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Como le digo en lenguaje C al AT89S8252 que el Puerto 0 sea salida y no entrada
« Respuesta #3 en: 01 de Diciembre de 2004, 19:02:00 »
Espero que los manuales que tienes sean de C para microntroladores Atmel jeje Muchas risas

Por favor mándamelos a mi mail, pero porfas mándalos en ZIP porque todavía uso modem 56k Muchas risas

migsantiago@tutopia.com


Desconectado Ratlos

  • PIC10
  • *
  • Mensajes: 10
RE: Como le digo en lenguaje C al AT89S8252 que el Puerto 0 sea salida y no entrada
« Respuesta #4 en: 02 de Diciembre de 2004, 09:34:00 »
Ya se como escribir en el puerto 0 en el micro AT89S8252.
Dos soluciones:
1- Si el micro tiene resistencias Pull-up en el puerto 0 la instruccion es automatica, no hace falta configurar el micro. En mi caso, desafortunadamente, mi placa no tiene resistencias Pull-up en dicho puerto.
2- Configurar el puerto 0 de forma que tenga acceso a memoria externa. En mi caso, en vez de una memoria externa lo que tengo es un A/D MAX197, que quiero controlar.  
Tengo las instrucciones en lenguaje ensamblador para hacer dicha operacion, el problema es que las necesito en lenguaje C.
¿Cómo se escribiria en lenguaje C la instruccion MOVX?

Gracias.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Como le digo en lenguaje C al AT89S8252 que el Puerto 0 sea salida y no entrada
« Respuesta #5 en: 02 de Diciembre de 2004, 10:05:00 »
Hola,

Ya busqué tutoriales de compiladores de C para AVR y encontré uno en inglés que es para el compilador CodeVision AVR C.

Busqué en el documento la palabra MOVX, pero al parecer CodeVision sólo programa micros 90. El link del manual es:

http://instruct1.cit.cornell.edu/courses/ee476/codevisionC/Tutorial.PDF

Encontré esta página en donde habla algo de la instrucción movx. Es para C51 Version 5.50.

http://www.keil.com/support/docs/1106.htm

Dice que hay que escribir algo así en C:
data const char * xdata MESSAGE = ((const char *) 0x010); Hay que leer la página completa para entenderle Giño

Desconectado Ratlos

  • PIC10
  • *
  • Mensajes: 10
RE: Como le digo en lenguaje C al AT89S8252 que el Puerto 0 sea salida y no entrada
« Respuesta #6 en: 02 de Diciembre de 2004, 10:58:00 »
El problema esta que la informacion
C51: ACCESSING INTERNAL EEPROM ON ATMEL 89S9252

es para acceder a memoria interna del micro y no a externa que es lo que necesito. Pero de todos modos muchisimas gracias ire mirando que solucion puedo encontrar.

Otra opcion que he consutaldo puede ser:

"La unica forma que se me ocurre es que escribas esas rutinas
directamente en ensamblador y que las invoques desde C. Eso
es posible, pero no se como se implementa en tu sistema".

Pero tampoco se como hacerlo.
Si me pueden ayudar....
Gracias.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Como le digo en lenguaje C al AT89S8252 que el Puerto 0 sea salida y no entrada
« Respuesta #7 en: 02 de Diciembre de 2004, 12:59:00 »
Ah pues según el tutorial de CodeVision puedes agregar lenguaje ensamblador en C así:

#asm
….
….
Assembly language code
….
….
#endasm

Como precaución dice que sólo uses registros del R4 al R20 en el lenguaje ensamblador que uses. Tal vez sea igual en el compilador que tú usas.

Desconectado Bruno_AR

  • PIC12
  • **
  • Mensajes: 89
RE: Como le digo en lenguaje C al AT89S8252 que el Puerto 0 sea salida y no entrada
« Respuesta #8 en: 24 de Febrero de 2006, 14:12:00 »
Me cuesta entender por que se complican tanto. Los puetos de estos microcontroladores son todos I/O, las diferencias son que el puerto 0 (P0) no tiene pull up interna, con lo cual se debe poner pull up externa. Para que un puerto sea de entrada, ademas de tener pull up, es necesario colocarlo a "1", que en realidad lo que se hace es poner en alta impedancia el transistor de salida, la pull up se encarga de poner la entrada en "1", entonces se puede sensar, si se coloca por ejemplo un pulsador a masa, si dicha entrada es uno o cero.

Espero que te sirva, no creo que necesites el codigo para hacer esta pavada pero igual lo pongo:

Suponiendo el puerto 0 (P0), con pull up externa:  P0.X = 1;
Siendo X el bit a emplear como entrada.

Un saludo, desde Argentina


 

anything