Está en la página 1de 6

7.5 7.6 7.

7 El puerto paralelo El puerto Paralelo de una PC posee un conector de salida del tipo DB25 hembra cuyo diagrama y seales utilizadas podemos ver en la figura siguiente. DB25 Nmero de terminal 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18.25 Funcin Pulso de datos Dato 0 (D0) Dato 1 (D1) Dato 2 (D2) Dato 3 (D3) Dato 4 (D4) Dato 5 (D5) Dato 6 (D7) Dato 7 (D7) ACK Ocupado Falta de papel Seleccin AFD Error Entrada de seleccin Tierra OUT OUT IN IN IN IN IN OUT OUT

Restauracin OUT

El puerto consiste de tres registros de 8 bits ubicados en direcciones


Brazo Electro-Mecnico para el manejo de productos qumicos riesgosos

adyacentes del espacio de I/O de la PC. Los registros se definen como


Hayari Cruz Gonzlez

registro de datos, registro de estado y registro de control. Con las direcciones estndar 0378h, 0379h, 037A respectivamente. NMERO DE BIT 5 4 3 2 X x x n n n

7 X

6 x

DESCRIPCIN pin 11 el menos significativo pin 10 pin 12 pin 13 pin 15 el ms significativo No se ocupan

FIGURA 7.5.1. Descripcin del registro de estado del puerto paralelo.

7 X

6 X

NMERO DE BIT 5 4 3 2 X X X X

X X
CONTROL SECUENCIAS DE MOTORES

DESCRIPCIN D7 pin 9 D6 pin 8 D5 pin 7 D4 pin 6 D3 pin 5 D2 pin 4 D1 pin 3 D0 pin 2

FIGURA 7.5.2. Descripcin del registro de datos del puerto paralelo.

Si nada ms utilizas un bit en el puerto de entrada se conecta al pin ms significativo, que es el pin 15; las dems entradas no importan por lo tanto tu mscara quedar: NMERO DE BIT 5 4 3 2 X x
Hayari Cruz Gonzlez

7 x

6 X

DESCRIPCIN pin 11 pin 10 pin 12 pin 13

MASCARA 80 40 20 10 2

Brazo Electro-Mecnico para el manejo de productos qumicos riesgosos

X X n n n

pin 15 Si ocupas todos Sin definir

08 F8 NO SE USAN

7.6 Cdigo en C++ #include <stdio.h> #include <conio.h> #include <dos.h> #include <ctype.h> #include <graphics.h> #define PORT_A 0x378 //PUERTO DE SALIDA #define PORT_B 0x379 //PUERTO DE ENTRADA #define ret_1 15 //retardo #define ret_2 15 //retardo main() { //INICIALIZACION DE VARIABLES unsigned char op_motor; int otravez = 1,LOWD,LOWD2; const unsigned char masc=0x08, masc1=0x10; / /poner mascara 08 para que solo trabajemos con esa informacin debido a la entrada de datos en paralelo //utilice el pin 11. y mascara 10 porque analice el pin 15. char salir; int gdriver = DETECT, gmode; //INICIO DE PROGRAMA while(salir!='S') { clrscr(); flushall(); initgraph(&gdriver, &gmode, "c:\\borlandc\\bgi"); //inicio modo grfico cleardevice(); setcolor(YELLOW); outtextxy(85,23,"BASE"); setcolor(12); circle(100, 75, 40); outtextxy(95,74,"M"); setcolor(YELLOW); outtextxy(180,23,"HOMBRO"); setcolor(12); circle(200,75,40); outtextxy(195,74,"M1"); setcolor(YELLOW); outtextxy(285,23,"CODO"); setcolor(12); circle(300,75,40);
Hayari Cruz Gonzlez Brazo Electro-Mecnico para el manejo de productos qumicos riesgosos

outtextxy(295,74,"M2"); setcolor(YELLOW); outtextxy(380,23,"MUECA"); setcolor(12); circle(400,75,40); outtextxy(395, 74,"M3"); setcolor(YELLOW); outtextxy(460,40," APREHENSOR"); outtextxy(450,50,"ABRIR O CERRAR"); setcolor(12); circle(500,85,20); outtextxy(495, 84,"M4"); setcolor(11); outtextxy(210,160, "BRAZO ELECTRO-MECNICO"); setcolor(14); outtextxy(50,240, "1. MOTOR DEL HOMBRO"); setcolor(9); outtextxy(50,460, "PRESIONE ENTER PARA CONTINUAR....."); getch(); closegraph(); flushall(); gotoxy(10,9); textcolor(14); cprintf("Introduzca el nmero del motor a mover:"); scanf("%c", &op_motor); switch(op_motor)// INICIO DEL MEN { case '1': { do{ clrscr(); gotoxy(23,10); textcolor(13); cprintf("Presione el push: IZQ/DER"); getch(); LOWD = (masc & inp(PORT_B));// LO QUE ENTRA POR EL PUERTO LO //ASIGNO A UNA VARIABLE Y LO ENMASCARO PARA ASEGURARME DE QUE //ENTREN SOLO ESOS BITS. delay(ret_1); //RETARDO PARA QUE ALCANCE A DETECTAR POR EL //PUERTO if( ((masc1 & LOWD) >>3) == 1)// ENMASCARO DE NUEVO, SOLO //QUE AHORA EL BIT QUE DESEO UTILIZAR, SEA PIN 15. EL >> SIRVE //PARA RECORRER A LA DERECHA BIT A BIT LO QUE TIENE LA VARIABLE //LOWD. AHORA QUEDAR COMO EL BIT MS SIGNIFICATIVO Y POR LTIMO ANALIZA SI ES == A 1, SI DETECT UN 1 POR LA entrada del puerto.
Hayari Cruz Gonzlez Brazo Electro-Mecnico para el manejo de productos qumicos riesgosos

{ clrscr(); gotoxy(26,12); textcolor(9); cprintf("<------ IZQUIERDA"); do{ outp(PORT_A, 0x08);//combinacin 00 a AB delay(ret_2); outp(PORT_A, 0x04); delay(ret_2); outp(PORT_A, 0x02); delay(ret_2); outp(PORT_A, 0x01); delay(ret_2); LOWD2 = ((masc1 & inp(PORT_B)) >>3); delay(ret_1); }while((masc_1 & LOWD2) == 1); } if( ((masc2 & LOWD) >>4) == 1) { clrscr(); gotoxy(26,12); textcolor(9); cprintf("DERECHA ------>"); do{ outp(PORT_A, 0x01); delay(ret_2); outp(PORT_A, 0x02); delay(ret_2); outp(PORT_A, 0x04); delay(ret_2); outp(PORT_A, 0x08); delay(ret_2); LOWD2 = ((masc2 & inp(PORT_B)) >>4); delay(ret_1); }while((masc_1 & LOWD2) == 1); otravez = 0; } if((masc_1 & LOWD) >>3 == 0) { clrscr(); gotoxy(33,12); textcolor(12+BLINK); cprintf("STOP MOTOR 1"); getch(); }
Hayari Cruz Gonzlez Brazo Electro-Mecnico para el manejo de productos qumicos riesgosos

}while(otravez==1); } break; default: { clrscr(); gotoxy(22,12); textcolor(11+BLINK); cprintf("-NO EXISTE TAL NMERO DE MOTOR-"); getch(); } } clrscr(); gotoxy(8,24); textcolor(14); cprintf(" GUSTA UD. SALIR ? S/N"); scanf("%c", salir); salir=toupper(getch()); } closegraph(); return 0; }

Hayari Cruz Gonzlez

Brazo Electro-Mecnico para el manejo de productos qumicos riesgosos

También podría gustarte