• Martes 5 de Noviembre de 2024, 17:46

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - joltrar

Páginas: [1]
2
ASM (Ensamblador) / Re: Comunicacion por puerto serial
« en: Domingo 3 de Noviembre de 2002, 01:09 »
Yo no lo he probado, ojalá te sirva:

/****************************************************************************

 Nombre: PUERTOS.C
 Utilidad: Permite la comunicaci¢n entre dos ordenadores por el puerto serie.
 Autor: Sergio Pacho
 Fecha: 6 de julio de 1998
 E-mail: http://www.mundoc.net

 Este programa es un ejemplo de como enviar informaci¢n entre dos ordenadores
 conectados a trav‚s del puerto serie ( COM1 o COM2 ).Podr¡amos decir que se
 trata de una especie de 'chat'.Para ello utilizaremos la int 14h y algunos de
 sus servicios.Es posible que funcione incorrectamente seg£n como tengas las
 configuraciones de Windows '95 y/o MS-DOS.Si no te funciona en Windows '95
 prueba a reiniciar el equipo en modo MS-DOS.Si no te funciona en MS-DOS, pues
 pru‚balo desde Windows '95... en fin ya sabes como es esto, no ?

 Lo £nico que te pido es que no modifiques los créditos, y que se lo pases a
 todos tus amigos, colegas...
 Tambi‚n puedes decir que lo has conseguido en:
 http://www.mundoc.net

****************************************************************************/

#include <stdio.h>
#include <dos.h>
#include <io.h>
#include <conio.h>
#include <alloc.h>
#include <stdlib.h>

/* Definimos el valor que toman los puertos */
#define COM1 0
#define COM2 1

/* Definimos las distintas velocidades de transmisi¢n */
#define bd_110 0
#define bd_150 32
#define bd_300 64
#define bd_600 96
#define bd_1200 128
#define bd_2400 160
#define bd_4800 192
#define bd_9600 224

/* Definimos los valores para los bits de datos */
#define bitd_7 2
#define bitd_8 3

/* Definimos los valores para los bits de stop */
#define bits_1 0
#define bits_2 4

/* Definimos los valores para la paridad */
#define nula 0
#define impar 8
#define par 24

void inicializar(int,int,int,int,int);
unsigned char compruebo(int);
void leer_car(unsigned char *,int);
void enviar_car(unsigned char,int);

void main(void)
{
   unsigned char let,car,byte1;
   clrscr();
   inicializar(COM1,bd_9600,impar,bits_1,bitd_8);
   while (let!=27)
   {
      if (compruebo(COM1)&1)   // comprobamos si el bit 0 del valor retornado
      {                        // es 1
         leer_car(&car,COM1);
         if (car!=0)
         {
            if (car=='r') car='n';
            printf("%c",car);
         }
         car=0;
         enviar_car(0,COM1);
      }
      if (kbhit())
      {
         let=getch();
         if (let!=27)
         {
            enviar_car(let,COM1);
         }
      }
   }
}

void inicializar(int puerto,int baudios,int paridad, int b_stop, int b_datos)
{
   unsigned char total; // sumaremos los par metros de inicializaci¢n
   total=baudios+paridad+b_stop+b_datos;
   asm {                // inicializamos el puerto
         mov ah,0h      // el servicio 0h nos permite inicializar el puerto
         mov dx,puerto  // pasamos el puerto a 'dx'
         mov al,total   // pasamos la suma de los par metros a 'al'
         int 14h        // solicitamos la interrupci¢n 14h
   }
}

unsigned char compruebo(int puerto)
{
   unsigned char com;
   asm {             // estado del puerto
      mov ah,3h      // el servicio 3h comprueba el estado del puerto
      mov dx,puerto  // pasamos el puerto a 'dx'
      int 14h        // solicitamos la interrupci¢n 14h
      mov com,ah     // c¢digo de error retornado a 'ah' y pasado a 'com'
   }
   return com;
}

void leer_car(unsigned char *caracter , int puerto)
{
   unsigned char letra;
   asm {             // recoge un car cter
      mov ah,2h          // el servicio 2h nos permite recoger un car cter
      mov dx,puerto  // pasamos el puerto a 'dx'
      int 14h        // solicitamos la interrupci¢n 14h
      mov letra,al   // el car cter es retornado a 'al' y lo pasamos a 'letra'
   }
   *caracter=letra;
}

void enviar_car(unsigned char caracter, int puerto)
{
   asm {               // envia un car cter
      mov ah,1h        // el servicio 1h nos permite enviar un car cter
      mov dx,puerto    // pasamos el puerto a 'dx'
      mov al,caracter  // pasamos el 'caracter' a 'al'
      int 14h          // solicitamos la interrupci¢n 14h
   }
}

3
ASM (Ensamblador) / Necesito Un proyecto
« en: Domingo 3 de Noviembre de 2002, 00:35 »
Explica un poco más.
Cuál ensamblador?
Qué S.O?
Qué tipo de proyecto?
Cuánto tiempo tienes?

4
ASM (Ensamblador) / Re: asm en la api de windows
« en: Domingo 3 de Noviembre de 2002, 00:16 »
Revisa la página de Iczelion

http://203.157.250.93/win32asm/

Páginas: [1]