Microcontrolador: 89c51

Estimado amigo: Necesito saber como realizar un programa en el microcontrolador 89c51 para que se comunique con una PC por medio del puerto serie donde ya adapté las tensiones RS-232 a TTL, pero tengo un problema, ¿Cómo tengo que hacer para leer y escribir lo que manda el puerto al micro?
Desde ya gracias por adelantado
Ezequiel - Bs As - Argentina
Respuesta
1
No es tan trivial, el principal y único problema de echo son los tiempos. El estándar rs232 envía 8 bits más uno de paridad y uno de stop.
La idea es que tengas un punto de inicio de transmisión, cuando este empieza genera una interrupción, lo que tener que hacer es tomar uno a uno los bits que llegan a tu puerto y luego (como ya comenzaste la transmisión), vas a tener que reiniciar tu contador y sincronizarte con el flanco descendente de la señal de stop. De esta manera estas siempre sincrónico y te mantenés aislado del time del micro. Si la transmisión genera un error, lo que se hace usualmente es tener un time out, esperas un tiempo y luego de este tiempo el micro tiene que saber por time out que la transmisión termino. Probablemente todo esto ya lo sepas, esta es la estructura general de un programa para comunicación serial. La idea es ser sincrónico con respecto al comienzo de la trama y asincrónico en la transmisión de la trama. No tengo ningun codigo para hacer lo que te cuento escrito en http://www.electronic-engineering.ch/microchip/projects/rs232/commtest2/commtest2.asm podes encontrar un codigo para trasnsmitir serialmente. En particular mira donde se describen las atenciones de interrucpciones. Recordá que el micro sobre el que esta es un pic, y tiene un solo vector de atención de interrupciones. En donde dice RS232 DATA ACQUISITION esta la rutina que atienede el puerto rs232. Fíjate bien que el código que necesitas es igual, cambia un poco el uso de los puertos y como te dije al principio la rutina que mide los tiempos. La misma tiene que ser exacta, si encontrás alguna sentencia donde este el tiempo que necesitas por ciclo de reloj te va a ser muy útil. Esto es indudablemente intrinceco al micro, así que conese código con te vas a poder arreglar para solucionar el problema de los tiempos de espera.
Suerte con tu proyecto.
David.

1 respuesta más de otro experto

Respuesta
1
Si el micro tiene interfase serie no hay problema.
En el caso que no la tenga tienes que ver cual es la velocidad de transmisión y saber cada cuanto tienes que leer el pin de entrada para recibir el dato. Eso lo sabes con la duración del reloj de tu micro.
Esta técnica se llama pooleo
Y generalmente se usa un pin que cuando cambia de valor entra en una rutina de interrupción
esta rutina comienza con guardar los datos y cambiar alguna bandera para indicar, cuando se vuelva de la interrupción, que se ha recibido datos nuevos. Después los datos recibidos los guardas en un reg especial

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas