Programación General > ASM (Ensamblador)

 Puerto serie COM1

<< < (2/2)

Eternal Idol:
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

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

Eternal Idol:
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.

Toph:

--- 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
--- Fin de la cita ---

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 ---  Esperar:          mov dx,0        mov ah,03h        int 14h        test ah,01h; si el bit 1(dato listo) esta puesto a cero no hay dato listo          jz Esperar ;salta y vuelve a verificar        ;si ya hay dato listo se debe leer, comparar si ya fueron treinta sino vuelve a esperar 
no se debe estar saltando a la configuracion, eso solo se hace al principio.

Keylhan:
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

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa