Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso: Programación
Integrantes:
Ciclo: 2019
Dev-C++
Antes de definir el Dev-C++, es necesario tener una
pequeña noción sobre el lenguaje en C++.
Además, Dev-C++ viene incluido con múltiples librerías y ficheros de ejemplo que permiten
codificar un algoritmo. En su instalación nos permite elegir múltiples idiomas (incluido el
español), incluye también explorador de clases y variables, plantillas, facilidad para instalar
librerías adicionales, etc.
Características
Es de adquisición gratuita.
Es fácil de descargar.
Se puede exportar código fuente o proyectos a HTML o RTF para subir códigos
a páginas Web y compartirlos.
Desventajas.
-Líneas de tierra.
-8 pines de datos.
-5 líneas de estado.
-4 líneas de control.
Además de todo esto, del puerto paralelo se pueden destacar otras señas de identidad:
-Dispone de una dirección de entrada / salida.
-El estándar posee tres registros de 8 bits, de datos, control y estado.
-Existe el puerto paralelo IDE, que se usa para conectar discos duros, grabadoras de CD,
etc.
-También está el puerto paralelo SCSI, que se emplea en los ordenadores de la firma Apple.
-Unidireccional (4bits).
-Bidireccional (8 bits).
Unidireccional:
La especificación original para el puerto paralelo era unidireccional, esto quiere decir que la
información solamente puede viajar en una dirección por cada pin.
El único puerto paralelo disponible en la IBM-PC original era usado para enviar información
de la computadora a un dispositivo, tal como la impresora. Su uso primario era enviar datos
a la impresora más no viceversa. Los puertos unidireccionales son capaces de transmitir
velocidades de aproximadamente 40-60 Kbytes por segundo.
Bidireccional:
Con la introducción del PS/2 en 1987, IBM ofreció un nuevo diseño de puerto paralelo
bidireccional. Este modo es comúnmente conocido como puerto paralelo bidireccional,
conocido como SPP (Standard Parallel Port) y ha reemplazado completamente el diseño
original.
Las comunicaciones bidireccionales permiten a cada dispositivo recibir y transmitir datos
por igual. Muchos dispositivos usan los pines del 2 al 9, originalmente diseñados para el
envío de datos. Pero los pines del 18 al 25, utilizados para tierra, pueden ser usados
también para datos. Esto permite una comunicación full-duplex (ambas direcciones a la
vez). Los puertos bidireccionales son capaces de transmitir velocidades entre los 80 y 300
Kbytes / Seg.
Puerto paralelo.
Jumpers.
Motor dc.
Silicona.
Llantas de juguete.
Puente h L29H.
Bomba de agua.
Micro switch.
Manguera de jeve.
1. #include <iostream>
2. #include <stdio.h>
3. #include <conio.h>
4. #include <windows.h>
5. using namespace std;
6.
7. typedef short _stdcall (*inpfuncPtr)(short portaddr);
8. typedef void _stdcall (*oupfuncPtr)(short portaddr, short datu
m);
9. int idx=0;
10. int valport=0;
11. char cmd_act=0;
12. short currentVal = 0x00;
13.
14. #define HIGH 1
15. #define LOW 0
16.
17. void setDataBit(short index, short value) {
18. switch(index){
19. case 0:
20. if (value==0)
// Set Data[0] to 0
21. currentVal = (short) (currentVal &
0xFE);
22.
// aaaa aaaa currentVal
23.
// AND 1111 1110 mask
24.
// =========
25.
// aaaa aaa0 new currentVal
26. else
// Set Data[0] to 1
27. currentVal = (short) (currentVal |
0x01);
28.
// aaaa aaaa currentVal
29.
// OR 0000 0001 mask
30.
// =========
31.
// aaaa aaa1 new currentVal
32. break;
33.
34. case 1:
35. if (value==0) currentVal = (short) (currentVal
& 0xFD); // currentVal = aaaa aa0a
36. else
37. currentVal = (short) (currentVal
| 0x02); // currentVal = aaaa aa1a
38. break;
39.
40. case 2:
41. if (value==0) currentVal = (short) (currentVal
& 0xFB); // currentVal = aaaa a0aa
42. else currentVal = (short) (currentVal
| 0x04); // currentVal = aaaa a1aa
43. break;
44.
45. case 3:
46. if (value==0) currentVal = (short) (currentVal
& 0xF7); // currentVal = aaaa 0aaa
47. else currentVal = (short) (currentVal
| 0x08); // currentVal = aaaa 1aaa
48. break;
49.
50. case 4:
51. if (value==0) currentVal = (short) (currentVal
& 0xEF); // currentVal = aaa0 aaaa
52. else currentVal = (short) (currentVal
| 0x10); // currentVal = aaa1 aaaa
53. break;
54.
55. case 5:
56. if (value==0) currentVal = (short) (currentVal
& 0xDF); // currentVal = aa0a aaaa
57. else currentVal = (short) (currentVal
| 0x20); // currentVal = aa1a aaaa
58. break;
59.
60. case 6:
61. if (value==0) currentVal = (short) (currentVal
& 0xBF); // currentVal = a0aa aaaa
62. else currentVal = (short) (currentVal
| 0x40); // currentVal = a1aa aaaa
63. break;
64.
65. case 7:
66. if (value==0) currentVal = (short) (currentVal
& 0x7F); // currentVal = 0aaa aaaa
67. else currentVal = (short) (currentVal
| 0x80); // currentVal = 1aaa aaaa
68. break;
69.
70. default:
71. break;
72. }
73. }
74. void apAg(){
75. setDataBit(4,LOW); setDataBit(5,LOW);
76. }
77. void apCar(){
78. setDataBit(0,LOW); setDataBit(1,LOW);
79. setDataBit(2,LOW); setDataBit(3,LOW);
80. }
81. int main(void){
82.
83. HINSTANCE hLib;
84. inpfuncPtr inp32;
85. oupfuncPtr oup32;
86. printf("CARRO BOMBERO\n");
87. hLib = LoadLibrary("inpout32.dll");
88.
89. if (hLib == NULL) {
90. printf("LoadLibrary Failed.\n");
91. return -1;
92. }
93.
94. oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
95.
96. if (oup32 == NULL) {
97. printf("GetProcAddress for Oup32 Failed.\n");
98. return -1;
99. }
100. (oup32)(0x378,1); (oup32)(0x37A,0);
101. apCar(); (oup32)(0x378,currentVal);
102. while(1){
103. printf("\nDigite Comando: ");
104. cmd_act=getch();
105. printf("%c\n",cmd_act);
106. printf("Procesando comando\n");
107. if(cmd_act=='a'){ setDataBit(0,HIGH); setData
Bit(1,LOW);apAg();
108. setDataBit(2,HIGH); setData
Bit(3,LOW);(oup32)(0x378,currentVal);}//delante
109.
110. else if(cmd_act=='b'){ setDataBit(0,LOW); setDataB
it(1,HIGH);apAg();
111. setDataBit(2,LOW); setDataB
it(3,HIGH);(oup32)(0x378,currentVal);}//atras
112.
113. else if(cmd_act=='c'){ setDataBit(0,LOW); setDataB
it(1,HIGH);apAg();
114. setDataBit(2,HIGH); setData
Bit(3,LOW);(oup32)(0x378,currentVal);}//izquierda
115.
116. else if(cmd_act=='d'){ setDataBit(0,HIGH); setData
Bit(1,LOW);apAg();
117. setDataBit(2,LOW); setDataB
it(3,HIGH);(oup32)(0x378,currentVal);}//derecha
118.
119. else if(cmd_act=='e'){ setDataBit(4,HIGH); setData
Bit(5,LOW); apCar(); (oup32)(0x378,currentVal);} //Sacar
agua
120. else if(cmd_act=='f'){ setDataBit(4,LOW); setDataB
it(5,HIGH); apCar(); (oup32)(0x378,currentVal);} // Sonar
la sirena
121. else if(cmd_act=='g'){ setDataBit(6,HIGH); setData
Bit(7,LOW); apCar();apAg(); (oup32)(0x378,currentVal);} //
escalera sale
122. else if(cmd_act=='h'){ setDataBit(6,LOW); setData
Bit(7,HIGH);apCar();apAg(); (oup32)(0x378,currentVal);} //
escalera vuelve a su lugar
123. else if(cmd_act=='i'){ (oup32)(0x37A,1); apCar();apA
g(); (oup32)(0x378,currentVal);} //
124. else if(cmd_act=='j'){ (oup32)(0x37A,2); apCar();apA
g(); (oup32)(0x378,currentVal);} //
125. else if(cmd_act=='s'){ (oup32)(0x378,0); (oup32)(0x37
A,0);}
126. else if(cmd_act=='x'){ (oup32)(0x378,0); (oup32)(
0x37A,0); FreeLibrary(hLib); return 0;}
127.
128. else{printf("comando incorrecto\n"); }
129. }
130.
131. FreeLibrary(hLib);
132. return 0;
133.
134. }
135.