Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Uso Del Puerto
Uso Del Puerto
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
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
7 X
6 X
NMERO DE BIT 5 4 3 2 X X X X
X X
CONTROL SECUENCIAS DE MOTORES
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
MASCARA 80 40 20 10 2
X X n n n
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; }