Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > Ensamblador > puerto serie
-Foros de debate

Ensamblador
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

puerto serie
Enviado por erain el día 11 de febrero de 2005

Como puedo hacer para recibir datos en un puerto serie a una velocidad y enviarlos por otro puerto que transmite a una velocidad mas baja?

 
Re: puerto serie
Enviado por wilfredo el día 14 de marzo de 2005

Este ejemplo es para puerto serie entre dos PC...

; TERMINAL 1200 BAUDIOS
;
; PROGRAMA PARA TRABAJAR LA IBM-PC COMO TERMINAL
; A LA VELOCIDAD DE 1200 BAUDIOS
;
; SE UTILIZA AQUI LA POSIBILIDAD DE LA IBM-PC DE TRABAJAR
; EN UN LAZO CERRADO, TRANSMITIENDO Y RECIBIENDO DE MANERA INTERNA
;
; SI SE DESEA COMUNICAR CONT OTRA PC, CAMBIAR LA CONSTANTE 13H A 03H
; EN LA INICIALIZACION DE REGISTROS DEL MODEM

STACK SEGMENT PARA STACK 'STACK'

DB 256 DUP(0)

STACK ENDS

CODE SEGMENT PARA PUBLIC 'CODE'

START PROC FAR

ASSUME CS:CODE
PUSH DS
MOV AX,0
PUSH AX

; ESTABLECIMIENTO DEL PROTOCOLO (USART 8251)

MOV DX,3FBH ; DIRECCION DEL REGISTRO DE CONTROL DE LINEA
MOV AL,80H
OUT DX,AL ; DIRECCIONA LOS REGISTROS DE VELOCIDAD
MOV DX,3F8H ; DIRECCION DEL REGISTRO DIV DE BUDIOS (LOW)
MOV AL,60H ; LOW BYTE PARA 1200 BAUDIOS
OUT DX,AL
MOV DX,3F9H ; DIRECCION DEL HIGH BYTE REGISTRO BAUDIOS
MOV AL,0 ; HIGH BYTE PARA 1200 BUDIOS
OUT DX,AL

; INICIALIZANDO EL REGISTRO DE CONTROL DE LINEA

MOV DX,3FBH ; REGISTRO DE CONTOL DE LINEA
MOV AL,0AH ; PARIDAD INPAR, 1 BIT PARADA, 7 BITS DATOS
OUT DX,AL
; INICIALIZANDO EL REGISTRO DE CONTROL DE MODEM PARA
; SENALES DE SOLICITUD DE ENVIO Y DATA TERMINAL READY
; Y LAZO CERRADO

MOV DX,3FCH ; REGISTRO CONTROL DEL MODEM
MOV AL,03H ; LAZO CERRADO Y SENALES DE CONTROL
OUT DX,AL

; SE INHABILITAN LAS CUATRO INTERRUPCIONES DEL MODEM

MOV DX,3F9H ; REGISTRO DE INTERRUPCIONES
MOV AL,0 ; INHABILITAR TODO
OUT DX,AL

; CON ESTO SE TERMINO LA INICIALIZACION DEL 8251


LAZO: MOV DX,3FDH ; REGISTRO STATUS DE LINEA
IN AL,DX ; LEO STATUS
; TEST AL,1EH ; ERROR EN RECEPCION ?
; JNZ ERROR
; TEST AL,01H ; RECIBIDO DATO ?
; JNZ RECEIVE
; TEST AL,20H ; REGISTRO TRANSMISOR VACIO ?
; JZ LAZO ; NO ESTA LISTO, ESPERA


; 8251 LISTO PARA TRANSMITIR OTRO CARACTER
; SI HAY UN CARACTER EN EL BUFFER DEL TECLADO,
; TOMARLO Y ENVIARLO AL 8251

MOV AH,1 ; FUNCION CHEQUEA BUFFER TECLADO
INT 16H ; LLAMADA AL BIOS
JZ receive ; NO HAY CARACTER LISTO
MOV AH,0 ; LEE CARACTER DEL BUFFER
INT 16H ; PONE EL CARACTER EN AL

mov ax,4c00h
int 21h

MOV DX,3F8H ; REGISTRO DEL TRANSMISOR
OUT DX,AL ; TRANSMITE CARACTER
JMP LAZO
RECEIVE:

MOV DX,3F8H ; REGISTRO DE RECEPCION
IN AL,DX ; LEE CARACTER RECIBIDO
AND AL,7FH ; SOLO 7 BITS DE DATOS
PUSH AX ; SALVA CARACTER RECIBIDO

MOV BX,0
MOV AH,14 ; FUNCION DISPLAY
INT 10H ; LLAMADA AL BIOS
POP AX ; RECUPERA CARACTER RECIBIDO
jmp lazo

CMP AL,1BH ; ES ESCAPE ?
JZ SALE ; SI LO ES, SALIR AL DOS
CMP AL,0DH ; ES RETORNO DE CARRO ?
JNZ LAZO ; BUSCA OTRO CARACTER
MOV AL,0AH ; CAMBIO DE LINEA (POR RETORNO DEL CARRO)
MOV BX,0
MOV AH,14 ; DISPLAY

INT 10H
JMP LAZO


ERROR: MOV DX,3F8H ; REGISTRO RECEPTOR
IN AL,DX ; CARACTER INCORRECTO A AL
;MOV AL,'?' ; SE MUESTRA EN LUGAR DEL INCORRECTO
;MOV BX,0
;MOV AH,14
;INT 10H
JMP LAZO

SALE: RET

START ENDP

CODE ENDS

END START

 
consulta
Enviado por luis el día 11 de diciembre de 2005

oye estoy buscando un programa del manejo del usart(8251) pero en lenguaje c solo quiero algo simple para saber como recepciono y transmito pues es que lo nesecito para un curso que estoy llevando ojala me puedas ayudar pues que la verdad es urgente ante todo gracias por ayudarme espero que puedas ayudarme pronto gracias

 
Re: consulta
Enviado por marisabet el día 16 de junio de 2008

necesito saber si alguien me puede ayudar con este ejercicio
es que he estado trabada Hace dias con esto, y lo he hecho de alguna manera pero no se bien como hacerlo:
Se desea realizar un software que compruebe si se recibió un paquete de datos
de forma íntegra, la recepción se basa en el siguiente protocolo: el primer
byte del paquete que se envía indica la cantidad de byte de datos que seguirán
a este primer byte, luego de recibir todo el paquete de información se recibirán
dos byte con todos los bits en cero indicando que se concluyó el envío de información.
Después de recibir el paquete completo si errores debe sonar bocina durante 3 segundos,
en caso de que no se reciban todos los datos al cabo de 1 minuto de comenzar la transmisión,
sacar un cartel por pantalla de error y enviar a través del puerto serie el comando ffh
indicándole a la otra PC que debe recomenzar. Si por el contrario se recibió la información
de forma correcta entonces debe enviarle el código 00h. El programa culmina al cabo de 30 minutos de ejecución.
saludos marisabet

 




Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network