Programación General > ASM (Ensamblador)
Puerto serie COM1
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
[*] Página Anterior
Ir a la versión completa