• Sábado 21 de Diciembre de 2024, 17:21

Autor Tema:  Puerto serie COM1  (Leído 6864 veces)

Keylhan

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Puerto serie COM1
« en: Miércoles 17 de Junio de 2009, 04:14 »
0
necesito configurar el puerto de serie con estos datos:
--configure el puerto serie COM 1 para que reciba 30 byte de datos  con un bit de stop y paridad par a una velocidad de 3040 baudios....
 
"It is just the possibility of making a dream come true what turns life more interesting"

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Puerto serie COM1
« Respuesta #1 en: Miércoles 17 de Junio de 2009, 09:11 »
0
¿Para que S.O. y que hiciste/intentaste hasta ahora?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Keylhan

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Puerto serie COM1
« Respuesta #2 en: Miércoles 17 de Junio de 2009, 19:13 »
0
hasta ahora lo unico que es es configurarlo con 8 bits de datos a una velocidad de 300 pero me hace falta con treinta bytes y a una velocidad 3040 baudios, estoy trabajandro en windows......
Saludos

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Puerto serie COM1
« Respuesta #3 en: Miércoles 17 de Junio de 2009, 19:19 »
0
Pone el codigo y vemos como continuarlo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Keylhan

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Puerto serie COM1
« Respuesta #4 en: Miércoles 17 de Junio de 2009, 21:28 »
0
El proyecto completo es este  :o  o sea todo lo que tengo que hacer, pero el problema mas grande que tengo es con el puerto de serie de lo demas me encargo yo......

Elabora un programa en lenguaje ensamblador que configure el puerto serie COM 1 para que reciba 30 byte de datos  con un bit de stop y paridad par a una velocidad de 3040 baudios. El primer byte de datos enviado corresponde con el valor de la temperatura de una caldera y el segundo con la presión, manteniéndose este orden hasta que se completen los 30.  Los datos deben ser almacenados en el fichero A:parametros.txt. Al finalizar la recepción se le debe dar la posibilidad al usuario de ver los gráficos correspondientes a cada parámetro.
1.   Mostrar gráfico de temperatura
2.   Mostrar gráfico de presión
Si los valores estan entre 0 y 20 la barra debe ser de color verde, si van desde 31 a 50 la barra debe ser amarilla y por encima de 50 la barra debe ser roja.
----------------------------------------------------------------------------------------------------------------------------------------------------
Lo que tengo hasta ahora es esto......
MOV AL,01001111b;
MOV DX,0000
MOV AH,00
INT 14
con ello resuelvo esto: (velocidad = 300, 8 bits de datos, 1 bit de paro, paridad par)
-----------------------------------------------------------------------------------------------------------------------------------------------------
y se ademas se  que el puerto se configura de la siguiente forma:

# Funcion 01H: Envia un caracter al puerto serie especificado.
# Funcion 02H: Lee un caracter desde el puerto serie especificado.
# Funcion 003: Devuelve el estado del puerto serie especificado.

Hay varias funciones de la interrupción 21H del DOS relacionadas a la operacion del puerto serie:
# Funcion 03H: Lee un caracter desde el puerto COM1.
# Funcion 04H: Escribe un caracter desde el puerto COM1.
# Funcion 40H: Esta funcion envia un numero de bytes des de un buffer a un dispositivo especificado
------------------------------------------------------------------------------------------------------------------------------------------------
configuracion:
1.MOV AL,F3;(velocidad = 9600, 8 bits de datos, 1 bit de paro, sin paridad)(esto depende como quieras configurar el puerto)
2.MOV DX,0000; determina que se usa el puerto COM1
3.MOV AH,00; inicializa puerto serial
4.INT 14


ESto es lo que tengo hasta ahora todavia me lo estoy estudiando para poder hacer el ejercicio....ayudame con esto......
Saludos........
"It is just the possibility of making a dream come true what turns life more interesting"

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Puerto serie COM1
« Respuesta #5 en: Miércoles 17 de Junio de 2009, 21:44 »
0
OK, estas trabajando bajo Windows pero tu programa es para MS-DOS.

http://www.ctyme.com/intr/rb-0811.htm
http://www.ctyme.com/rbrown.htm

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Keylhan

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Puerto serie COM1
« Respuesta #6 en: Jueves 18 de Junio de 2009, 05:40 »
0
Mira esto lo hice ahora dime como esta con esto garantizo inicializar el puerto con 8 bits de datos yn bit de paridad y velocidad de 4800 baudios??? ....el ciclo lo hice para que fueran 32 bits ......dime si esta bien y como lo hago para 30 bytes y 3040 baudios  dame una sugerencia........
Saludos
CICLO:MOV AH,00 ;inicializar el puerto
   MOV AL,11011011b ; velocidad 4800, par,un bit de stop, 8 bit de datos....
   MOV DX,00 ; puerto com1
   INT 14H
   
   MOV AH,02 ;recibir datos por el puerto
   MOV AL,11011011b ; velocidad 4800, par,un bit de stop, 8 bit de datos....
   MOV DX,00
   INT 14H
   LOOP CICLO

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Puerto serie COM1
« Respuesta #7 en: Jueves 18 de Junio de 2009, 09:00 »
0
En todas las referencias que encuentro las opciones de "velocidad" son estas nada mas:
110,150,300,600,1200,2400,4800,9600 bps

Lo de los 30 bytes sinceramente no lo logro comprender, como podes configurar el puerto para eso ... no tiene sentido, querra decir que despues tenes que recibir esa cantidad de bytes pero no configurar el puerto para recibirlos.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: Puerto serie COM1
« Respuesta #8 en: Jueves 18 de Junio de 2009, 17:05 »
0
Cita de: "Keylhan"
Mira esto lo hice ahora dime como esta con esto garantizo inicializar el puerto con 8 bits de datos yn bit de paridad y velocidad de 4800 baudios??? ....el ciclo lo hice para que fueran 32 bits ......dime si esta bien y como lo hago para 30 bytes y 3040 baudios  dame una sugerencia........
Saludos
CICLO:MOV AH,00 ;inicializar el puerto
   MOV AL,11011011b ; velocidad 4800, par,un bit de stop, 8 bit de datos....
   MOV DX,00 ; puerto com1
   INT 14H
   
   MOV AH,02 ;recibir datos por el puerto
   MOV AL,11011011b ; velocidad 4800, par,un bit de stop, 8 bit de datos....
   MOV DX,00
   INT 14H
   LOOP CICLO

La configuracion es la correcta, es com1, con 4800 baudios, paridad par, un bit de stop y 8 bits de datos.
ahora el puerto serial lee en caracteres (1 byte) por lo que el lazo deberia de contar 30 que es el numero de bytes que quieres leer, ahora con eso no basta, primero tienes que verificar que hay un caracter en el buffer para leerse, eso lo haces con la funcion AH=03h de la interrupcon 14H, que al ejecutarse devuelve el estado del puerto en AH y lo que se evalua es el bit 1 que si esta a uno es que hay un dato listo, la rutina seria esta:
Código: ASM
  1.   Esperar:  
  2.         mov dx,0
  3.         mov ah,03h
  4.         int 14h
  5.         test ah,01h; si el bit 1(dato listo) esta puesto a cero no hay dato listo  
  6.         jz Esperar ;salta y vuelve a verificar
  7.         ;si ya hay dato listo se debe leer, comparar si ya fueron treinta sino vuelve a esperar
  8.  

no se debe estar saltando a la configuracion, eso solo se hace al principio.
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

Keylhan

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Puerto serie COM1
« Respuesta #9 en: Jueves 18 de Junio de 2009, 19:56 »
0
Muchas gracias Toph ha sido de gran ayuda, pero ahora me surgio otro problemilla debo configurar este puerto para reciba y lea datos en la misma pc o sea enviar y recibir datos en la misma pc ......

Miren esto y diganme...
mov al,00011000b  ;habilitamos la IT del 8250y el modo loop
 mov dx,MCR
 out dx,al

Saludos