UNIVERSIDAD AUT~NOMAMETROPOLITANA UNIDAD IZTAPALAF'A PRUY'ECTO TERMINAL I1 .. /fl ASESOR DE PROYECTO: AQUST~NSUAREZ F E R N ~ D E Z . ALUMNO: GUILLERMO CASTmEDA O R T E CARRERA; INQ. ELECTR6PJICA E N COMPUTACI6N. MATRICULA: 88322638 ENERO DE 199s OBJETIVO GENERAL: DISEÑAR UNA TARJETA CAPAZ DEMANEJAR SEÑALES ANAL~GICAS (ADQUISICI~N, ALMACENAMIENTO Y DESPLIEGUE). ADEMAS PODRA GENERAR UNA SEÑ& PROGRAMABLE, CUADRADA OBJETIVOS ESPECfFICOS: l.-) ADQUISICIóNDELA SEfbG ANAL6QICk L AF R E C U E N C I AM Á X I M AD EL AS E R A LA D Q U I R I D A ( P A B AQ U ES UR E C O N S T R U C C I b NS E AA D E C U A D A ) .E S T O QUE E L ADCOS09 TIENE UN TIEMPO DECONVERSIÓN DE 100 ys. ES D E 800 H E R T Z SE D E B E A L SAE f i AAL N A L Ó Q I C D AEEN T R A D D A E BTEE N E R UN N I V EDL E V O L T A J E E N T R E 0-5 V O L T S . C A B E A C L A R A R Q U E E X I S T E N 258 N I V E L E S D E V O L T A J E (8 B I T S DE R E S O L U C I 6 N ) , L O Q U E I N D I C A Q U E C A D A N I V E L ES DE 20 mV. AS!LO EXIGE ELADC0809. P O R S I M P L I C I D A D SOLO U S A R E M OUS N D OLEO S 8 C A N A L EDS E ENTRADA D EA L D C 0 8 0 9S,I N EMBABGO, E S M U SYI M P L D E AA BL P R O Y E C T OL AC A P A C I D A DD EE L E G I R UNA D EO C H OS E R A L E SD E ENTRADA. 2.-) DESPLIEQUEDELA SmAL ANALÓGICA. LA FRECUENCIA "ÁXIMA DE LA SERAL DESPLEGADA (PARAQUECONSTBUCCIONSEAADECUADA).ESTO DAC0800 TIENE UN TIE7NIpO DE CONVERSIóN DE160 ns. ES D E BOO0 H E R T Z SE D E B E A Q U E EL L AS E R A LA N A L O G I C AD ES A L I D AT E N D R AU NN I V E LD EV O L T A J E E CLARAQ R UE X I S T E N 266 N I V E L E D SE E N T R E 0-6 V O L T SC. A B A V O L T A J E (8 B I T S D E R E S O L U C I O N ) , LO Q U E I N D I C A Q U E C A D A N I V E L ES D E 20 m V . AS1 LO E X I G E EL D A C 0 8 0 0 .T A M B I k NH A YQ U EM E N C I O N A R Q U EE X I S T E UN A M P L I F I C A D O R A L AS A L I D AD E LD A C ,Q U EP U E D E MODIFICAR EL RANGO DEL VOLTAJE DESALIDA. 3.-) ONDA CUADRADA PROGRAMABLE. S E P U E D E P R O G R A M A R EL T I E M P O Q U E LA SERAL ESTA A R R I B A Y EL TIEMPO QUE LA SERAL ESTA ABAJO. EN A M B O S C A S O S EL I N T E R V A L O E S D E 1 ms. S I N E M B A B Q O , FACILMENTE P U E D E M r N I M OD ET I E M P O fLLCA.NZARSE Ips. DISER0 DE LA TARJETA PUERTOS DE ENTRADA SALIDA Nuestro primer objetivo es hallar trcs grupos de puertos de &S libres, La familia de los microprocesa.dores &U$6i8028618038~/80486I~~~$~ utiliza y se comunica con muchas partes del ordenador a traves de la utilizaci6n de l o s puertos de entrada y salida (EjS). L o s puertos de EIS son las entrada a traves de las cuales pasa la información, tanto como si viaja desde o hacia un dispositivode EIS, comoun tecla.do o unaimpresora. P, lamayoriade los perifhicosdeapoyose a.ccede a travesdelospuertos;deecho,cadapuerto puede utilizar varias drecciones de puertos para prop6sitos diferentes. Cada puerto se identifica por un número de puerto de 16 bits,elcual puedevariarenun ramgode OOH a FFFFH ( 6 5 535). L a CPLJ identifica u n puerto particular por su número. Como lo hace cuando accede a la memoria, la CPU utiliza los buses de datos y direccionescam0conductos para comunicarsecon i o s puertos. Para acceder a los puertos, la CPLJ manda primero una sena1 en el bus del sistema para avisar a todos l o s dispositivos de EIS de que la direcci6n que va. en e1 bus es l a de un puerto. La CPU envía entonces l a direccibn del puerto. El dispositivo cuya direcci6n de puertocoincida. responderá. El númerodepuertodireccionaunaubicacidnenmemoriaqueest6 asociadaconundlspositivode EIS peroque no forma parte de la memoria de E/S no es lo mismo que principal. En otra.s palabras, un número de puerto u n a direcciSnde memoria. Por ejemplo, el puerto de EiS 3DSH no tiene nada l a dirscclón de memoria i103D8H. Para acceder a u n puertrj se quevercon utilizan las instrucciones IN y OUT, que esthn reservadas para el acceso a 13s puertos de EIS. Las utilizaciones de l o s puertos de EIS específicos se determinan por l o s disefiadores del hardware. L o s programas que hagan uso de l o s puertos de EIS debentenercuidadodelosnúmerosde los puertos, asf comode su uso y significado. Las asignaciones de los números de los puertos difieren ligeramente e n t r e los miembros de la familia de las PC’s compatibles, pero, en general, IBh4 ha reservado l o s mismos rangos de l o s números de los puertos para los mismos dispositivos en todos l o s PC's y PS12. Una definición clara del uso de todos los puertos de entradalsalidasepuede hallar en SYSTEM BIOS FOR IBM PClXTlAT COMPUTERS AND COMPATIBLES (PHOENIX TECHNOLOGIES LTD.;PHOENIXTECHNICAL REFERENCE SERIES) Buscando en esta y o t r o s m a n u a l e s y programas de software que e s t h libres l o s rangos siguientes. 0250-0287 hex 0290-0297hex 0300-0307hex 0390-0397hex 280-287(DAC) 290-297 (TIMER) A7 A8 1 14LS 138 A5 AS f\ 74LS42 A10 A l1 hayamos Este diagrama se observa mejor en la impresicinde ORCAD.Aquf 9610 queremos ilustrar a l l e c t o r s o b r e n u e s t r a Maca para obtener l o s puertos deseados. TIMER 8264 1 7 1 , T I Para obtener una onda c u a d r a d a programable se usaran los modos 1 y en dos de l o s relojes del TIMER 8254. CLK MGDO MODO , h d a cuadrada programable 2 SOFTWARE DE LA TARJETA El programa nos permite 1a.s siguientes funciones: 1.- Adquirir del ADC y transmitir directamente a l DkC. 2.- Adquirir y almacenar en RAMia s e n d (IKb). 3.Transmitir haciael DAC la send almacenada enla RAM (1Kb). 4.-Guardar en disco l a s e ~ a almacenada l enRAM (1 KB). .Almacena la sena1 en u n archivo cuyo nombre y PATH lo proporciona el usuario. .El archivo se almacena con un formato especial. Al inicio del archivo se guarda una leyenda, esto con la finalidad de verificar el formato cuando intentemos abrirlo. .Si elnombredelarchivoque se proporcione yaexiste,entonces, el programa me preguntar&si sobreescribe el archivo. 5.- Abrir un archivo almacenado eRacupera una sena1 en un archivo cuyo nombre y PA4THlo proporciona el usuario. .Si e! archivo no existe se le indicars. al usuario. También se le Indicad. cuando el archivo exista, pero n o tenga el formato correcto (leyenda). Es decir, se i n t e n t a a b r i r u n a.rchivo que no tiene almacenados da.tos de Gna send anal6gica anteriormente guardadoscon este programa. 6 , -Permite observar los valores almacenados enRAM. 0 N os muestra los Gltlmos valores almacenados en la I%ANI (arregla) L o s m u e s t r ac a d a 20 datos y haceunapausa. Si presionamos dos enter rkpidos termina la funci6n. n I .- Generar unaonda. triangular. Genera una onda triangular enla salida del DAC. Nos pide el limite inferior y el superior de la onda triangular. 5.-Generar una onda cuadrada. 0 Genera una onda cuadrada enla salida del DAC. N o s pide el limite inferior y el superior de la onda cuadrada. 9.Envía un nivel de voltajed DAG. 10.- Muestra an el monitor de la PC la send almacenada enRAM. 11.-Adquirir del ADC y transmitir directamente al monitor de la PC. Permite modificar l a resolucidn del eje X. 12.-Modifica la propamaci6n del TIMER. Nos permitereprogramar al TIMER y nos pidedenuevacuentael la sena1esteabajoeltiempo en q u e este tiempoquedeseamosque arriba. El tiempo esta en milisegundos. I FROYECTO TERMINAL I1 TARJETA EE ADQUISICION ANALbGICA ASESOR: PROF. ACXUSTfN SUAREZ FERNÁNDEZ GUILLERMO CASTmEUA ORTIZ ENERO DE 1998 #include <stdio.h> #Include Kstdlihh. knclude <conio.h> #include <dos.h> #include <dir.h> #Include estringhp #Include smath.hr #mclude <graphics.h* #define MAXMEM 1000 /*Tamano de la muestra de la send*/ Mefine MAXLEYENDA 50 FTarnano delidentiticador de archivo*/ 0x280 FDireccibn del DAC (826E) */ #define DIRDAC #define DIR8264 0x290 PDireccibndel 8264(TIMER) */ #define DIRADC 0x300 /*Direccibn del ADC */ #define GENALITA WHITE PColor de la send */ #define FONDITO BLACK PColor del fondo */ #define EGCALITAYELLOW FColor de las divisiones */ #define RETARDO1 6 F transferencia */ #define RETARD92 200 /* adquirir */ #define RETARDO3 18 F tlesplegm */ #define RETARP04 32e% F transferencia y despliegue */ char leyenda(MAXLEYENDA]= "TARJETA PE ADQLTISICION ANALOGICA 1.U"; /*Leyenda de identificacihn */ /* "TAJ3JETA DE AD$UIEICION ANALOGICA 1.Ou */ unsigned char senn[MAXMEM]; int FE=600,RE=300; PFrecuencia y retardo de un error */ int paso=3; F GAMBIA LA ESCALA DEL EJE X: TIEMPO */ void portada (void) rC PCIRTADA DEL FROQRBMA*/ f í clearviewporto; setfillstyle (SOLID-FILL,LIGHTCYAPJ); floodfill (lO,lO,WHITEj; setcolor (LIGHTBLUE); rectangle (6,6,getm~0-S,getmaxyC)-6); rectangle (7,7,getmaxx0-7,getmaxy0-7); rectangle (13,13,getmaxx~-13,getmay~-l3~; rectangle j16,15,getmaxx~-16,getmaxy~-l5); settextjustify (CENTER-TEXT,TOP-TEXT); settextstyle (€M~~L-FONT,HORIZ_DII,~; outtextxy fgetmaxx0/2,60,"UNIVER€IDAD AUTONOMA METROPOLITANA"); outtextxy (getn1axx0/2,100,~UNIDAD IZTAPALAPA"); settextstyle (SMALL_FoNT,HoRIZ_DIR,8); outtextxy (getmaxxO/2,130,"PROYECTO TERMINAL 11"); settextstyle (SMALL-FoNT,HORE-DIR,G); uuttextxy (getmaxx0/2,175, "Aseskm : SUAREZ FER.NANDEZ AQUGTUJ "1); setcolor (MAGENTA); settextstyle (DEFAULT-FONT,HORE-DIR,2); outtextxy (getmaxxO/2,256,'TTARJETA DE ADQUISICIr3N":I; setcolor (LIGHTELUE); settextjustlfy (RI13HT_TEXT,TOP_TEXT); settextstyle (DEFAULT-FONT,HORIZ-DIR, 1); outtextxy ( g e t m a x x ~ / ~ , ~ 3 4 0 , " ~ u r n n o : " ) ; settextjustify (CENTER.-TEXT,TOP-TEXT); settextstyle (DEFATJLT-FONT,HORIZ-DIR,1); outtextxy (getmaxx012+60,36&,"CASTmEDA ORTIZ GTJILLERMO "1); outtextxy (getrnaxx0/2+60,385,' 88322638 "1); setcolor (BLUE); settextjustify (R.IGHT-TEXT,TOP-TEXT); outtextxy (getm~xO-30,getmaxyO-40,"Presione una tecla ..."I; settextjustlfy (LEFT-TEXT,TOP-TEXT); settextstyle (DEPAULT-FONT,HORI%-DIR,l); getcheo; 1 void suena(int frecuencia,int duracion) .: 1 sound(frecuencia); delay(duracion); nosoundo; void inicdza(void) f i P INICIALEA MODO GRAFICO *I /* EL 8265 (DAC) Y EL TIMER (8264) *I i n t controlador,modo; modo=0; controlador=DETECT; initgraph(&cantro:ador,&tnodo, clutportb(DIRDAC+3,OX8E); 1 "'), /x 8265 (DAC) *J outportb(DIR8254+3,Ox3C); outportb/DIR8264+0,00'); outportb(DIR8264+0,10'); Ih CLK O */ outportb(DIR8254+3,0~73); /* CLK 1 "! outportb(DIR826eel,00); outportb(DIR8254+1,03); void escala(void) I* MUESTRA LAESCALA DE LA FTJNCION PANTALLA */ I i int r ; setccslor(ESCAL1TA); rectat~~:e/0,0,639,479'1; ~lr~r=39;r~630;r=r+40) hne(r,2,r,477); for(~=29;r-;470;r=r+30) hne(Z,r,837,r); void pide-paso(void) P CAMBIA LA ESCALA SOBRE E L EJE X *I { i n t pas; char dat[20]; itoa(paso,dat,lO); outtextxy(10,30,' El paso actual es de "); outtextxy(230,30,dat); outtextxy(10,60, " Se recomienda un paso en el rango del 1 a l 10"); outtextxy(10,80, " Paso de 1 para frecuencias baja ">; csuttextxy(10,100," Paso de 10 para frecuencias altas ')>; outtfrxtxy(10,130," A que paso desea graficar : "1; gotoxy(36,9); scanf("9/odN,&pa6); If ((pawl) I I (pas*10)) suena(FE,EE); return; 1 paso=pas; 1 void pa.ntallaCvoid) /* ENVIA A FANTALLA LA SERAL CAPTURADA */ I i n t x,k,velocidad=5; uhar dat[20]; pide-paso(); setf&tyle(SOLID-FILL,FONDITO); b~(2,2,640-3,480-3); I* itoa(paso,dat, 10); o u t t e ~ t x y ( 1 0 , 3 0 ,E~l paso actual es de outtextxy(230,30,dat); escalao; */ while(!kbhitO) {. "1; for(k=O;k4OO; k+=velocidad) for(x=O; (paso*x-paso*k)<=639;x++) I putpixel(paso*x,370-~enn[x],SENALITA); if(paso*(x+1)439) 1 for(x=O; (paso*x-paso*k) ==G39;x++) putpjxel(paso*x,370-sennlxl,PONDITO); break; r* T R A N S F I E R E DIRECTAMENTE LA SERAL *t tk DEL GENERADOR AL M@NIT@R DE LA FC *I' unsigned char tapI[MAXMEM]; unsigned char tap2[MAXMEM]; i n t x,j,r,ret='iO; char dat[20]; void tranfpant(void) 4; pide-pasoo; setfiilstyle(SOLID-FILL,F@NDITO); ba(2,2,6400-3,480-3); itoa(paso,dat,lO); outtextxy{l0,30," El pax0 actual es de "); outtextxy(230,30,dat); P' escalao;*/ for(j=O;j4XO/paso;j++) {. rsutportb{DIRA.DC,OxF~; for(r=lOU;r.-O;r--); tap2[j]=inportb(DIRADC); while(!kbhitO) {. for(j=O;j44O/paso;j++) tapl[j]=tap2[j]; fr~r(x=l;paso*x~638;x++) setcolor(SENAL1TA); putpixel(pasoxx,358-tapl[x],€ENALITA).); if(pafo*(x+1)~637) j. for(j=O;j4#tpaso;j++) outportb(DIRADC,OxFF'); for(rl=ret;r.-0;r--); setcolor(FONDIT0); tap2[j]=inportb@IRADC); } forCx.=l;pasoxx<638;>r++) putpixel(paso*x,368-tapl[x],FONDITO); P. eccalao;*/ break; 1 1 void transferenciajvoid) I 1 unsigned c h a r dato, unsigned int r,w; outtextxy(40,20,"suena(1000,30cl); /* TRANI;FIERE DIRECTAMENTE LA S E f h L *I I* DEL GENERADOR AL OSCILOSCOFIC */ TRANSFIRIENDC? LA SERAL **-*'I; for{w=O;w.;RETARD04;wt+! { outportb(DIRADC,OxFF); for(r=~ETARDOl:r,~O;r--); dato=inFortb(DIRADC); outportb(DIRDAC,dato); ) } F CAPTURA 1Kb DE LA SERAL *I P' EN EL ARREGLO Serin[] *t void adquirir(void) i i n t r,j; outtextx:y(10,20, *suena(600,100>; fm(j=O;j4&iXMEM;j++) CAPTURANDO LA SERAL **x**'' >; c outporth(DIRA~C,OxFF); ~or(r=RETAFtD02;r~O;r--): senn[j]=inportb@IRAPC); 1 YA TERMINE DE CAPTURAR *** uuttextxy(lO,EO,n suena(600,100>; 'I); I i void desplegar.(void) Tx ENVIA LA SERAL CAPTURADA AL OSCILOSCOF'IO */ { unsigned int r,w; int j ; outtextxy(lO,2U," *** DESPLEGANDO -') suena(800,200j; fm-(j=O,w=O:w~RETAPO4;j++,w++) outportb(DITZDkC,selIn[jlr; forCr=fZETAI;:D03;rrO;r--); if (j==h'IAXMEM) j=O; 1 r void guadar(void) /* GUkFZDA L A SERAL CAF'TTJRADA EN UN AECHIVO "I {char arch[EO;; FILE *fp; char ÜPC, int j; outtestsy(20,~,"GuaTda [nombre.ext] en disco outtestxy('20,70,"I)e un nombre para guardar el archivo : "'1; gotoxy(44,Q; scanf(%s',arch); settextstyle (DEFAULT_FONT,HO~IZ_DIR,2); setcolorBED); d((fp=f(qxn(areh,"rrb'))==NULL) if((fp=fopen(arch,'wb"))==NULL) í. outtextxy(30,90,' No se puede abrir el archivo"); suena@,RE); 'I); 1 else .i outtextsy@O,l40," Grabando wclliw"); fwrite(leyenda,MAXLEYENDA, 1,fp); for(j=O;jeMAXMEM;j++) fwrite(&senn[j], sizeof(unsigl1ed char), 1, fp); fClOSe(fp); outtextxy(30, 180,n Archivo graI>ado'); 1 else { ~uttextxy(30,90,'~Sobreesoribir e1 archivo? ( S / N ) "1; suena(FE,RE); fclose(fp); opc=getcheO; If((opc=='sq I I {clpc=='sq> c If((fp=fupen(arck,'wb')))==NULL) { outtextxy(30,140," No se puedeabrir el archivo')): suena(FI3,RE); 1 else r outtextxy(30, Grabando archivo"); fwrite(leyanda,MAXLEYENDA, 1fp); for(j=l);j-;MAXMEM;]++) fwrite(&senn~J,sizeof(unsigned char), 1, fp); fclone{fp); ou ttextxyj30,180," Archivo gmhado"); 1 j setcolor&IQWTC+REEN); gettextstyle (DEFATJLT-FONT,HORIZ-DIIZ, I); void abrir.(voici) /* RECUPERA LA SERAL GUARDADA EN UN ARiJHTVi3 *I char arch[fD]; char checaleyenda.[Mk~LEYENDAI; FILE "fp; i n k j; outtextxy(20,40," C a r g a r un archivo completo de disco '); outtextxy(20,70," De el nombre del archivo a abrir : "1); gotoxy(43,S); scanf('%s*,arch); settextstyle (DEFAULT-FoNT,H@RIZz_DIR,2); setcolor(RED); If((fp=fopen{arch,'rb"))==NULL) { outte~txy(lQ#,200,~ No se puede abrir el archivo'); suena(FE,RE); t else I* chew si el ar.chivo a abrir es un archivo "ESTIMULADOR NEURONAL 1.0' */ fread(aheca.leyenda,MAXLEYENDA,1,fp); If(strcmp(leyenda,cilecaleyencla)) { (~uttextxy(e0,200,*Error no es un archivo de formato outtextxy('l0,240,leysnda); suena(FE,RE); else i outtextxy(30,12#," Cargando archivo fseek(fp,MAXLEYENDA,O); for~=O;j==MAXMEM;j++) "); fread(&senn/j],sizeof(unsigned char), 1, fp); outtextxy(30, 160,n fclose(fp); Archivo cargado'); 1 setcollor(LIGHTC3REEN); settextstyle (DEFAULT_F@NT,H@RI%_DIR,l); } '1; F MUESTRA TOPOS LO6 VALORES PEL */ void ver (void) c. P ARREGLO DE LA SERAL CAPTURADA *! int j=O,y=2; char dat1[20]; char dat21103; while(!kbhitO] i itoa(j,datl,l0); itoa{senn[j],dat2,10); strcat(dat1," "1; st;rcat(datl,dat2); strcat(dat1," "); outtextxy(lO,y*20,datlf; j++; y++; if(!(j9-620)) : getcheQ; clearviewporto; y=2; \ if'(j==MAXMEM) j=O; i for(s=max;s*min;s--) i 1 ) outportb(I?IRDAC,s): void cuadrado(voidj I* QENERA UNA SERAL CUADRADA *I f unsigned char max,minl outtextxy/10,10,"Ondacuadrada '1; outtextxy(10,60,"Demeel limite inferior (0-26E):'); gotoxy(36,4); scanf(*3'od*,&min); outtextxy(lO,83,'Deme el limite superior (0-265) :"); gotoxy(36,6); scanf('%d',&max); outtextxy(100,4000," Presione una tecla para terminar ..."); while(!bhitO) void manda(void) /* ENVIA UN NIVEL AL DAC! *I { unsigned char k; k=0 ; for (; k!=222,) aleartiewpurtO; outtextxy(20,30,"***** MANDA NIVEL I; outtextxy(l5,~0,"T)eme número a desplegar (222 exit):"), gotoxy(4o,€i); scanf("%d",&k); outportb(Ox280,k); *****O: J Tx CAMBIA LA PROGRAMACIONDE TIMER *I Tx SOLAMENTE EL CONTA13OIZ */ unsigned int t1,tu.: P tinlelclwer, time-upper *I unsigned int tlmsh,.tumsb,tllsb,tulsh; outtcjxtxy(r10,30,'FFRO~~AMA~I(3N DEL TIMER "1); outtextxy(40,70, "Cuantos milisegundos arriba (1-9939) :"); go toxy(47,E); scanf('%d"~&tu); rJuttextxy{40,100,"Cuantosnlllisegundos abajo (1-9999) :'I; gotoxy!47,7); scanf("%d",&tl); if((tuC1) I I (tlq1)I I (tup.9999) I I (tlr9999)j I* Asegura rango delos datos */ void Progtimer(void) 6 I > suena(FE,RE); outtextxy(100,200,"Erroren los datos de entrada"); return: tu=tu+tl; tulsL=tuS.6100; tumsb=tu/100; t&b= t1% 100; tlmsb=tl/100; outportb(DIR8254+3,Ox36); I* CLK O *I outportb/DIR8!264+0, tulsb); outportb(DIR8264+0, turnsh); outportb(DIR8264+3,0~'73);P CLK 1 *I outportb@IR$SE;~+l,tllsb); outportb(PIR62~4+1,tLmsb); j void m e n u (void> f 1. clearviewporto: setf*fityle (SOLID-FILL,BLLTE): floodfill (10,10,WHITE); setcolor(LIr3HTRED); setlinestyle(SOL1D-LINE,O,THICK-WIDTH); rectangle(1,1,638,478); setaolor~LI~HTCITZEEN); setlinestyle(SOLID_LINE,O,NOEiMIDTH); TARJETA DE ADQUISICION"); uuttextxy(60,40, " Termina *?; outtextxy(90,100," Entrada-sahda a osciioscopio ">; outtextxy(90,120," Adquirir "1; outtextxy(90,140,n Desplegar a osciloscopio ')>; 13uttextxy(90,160," Guardar e n disco ; outtextxy(90,180,' Abrir archivo "? ; outtextxy(90,200," Ver los valores del areglo ">; out textxy(90,220, " Onda "1; outtext~y(90,240,~ triangular cuadrada Onda "1; outtextxy(90,260," Mandar un número ; outtextxy(90,280," Desplegar a pantalla "); outtextxy(90,300," Entrada-s&da a pantalla '1: tXlttextxy(913,320," Frogramaz TIMER ; +>uttextxy{90,340," "CUAL ES SU OPCION? : "1; outtextxy(l20,400," "> void main (void) I* MENU PRINCIFAL */ char upc='z'; inicialnao : portadao; for (;;:I { do c menu0; opc = getcheo; )wh~e(!strchr("Ol23466~89aAbBcC",opc)); clearviewport 0 : if(0pc=='i33 i closegrapho; break; 1 switch(opc) i case '1' : transferenciao; break; casa '2': adquiriro; break; case '3' : denplegaro; break; case '4' : guardara; break; casa '5' : abriro; break; case '6' : ver0; break; case '7' : triangulo~; break; case '8' : cuatlrado0; break; case '9' : mandao; break; case 'a' : case 'A': pantallaf): break; case 'b': case 'B': tranfpanto; break; 4:asa ' c ' : case 'C' : ProgtimerO; break; } outte~txy(100,400,~ Presiane una tecla para continu=-.. ."); getch0: 1 O-rN aaa 1 Y rc d A SYSTEM BIOS FOR IBM PClXTlAT COMPUTERS AND COMPA4TIBLES PHOENIX TECHNOLOGIESLTD. PHOENIX TECHNICAL REFERENCE SERIES LOS MICROPROCESADORES INTEL 8086/8088,80186,80286,8(3386 Y 80486 ARQUITECTURA, PROGRAMACIbN E INTERFACES BARRY B. BREY ED.FRENTICX HALL HISPANOBMERICANA THE NEW PETER NORTON PROGRAMER'S GUIDE TO THE IBM PC & PSI2 PETER NORTON ED. MICROSOFT PRESS LENGUAJE ENSAMHLADOR PAPA MIGROCOMPUTADORAS IRM CODFREY ED.PRENTICE HALL MOTOROLA FAST AND LS TTL DATA MOTOROLA MOTOROLA LINEAR AND INTERFACE ics MOTOROLA