UN W E RSIDAD
AUTO
NOlvfkh3
ETRO F OLITL4NA4UNIDAD IYTAFAUAFA
IN GENIE RÍA E LECTRÓ
NICA
/
F RClYE LTO DE INGENIE RIA
ELEGTRONICA I
Y 11129305
1
.
‘1
SISTEMA AUTOMATIZADO PARAPERFORACIÓN DE TABLILLAS DE CIRCUITO
IMPRESO
Asesor es:
Y
4
José Garcia nares
Maria Zuñiga
T
r
ejüDiaria Laur a Kr o epfly Saury
Silveriu Bautista Fragoso
I. OBJETIVOS
F,ealir:ar disefici e irriplaiitaci6n de c-üritrüi digital de un taiadrci rrtüxi parala perfclraciót-t de tarjetas de Circuito
Impresü basado enuri rciicrüc:ünti-üladür 5031.
Itttpiaritaciht-1 de Soft ware p x a realizar una iriterfaz de
11. DISEÑO
El
dia.gra.ma a bloques del siguiente sir;tema ., muestra agrandes rasgos la estructura. basica del perforador
‘-7
Interface
DESCRIPCIdN DE LAS ETAPAS
Sistema mínimo 803 1
Consiste en el kit de 803 1.
El diagrama de este sistema se muestrd. en l a figura 2
L a función de esta etapa
es
controlar elmanejo de los motürex que cünstituyrrt l a parte b&ica de la etapamecdnica y püsteriorrriente controlará la irtterfaz de comunicación con una compiutador a.. con
el
pr ophsito de aumentar la eficienciae n
la erttraday adquisición de datoscoordenadas de perforación).
Interface de potencia
Este bloque esta formado princi~taknertte put- do, etapas
que son:
Lbgica d e control
y
actuador.El problema principal al diseñar el perforador fué el movimiento del taladro efí 3 ejes, de manera que
se
pudiera perforar sobre cualquier punto en un plano.Para solucionar dicho problema recurrimos a sistemas mechnicos empleados comercialmente, como son:
graficadores
e
impresoras, los cuales mueven una plumillaü una cabeza de impresión sobre un plano o semiplano y
L a etapa de Ihgtca de coritrol tiene como principal objetivo el controlar
el
movimiento de los inotores de pas o unip olar e 5.Esta lhgtca funciona hisicmlente sobre.
un
cortta.dor (iip/dowti],el
m a l proporciona el sentido de a.vance y la direccihe n
un niotor,, asi comoel
número de pascis, recihiendu l o s hilos de c:cintrol del Sistema aiínimo 5031.Enlafigura
3
se muestraun diagtatrta de esta etapaEl actuador cütistd de un circuito de conmutacitin básico,
el mal se encarga de polarizar alternativamente un devanado por paso delmotor en el sentido que se haya
establecido en la logica de control, esto
se
logra por medio de cuatro hilos.El diagrama correjpondiente a esta etapa se muestra en la figir a 3.
Sistema Mécanico
En este sistema se utilizaun carro que transporta
el
taladro alo largo del e j e X , otro carro que llevala tarjeta
sobre el eje Y , con l o cual
se tiene
el movimientocornpleto sobre
el
planoX i .
Fara lograr la perforación se diseño un FiSterna de
engranes que mueven toda la plataforma de l a tarjeta
sobre el eje Z, de tal manera que el taladro puede
'
111.
SOFTWARE PARA ELSISTEMA
MfPrIMO
La ircterfaz del perforador c:on la FC se realiza por medio del sistema minim,. L o cual quiere decir que hay
un
software en el sistema rninimo
y
otro en la PC y ambos secotrcurtican et-tire sí p a r a controlar finalmente alperfordor.
El scifiware del sistema mitiirno consta basica.mertte de L ., partes:
a) Cümunicaciíit-c con la F L [sistema minima
->
F
C]b) Control del perforador [sistemaminimo
->
perforador)Descripción del software del 8031 para Za comunicación con la PC.
Sistema minimo
->
PC.
La FC rrcartda l a inforrriaciún de las coürderiadas hacia el
sistema minimü. E l
C P U
del 8031 se da. c:iierita. de lallegada. de estos da.tos y l o s marida amemüria FAh4 del sistema rnirtimo. L a ubicacion de los datos en memoria
FLkhrl ya esta predeterminada
y
puede variarse. Por lü tartto el 8L131 ya sabe en que direcciones almacenará losdatos que le llegan. Almismo tiempo que los datos se empiezan a alma.c:enar en el sitio indicado, pcit- ütro lado
se tiene
un
procedimiercto que mandalos datos de la memoriaM M
hacia el perforador.Se revisa si hayrriás datos en el
PPI,
silos h a y estos datosse colocan en la siguiente casilla de memoria. Para ubicar
las direcziones de memoria que contienen los datos se
Debido G. que el buffer d e da.?us es reducido se irrlplmto
una e s ? r u c ? ~ a de datos d e cola cirmlat que fut-tc:iiona i::utt
2 ap~-ititadores. El primero apunta a la siguiente püsicitlt-i d e donde se puede introducir un datci de 1cis que llegan de la. FC.
El
segundo ay~iii-it~ior dice c:ml es el siguientedatri que puede torcriar-sse p x a llevarlo
al
perfciia.dor. (handk ei primer apntador llega ai finai del bu:fer seregresa al piintcipio
pxra
seguir esc:rik&xtdci. El seeundo n-5a.yiuntadnr puede adelmtirse rietqire y mando
no
reha-se al primero. De igual fcirnia el qnirttador 2 SE! va
"cutnienda " lcis datos 37 ' ~ c i adelüt-itan3u:;e.. cuandci llega al
final del kmffer se remesir 8.2 al principio y pueden seguir así riiientras n o alca.nce al apiuntador 1.
&ando termina. d e perforar el sisienla minimo envía un
mensaje
la.
PC diciendo que h a terminado laperfot-acihn, y que esta listo para ia prbsirm
I
TOR Y ECTR EN EL. UFiIG
UN PRCD
;VUELVE A CHECRR
<
i
ACIDNES**
**********
!i I
COMIENZAe NOV DPTE, #LETHE2 2 D E W L I EDA EL M€NSAJ& ' Er ~
ACALL PESFLEGA 1
A, DESPL O I
CJNE A, XW$ELO,€T1001
MOV A, DE@FHI
CJNE A, IhlSEH1,EfIQOi
SSMP ET1002
MT3V DPL, DECP'LO
NOV OPH,PESF"I
NUVX A,BI)FTW
~
I I ET
1 I
I ACALL COOHDE I
I NC DPTR I
K & L t OVFL ~
NOV DcPjPLa, RL I
MOV DESPH1,DPH
CJMF ETIOOZ
MOV B
,
WXJM, ET10073 RET I
i
pEwmw: CJNE
,
CJNE 5n-W
o ACALL DIR
i W L L PA8
8 DJNZ
,
DJNZ I
C JNE H5,%0Ot.llETIOl4 CJNE R4,#0OH,ETIOl4 SJMP E T I O l S
ETIOII: 5ETB
E T l O l , ACw,. DIRY
,
ETfUlF: ACALL PAIBOY
m,
R 4 , E
S E T E P1.3 4 .
E T I Q f S : RET
' P A W X : MOV
,
WSHI @T1019: SETB .O
ACALL RETMQDPr
CLW Pl.O
I ACALL
m m m
DJNZ R3, E T f O l q
RET
I
DIWP M V
JNB
CLR
Mov
XRL
X R L A,
w m
JNP A?cC . 7 , ET r(324
CLR F 1 . c .
XRL A, #OFFH
ADD A, # O l H
MUV R5. A
MCV A,R5 1
> MOV A, 64
JNC ET I O 1 b
XRL A, tCiFFH
MQV R4,A
MOV H4,CI RET
FiDD A , # C i l H
GJMP
t
1
2 1
EfI016: XRL I
i
STI024: INC R 4~ Q R # PUSH 07n
I
PUSH QbH
I
MOV 1
I
I
Rb,ETIO21
DJNZ R7
,
ET1022 IPOP OBH 1
W P 07H
RET
Descripción del software del sistema mínimo para el
control del perforador
Sistema mínimo --:> perforador
En l a primera sección
se
define las direcciones donde sekyardanlos datos provenientes de l a P C y las direcciones
de los optoelectricos.
Después se realiza una rutina p a r a inicializar los motores,
checa si
el
motor s erst6 en el origen, sino l o regresahasta que lo posiciona en el ürigeti, de igual forma para el
motor :7.
Enseguida se comienza con las perforaciones, se
despliega en el display elmensaje "INICIO" y se espera hasta que se presionala tecla dato para iriciar.
L a rutina siguiente se encarga de mciver el taladro sobre el eje x, se perfora y liuego 5e buscala siguiente posición. Elmovimiento anterior
se
reliza también para el eje y.E l rciü-Amientu sobre el eje z se t-ealiza al final y en esta rutina se cuerda. el riimero de perforacicines.
Después se listar1 todas las rutinas bikica para implantar las rutinas generales ardes tnencionadas.
A continuacibn se mueswa ellistado completo de las
AVDCET SYSTEMS SR51 CROSS ASCEHBI.ER - VFRSIIIN 1.1611
SOURCE FILE NAHE: PROY.PAS
em^ 0170 le79 1878 1871 fib72 1177 087E
l S B #
0.309
6410
8389 ZAEE
8500
11510 C291 1512 C285
(5114 912880
ES17 Ed
ESP8 F5FE
051A 2PFlfl7 6560 DI12 f56F MF6 0511 E0
0512 F5FO
1514 W 1 0 4
1517 DI28 1519 M F 6
lslB 7591EA
651E W 5 C E 1521 71w
1523 DlDü
6525 B4IAFB 1528 Bt156fl
DATO EOU DlRlI EQU OlRI, EQU D6 EQU Dl EQU
D2 EQU DI EQU TECLA EQU DATO1 EQU DECPLECA EQU ASIETE EQU DESPBUF EQU OPTOELE EQU
;PIRECCION QUE GUARDA EL DATO INlRODUClDO
05PII 07Pll AIPII 87R1 1i7111 0i;11 0i7H 07Ell
ISRQH :DIRECCION DON@E SE ENCUENTRA EL ler. DATO
04 I RII
ü3BDIt
28BFII
0 3 n w
;@IRECCION DONDE SE ENCUENTRAN LOS OPTOELE.
CLR P1.1 CLR P1.3
nov DPIR, IDPTOELE
nnv B,A INICIAX: MOVX A,BDPTR
JB B,i,FlIO!? ACALL PACOY
CJñP IHlClAX INICIAY: MOVX A,@DI'TR
HOV B,A
ET1633 JE E.0,CüRIEHZA ACALL PASOY
SJHP INlClAY ;
; f11111111111111111111I11111
; 11 FIN DE INICIALIZACION Et
; 11111111111ff111111lt1ll~*l
;CtRCA AL DPTR LA DlRECClON DE LOS OPTO
;CARGA EL VALOR DE LOS OPTO
:CIIECA SI EL MOTOR X ESTA EN EL ORIGEN ;SI NO, REGRESA UN PASO
;VUELVE A CHECAR
;CAECA SI EL HOTDR Y ESTA EN EL ORIGEN
;SI NO, REGRESA UN PASO ;VUELVE A CHECAR
; I I ~ ~ ~ ~ ~ ~ I ~ ~ I ~ ~ I ~ I ~ I I ~ I I ~ I ~ ~ I I I ~ I ~ N ~ ~ ~ I ~ I I ~ ~ ~ ~ I
; 1 1 COMIENZA RUTINA DE INTROWCCION DE DATOS 1 1
; 1l111111i11111l11i11111l1l111~111t111111111111
COMENZA: HOV PI, IlEAH
WOY DPTR,ILETREI ;DECPLEGA EL HENSAJE 'Int dAt'
ACALL DESFLECA
ETlE1l: ACALL RECILIATO ;ESPERA HASTA PRECIONAR LA
' CJNE A,lEBAH,ETIIüI ;TECM '1'
HOV DPTR,lDATOI :CARCA AL DPTR CON LA DlRECClOW DDNDE SE GUARDAN LOS DATOS PAGE 1
AVOCET SYSTEAS 8151 CROSS-ACSEHBLER - VERSION I. IM
SOURCE FILE NAAE: PROY.PAS
8520 D I M 152F E57E 0531 B41A02 0534 8115
0539 B M D 0538 DlFF 053D DlAA 153F E57E I541 8418E7 I544 FllB I546 8IF3
1548 74FF
054A F I
15% 841~02
1540 911506 Is4E 71Dg
Is51 DlDü 1552 846AFB
1555 r n 8
1557 DlDE Is59 M C
1558 911510 155E 78H
15w 79n
1582 7Dll
IS64 E1
1585 UFF12
1568 8127
1561 851113
WA3
B E 811A Is71 1111 1572 BlFI 1574 w2
1576 81F6
1578 DllB
ACALL INTDAT MOV A,TECLA
CJNE A,IOIAH,ETlRO3
SIMP ETIOB4
ETIO13: CJNE A, 1OüB11, ET1164
SJMP ET1005 ETIIO4: IICALL LlnPlA2
ACALL INTOAT
CJNE A, IWBH, ET1012 ACALL ERROR
SJnP ET1004
nov A,TECLA
ETIBO5: IiOV A,i6FFIl
novx BDPTR,A
; INTROWCE DATO
;CHECA SI YA TERillNlO DE INTROWCIR EL DATO X
;SI NO, CHECA SI YA TERNINO DE INTROWCIR TODOS LOS DATOS
;LIRPIA LAS DIR DIRL, DlRH Y DESPLEGA MENSAJE
; INTRODUCE DATO
;CHECA SI SE PRECIDH LA TECLA 'I'
;SI SE PRESIOND DESPLtEGiI 'ERROR' ;SI NO, SIGUE CON LA INT. DE DATOS ;YA TERHIND. ESCRlüE FIN DE DA1OS
1 1 1 l l f l 1 l f l l i l l l l l l l 1 1 l v u n 1 ? * * ~ ~ 1 1
1 1 FIN DE INTRODUCCION DE DATOS 4 1
I1lflll€lllllll1ltll)1111)111111(1
11111111111111111~l1111111
11 INICIA PERFORACIONES 11
; 1 1 1 l 1 l 1 1 1 1 1 1 1 1 1 1 1 1 1 1 t l l l l l
i
MOV DPTR,ILETREZ +DESPLIEGA EL NENSAJE 'Inicio'
ACUL DECPLECA
ET1116: ACALL RECIDATO ;SE ESPERA HASTA PRESIONAR
CJHE A,IüIM,ETIflIG ¡LA TECLA 'I' PARA INICIAR ET1143: iiOV R6,i1üBll
ET1138: ACALL PASOZF
DJHZ R6,ET1638
o
; 11 M V E EL TALADRO SOBRE EL EJE X II ;
AOV OPTR,IDATOl
)Iov R8,1101H
HOY RI,IOIOH
AOV R5,1101H
CJNE A,IOFFH,ETIOR8
SIMP ET1819 ETIIOB: CJWE A,OOM,ETIOIO
IK DPTR CJHP ETlOll ETlOlI: I C ET1112
ACN.1 MYORK
SJHP ET1013 ET1112: ACALL " O R X ET1113: ACUL HUEVX i
;
**
FIN DE iIüVlHlENT0 X *IET1117: rmVX A,BDPTR
tCARGA AL WTR CON LA DIR DEL fer. DATO
;PARA C h R AL WS HOTORES EM EL ORIGEN $INICI)iLIU WC REG. 1,1 Y 5
¡CARCA EL PRlllEll DATO
1CHECA SI YA SE tE~iW0 DE PERFORAR
;COMPARA EL DATO UiN RI PARA CALCüi.AR LA llVRlA POSICION
¡si ES LA nim CARGA EL SIGUIENTE DATD
¡SI NO, u1IIPARA SI Es HEWOR O HAYOR
¡SI ES MFOR, ADELANTA EL NOTOR X
iSl NO, REGRESA AL MOTOR X
AVOCET SYSTEHS 8151 CROSS-ACSEHBLER - VERSION 1. IsH
SOURCE FILE NAHE: PROY.PAS PAGE 3
657A EO
0578 B5010.3
057E A3 ü57F 818A
tS8l 4814 OS83 BlFC 1585 8102
0587 DI62
1589 DllF
: 4 4 NUEVE EL TALADRO SOBRE EL EJE Y 11
;
ETIOII: MOVX A,@@PIR ;CARGA EL DATO Y
CJNE A,IRIH,ETIüI4
SJNP ET1115
ACALL MAYORY ;SI ES MAYOR, ADELANTA EL HOTOR Y SIMP ET1817
;COMPARALO CON EL REG AI PARA CALCULAR EL NUEVA POSICION INC DFTR ;SI ES LA nisnA CARICA EL SIGUIENTE DATO
ET1114: IC ET1816 ;SI NO, COMPARA SI ES RENOR O MAYOR
ETIO16: ACALL MENORY ;SI NO, REGRESA AL IiOlOR Y
ET1017: ACALL HUEVY i
; M I FIN DE IiOVlIilENTO Y @ *
; 4 4 HUEVE EL TALADRO COBRE EL EJE I, Y CUENTA EL NUMERO DE PERFORACIONES 41
i
1588 DI74 ET1015: ACALL NUllPERF ;CUENTA EL NUilERO DE PERFORACIONES REALIZADAS 058D DI43 ACALL IiUEVI ;BAJA Y SUBE EL TALADRO
i
; I* FIN DE ROVlRlENTO I Y NUHERO DE PERFORACIONES 4 4
1
;
; 4 f ~ l f l f f f f f f l 4 4 4 4 l l 4 f 4 4 m f m
; 11 FIN DE PERFORACIONES I *
; ~ m f l f l t f 4 f f l f f 4 4 f ~ l f f l ~ ; l f
15% 81D3 SJHP ET1807
8591 C291 1593 881102
15% 8013
#Se8 E8
E89 DIO8
KIND C293
0512 M13 KIA4 E9
#SA5 DIIF 85A7 DZ93 KIA9 C295
#SA8 ?E88
R A D BIDE
6sAF DEFC
úSB1 0295
6583 9M5C6
ED0 Dlüü
HBA M8A62
KIM) 8106
HV MIBF6
ñ c 2 10518
man DZ~I
EBF wn2
1586 iim
i ET1069:
ET1 045:
ETlH46:
ET 1117:
ET1 1148:
ET1 139:
ETII44:
ET 1142:
CLR PI.l
CJNE R#,llüHH,ETI645 C J W ET1046 MOV A,R0 ACALL WEVX CETB PI.1 CLR P1.3
CJNE Rl,llHüH,ETlW7 SJMP ET1048 MOV A,RI
ACALL WEVY
SET8 P1.3 CLR P1.5
HOV R6,IBBBH ACALL PASOZF DJNZ R6,ETl639 SET8 P1.5
MOV DPTR, iI.ETRE7 ACALL DESPLEGA A C A U RECIOATO CJNE A, tlOAH, ET1142 C J W ET1043 CJNE A,t688H,ETI644
UMP COMIENZA
AVOCET CYSTENS 8151 CROSS-ASSENBUR - VERSION I . llll
SOURCE FILE NAnE: PROY.PAS
ISCS 22
0SC6 8786AFAB üSCA ABEFABA3
05CE CFAB87FF O502 AIW7FF 0SD6 CFAEEFA7
05DA EFAJFFFF
1SDE 7815
#SE2 BlEB #SE4 C294 #SE6 8x8 #SE8 ü8F6
QSEA 22 ~ L E P ~ 2 9 4
#SE8 7CFF 05ED CCFE
(SEF 22
AFI FA
AFI C3
tSF2 88
OSF3 AB12 15FS 22
05~6 ce
A F 7 C3 0SFB 53
15FD C291
15FB 22
OSFC FA
fm c3
ESFE W
RET
LETRE7: OB 18711,IR6tl,BAFII,OABH
I ABH, EEFH, úAB11, #A311 i
; 1 1 FIN DE PROGRAMA PRINCIPAL I 1
; 1 1 1 1 1 ~ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ~ l 1 I ~ l l l l ~ 1
;
LETREl: DB ~CFII,flABH,O87ll,RFFll DB IAlH,li8&!I,887H,üFFll LETRE2: DB úCFH,flA8II,BEFII, @ A N
DB OEFII, Mi, IFFH, K F H
;
: 1 1 RUTINA UUE GENERA UN FASO PARA LA ELEVACION DE LA PLATMOMA 11 :
PASOZF: WOV R3,16051i
ETld41: SETB Pl.4
ACALL RETARDOF CLR P1.4 ACALL RETARDOF
DIN2 R3,ETIfII RET
DB
; 111111111111111111111ll1~111lll
; 11 RUTINA QUE GEiiERA UN RETARDO PARA LA ELEVACIDN 11
RETARDOF: nov R~,IIFFH
ETl641: DJNZ R4,ETlbiI
;
i *I RUTlM QUE CALCULA EL DESPLAZANlE!4TO ASCENOENTE On. MOTOR X 11
RET
i
MAYORX: NOV R2,A
CLR C
CUBB A,RI NDV R#,flK!H RET
c
11 RUTINA QUE CALCULA EL DESPLAZAMIENTO DECRECIE~TE DEL HOTOR I 11
i
IIENORI: XCH A,RB
CLU c
CUBE A,R#
CUI P1.I
RET
i
I It RUTINA QUE CALCULA EL DESPUZAIIIENTO ASC!NfEiiTE DEL MOTOR I 11
i
HAYORY: MOV R2,A
CLR c
CUB8 A,R1
AVOCET CYSTFMC 8151 CROSS-ACSEI(BLER -
SOURCE FILE NAHE: PROY.FAS
VFRCION I . IM
15FF A982 MOV R1,OflAl
,, 8611 22 RET
1612 c9
1613 c3
8644 89 1615 C293 8617 22
46u) DI12 161A 14
1618 B4MFA
161E A3
161F 0291
O611 22
8612 7ü15
1614 D290
$616 DI36
1618 c291
RIA Di36 16iC üBF6 161E 22
161F DI29
1621 14
1622 BIIIFA
1625 A3
1626 D283
1628 22
wm
78151628 D282
162D Di36
$68 c282
1631 DI36 16J3 DüF6
6635 22
i '
; i f RUTINA QUE CALCULA EL DESPLAZAiiiENTO DECRECIENTE DEL MTOR Y 11
IENORY: XCll A,RI
CLR c
CLR P1.3
RET
sunn v i
i
i
IIUEVX: ACALL PACOX
; I I RUTINA auE MUEVE AL nuion x
DEC A
INC DPTR SET8 P i . l
RET
CJNE A,IBPOII,~UEVX
i
; 11 RUTINA QUE GENERA UN PACO EN EL MOTOR X #I
PACOX: iiüV R3,115H
ET11i8: SUB PI.#
ACALL RETAR CLR P i . 0 ACALL RETAR DJNZ R3,ETIIiIO RET
,
i
; 8 8 RUTINA QUE WEVE AL MOTOR I I i
;
WEVY: ACALL PASOY
DEC A
IK DPTR CETB P1.3
RET
CJWE A,i0ómi,HUEVY c
;
; iiRUT~M auE GENERA UN PASO EN EL MOTOR Y ii
PACOY: HOV R3,11lü511
ETi119: CETB P1.2 ACALl RETAR CLR P1.2 ACALL RETAR DIN2 R3,ET1619
RET
;
; 11 RUINA QUE QWERA Uii RETARDO PARA EL PASO DE LOS MfORES i
;
AVOCET CYCTERC 81151 CROSS-ASSEMILER - VERSION I. ldll
SOURCE FILE NAiiE: PROY.PAS
1636 C M 5
0638 7F62
063A 7DFF
d 6 X bDFE
ü63E DFFA
A64R 1MOS
8642 ::
0643 7E15
1645 C296 1647 D15A
1648 DEFC
1648 8295 164D DI67
164F 7E15
1651 D15A
1653 DEFC
1655 8295 1657 D296
1659 22
1651 7B15 165C D294
665E DI67
ow
c294 1662 DI67166) DBF6 166622
1667 c115
1660 7c31
16611 7061
166D DüFE 166F DCFA
1671 DHS
1673 22
1674 ClEl 1676 C18J 1678 C M 2
167A BW6A2
167D 7109
RETAR: PUSH ü05H
ETlfl37: ROV R5,IPiFH
ETl028: DJN2 A'J,ETliVB
DJNZ R7,ETlfl:
GLT
nov RI,IPR:II
por o m
; 11 RIITINA Q U E ilUEVE FL IlOiOR i 1 )
HUEVZ: MOV R6,1R151l
ETl035: ACALL PACO2 CLR P I A
DJNZ R6,ETIR35 CPL P1.5 ACALL RETARNI
tlOY 116,161511
DJWZ R6,ETIü36 CPL P1.5 SET8 P1.6 RET
ET11136: ACALL PASOZ
:
; 11 RUTINA QUE GENERA UN PAZ0 EN EL MOTOR 2 I I :
PASOZ: HOV R3,i@üSH
ET1121: CETR P1.4 ACALL RETARDO
CLR P1.1
ACAU RETARW DJNZ R3,ET1821
RET
;
; 1) RUTINA QUE GENERA UN RETARDO PARA EL PASO DEL NOTOR 2 11
RETARDO: PUSH 015H 4
HOY R4,1031H
ETi123: HOY R5,1166"
Fl1122: DJWZ R5,ETlüZZ DJNZ R4,ET1123 POP 115H
RET t
,
; 11 RUTINA QUE MUESTRA EN EL DISPLAY EN " E R O DE PERFORACIONES
; REALIZADAS 11
AWERF: PUSH ACC PUSH DI" PUSH DPL
lloV DPTR, ILETRE6 ACALL DESPLEGA
,
---
AVOCET SYSTEMS ~ # S I CROSS-ASCEHBLER - VERCIOII I. tan
SOURCE FILE NANE: ~ROY.PAC
067F ED
1681 54Fñ I682 C4
1683 91 i ñ 1685 F571
1887 ED
16BB 54F
668A gill
W F571 668E OD 168F ED
#690 541F
1692 B41A14
1695 EO
ñ96 2416 ffiüü FD
1699 1189 1698 M82 169D DUM
669F DIU
nov A,R'J
AN1 A,IOFRII
C U P A
ACALL ASIETE
nov
DI,Anov
A,RSnov DE,A AN1 A,IORFH ACALL ASIETE
INC R5 HOV A,R5 AHL A,10@FH
CJNE A, IMAH, ET I032
HOY A,& ADD A,ll#Gll
ET1632: A C A U DECPBUF
nov RS,A
POP DPL
POP DPH
POP ACC
RET
E6ii
2216A2 Be86AF8FBE LETREG: Dü IBCH,086H,#AFH,1801
MA6 FFFFFFFF DB IFFII,OFFH,OFFH,IIFM
i
;**
RUTINA QUE REClüE LAS COORDENAOAC DE LAC PERFORACIONES A REALIZAR**
1
16AA DJDB INTDAT: ACALl RECIDATO 66AC 84112 CJNE A,1#1iBl1,ET1624
1681 MOA13 ET1024: UNE A,l6lAH,ET1126
16u FIE4 ACALL DECIIL
16ü6 E556 miV A,DhTO
6688 84D512 CJNE A,llD511,ET1127
16Eü 8fED SJHP INTDAT
66BD 4462 ET1127: 1C ET1128
16CI E551 ET1628: ñ0V A,DATO 16C3 FI HOVX OIIPTR, A
16C4 A3 INC DPTR
w c 5 8119 S J W ET1625
16c7 DID1 ET1126: ACALL DICDEC
16c9 B406DE CJNE A,I#IIRI, INTDAT
16GC F13ü ACALL RECDIR 16CE BODA CJHP INTDAT
6 6 M 22 ET1625: RET
BAF 811F sinp aim
06BF 81EB sinp INTDAT
i
; # I RUTlWA 4UE CHECA SI LA TECLA PRESIONADA ES UII DIGIT0
**
PAGE 7
o
&DI E57E DIGOEC: IiOV A,TECLA
1606 04 DIV AB
AVOCET SYSTENS 8151 CROSS-ASSENBLER -
SOURCE FILE NME: PROY.PAS
VERSION I. IN!
16D7 22
ü6DB 757EFF
KDü E57E 16DD B4FF02
16EO 8lFB 06E2 22
16E3 Cfl83
&E5 C182 16E7 9116F7 M E A 11D0 16EC 757810
O W 757911 6 F 2 D682
16F4 WB3
6 F 6 22
RET i
;ti RUTINA QUE ESPERA MCTA QUE SE PRESIONE UNA TECLA I f
i
RECIDATO: MOV TECLA, lflrFll ETII30: NOV A,TEI.LA
CINE A,l6iFH,EiI#29 SJHP ET1130 ET1129: RET
i
; i t RUTINA QUE LIMPIA DIRL, OlRll Y DESPLIEGA EL MENSAJE ‘CoorX’ )I i
LIMPlAl: PUSH DFII PUSH DPL
MOY DPTR, llETRE3 ACALL DESILECI MOV DIRH,IOIRH MOV DIRL,Iü#IH POP DPL POP Di” RET
16F7 C6A3A3AF LETRE3: DB IC6H,#A3H,IAM,1AFH
KFB 89C1CIcO DB 089H,OC8H,OC1H,6C~
i
; i f RUTINA PUE LIHPIA DIRL, DlRH Y DESPLIEGA EL HENSAJE ‘CoorY’ SI
M F F
16FF C183 LlMPlA2: PUSH DPH
nri c182 PUSH DPL
1713 911713 HOY DPTR, lLETRE4 1718 7108 ACALL DESPLEGA 1718 757811 iiOV DIRH,I#IüH
171E Dl82 POP DPL fl711 D183 POP DPH
1112 22 RET
6713 cM3A3AF LETRE4: DB 1C6H,flA3H,#AM,OAFH 1717 BICICüCl DB WIH, úCOH,ICOH, 1COH
17m 757Bw nov DIRL,IOBIH
I .
1718 C183 071D C m 2 171F W 7 2 E 1722 71üQ
1724 DIM
1726 BYFFB 1729 M82
O728 W33
1721) 22
172E FF86AFAF 1732 A3AFFFFF
Iii RUTINA QUE DESPLIEGA EL MENSAJE ’ERROR’ CUANW EXISTA i t
i
ERROR: PUSH DPH PUSH DPL
ACALL DESPLECA
EiII3I: ACAU RECIDATO
UNE A,1O#FH,ETIIJI POP DPL
POP DPH RET
LETRES: DB CFH,#&H,OAFH,üAFH DB IA3H,IAFH,IFFH,IFTH
nov DPTR, ILETRES
AVOCET CVSTEnC 8051 CROSS-ASSEHOLER - VERSION I. IIH
SOURCE FILE NINE: PROV.PAS
1736 057172
(739 857171
173c E578
673E 54F1 1741 F5i8
1742 E570 1744 75Fll1 6747 84
1740 F5FI
1 7 M E578 174C 25FI ü74E F578
1750 F153 I752 22
6753 E579
E755 F162
11757 257E
1758 F579
1758 9111
675D F571 075F 7189
6761 22
1762 C4
1763 54FI
1765 22
nE6 75511 1769 E578
1760 75FIM
176E A4 1761: F551 1771 E579 1773 c4 6774 54üF
1776 75FllA 1779 A4 n 7 A 2551
177c F551 #77E E578
1784 SIIF
1782 651
17.94 F551
1788 22
IIM
i
;in RUTINA QUE DESPLIEGA V ALiiACEtiA LA TECLA QUE SE PRESIONO i
RECD~R: nov DZ,DI b0V D1,Dú HOY A,DIRII AN1 A,IIFBH
nov DIRH,A nov A,DIRI.
nov 8 , t i m
DIV AB NOV ü,A HOY A,DIRtI
ADD A,B
ACALL IIEX21DIG RET
nov DIRH,~
HEXZIDIG:
nov
A,DIRL ACALL RECORREADD A,TECLA
NOW DIRL,A A C A U M E T E
NOY M,A
ACALL DECPBUF RET
RECORRE: CYAP A
rUn A,tüFdH RET
i
; i r RUTINA QUE COnülERTE EL DATO IWTRODUCIO A HEXADECINAL if
:
DECIHAL: HOV DAT0,IIflIH HOV A,DIRH M V 8,116411
M V DATO,A
CYAP A AN1 A,liBFH NOV ü,túüAH
IWL AB ADD A,DATO HOY DATO,A HOY A,DIRL A m A,IIüFH ADD A,DATO MIY DAT0,A RET
END
nu, AB
nov A,DIRL
AVOCET CYSTEHC 8151 CROCS-ACCE1(BLER -
SOURCE FILE NAHE: FkOY.PAC
- - - - sYnBoL TABLE - - - -
1GFF 1GFF ACC IüEO ASIETE 1410
8 IIFO COHIENZA 1518 M 1171 DI 1871 02 1172
07 1177 DATO 1151
DATO1 1511
DECPBUF 13B9 DECPLEGA 13D9 DIGDEC 16DI
DlRH 61178
DlRL 1079
DPH 1483
DPL 1182
ERROR 1718 DEcinAL 1766
ETlü8l ET I 112 ET1003 ET I014
ET1105 ET1116 ET I 117 ET1118 ET1109 ETI0IO ET1011 ET1012 ET1013 ET1014 ET1615 ET1116 ET1117 ET1118 ET1119 ET1021 ET1821 1523 O528 8536 1538 1548 1550 0564 156A 1591. 157% 157A 1576 0578 0581 1588 11587 0589 0614 1628 163c m c
VERSION
1.m
PAGE I1
ETIP2% ET11123 ET1024 €TI825
ET I826
ET I827 ETlüZ8 ET I029 ET1030 ETlAJl ET I832
ET1033 ET I835 ET1036 ET1137 ET I M 8 ET1639 ET1048 ET1041 ET1042 ETIP43 RG6D 066B 8681 06M 66C7 168D 16C1 16E2 16DB 1724 8699 8514 11647 8651 163A R557 05AD 85EI 15ED ü58F 8555 c .
ET1044 O588
ET1145 15B8 ET1146 1598 ET1147 15A1
ET1148 15A7 HEXZIDIC 1753 INlClAX 1517
INICIAI 1511 INTDAT 16AA
LETREI 15CE LETREZ 05Dü
LETRE3 ffiF7 LETRE4 1713 LETRE5 672E LETRÉG &A2 LETRE7 15C6
LlHPlAl ü6E3
LllPlA2 16FF
MYORX 15FI
MYORY 15FC
HENORX 15F6
iiENORY 1662
HUEVI 6618
WVV 161F
MlNZ 1643
"PERF 0674
PI 1091
PASOX 1612 PACOY 6629 PASO2 165A
PACOZF 15DE RECDIR 0736 RECIDATO 06Ds
IV. DESCRIPCIÓN
DEL
SOFIWARE
CONTENIDO EN
LA
PC.
L a ultima parte del sistema es el software que se encuentra en la PC.
El objetivo principal de este software
es
comunicarse con el kit del 8031 para controlar la entrada de datos hacia el perforador, y la interfazcon
el usuario para facilitar laentrada de
los
datos.El sistema consta básicamente de ¿os partes:
a)
Interfazcon
80?1b)
interfaz con el usuarioDescripción de l a interfaz con el 803 1.
Una
vez
quese
tienen
los
datos, laestructura
de datosadecuada y con la información en el formato que la
requiere el 8031. Se envíanlos datos por medio del puerto paralelo de la PC al puerto paralelo del Kit del 803 1.
El funcionamiento de larutina de envío es idéntico ai de las rutinas para comunicación de FC conimpresoras, es
,
decirse
maneja. un protocolo de handshake mediante señales de strobe,busy y acknowledge.La. rutina espera a que el dispositivo no
se
encuentre ocupado para enviar un dato, y despuis esperarecibir la señal de acnowledge l a mal indica que el dato ha sidoEl
tamaño de los datos para cada coordenada es de2
bytes pero el envío es de byte por byte, enviindose priemro el byte menos significativo y posteriormente el más significativo.
En cada rutina de envío se manda la coordenada X y la coordenada
Y .
Los
datos que se envían al kit requieren encontrarse enun formato especiald. Este formato consiste en expresar cada perforación mediante coordenadas
X,
Y
relativas.Además estas coordenadas deben expresarse ennúmero de pasos de motor. Paralograr
lo
interior se realizanlas siguientes actividades:Al leer
los
datos del archivo se almacenan en unaestructura de datos de tipo stream de caracter temporal..
los
datos del archivo vienen ya en coordenadas>.,Y
absolutas y en alguna de las siguientes unidades: milimetro s,centimetr os
o
pulgadas.El siguiente paso consiste en convertir las unidades de las coordenadas enpasos de
motor.
Esto se realiza deacuerdo a la unidad original de los datos.
Posteriormente se copianlos datos de la estructura de datos inicial
a
otra estructura de datos de tipo stream, la cual contiene las coordenadas relativa:., es decir., que en el proceso de copia se convierten las coordenadasDescripción d e la
interfaz
con el usuario. 1F'a.rainicia.r
la.
erttraita de datu.;, der.de la PC elusuario debe llamar al programa Fi1.cPosteriormente aparecen en la pantalla dos ventana::.
L a
prirriera
ventana tiene el nombre de FILITRON, conel cual hemos bautizado a este sisterria.
L a segunda ventana contiene el menú principal, con las
siguientes opciones Archivo, Teclado, Transmisión,
Ayuda
y
Salir.En principio se dehe dar la opción que elusuario desee, ya se que tenga.los datos de las coordenadas
en
Archivo6 los quieraindicar por medio Teclado.
L a secuencia de opciones que debe seguir elusuario si ya tiene
el
archivo es :Archivo: Cuando
se
selecciona esta opción aparece una ventana en la czial se pide e1 nombre del archivo quecontiene las coordenadas.una
vez
que elusuario h aproporcionado
este
nombre. Se pide que seleccione alpina 4 de las tres unidades disponibles esta selección l ehace de acuerdo a!a siguiente tabla.:
opci6n elegida unidades
11 centimetros
1 millmetr
o
s? pulgadas
Al dar este dato. El programa regresa al menu principal.
Teclado: El usi-mio debe editar
en
esta ventana lascc1ordenada.s pa.rra
la.
rierfnra.ci6n. La.5 tedas d e edicihnsun.
insert: conmuta los modos d e inserción y sobreesctitura.
delete: Gorra el car6der que esta encima del cursor. backspace: borra el carkter a la izquierda del
cursctr.
end: coloca el Lcursor al final del campo. home: coloca el cixsür al inicio del campo.
tab: salta al campo siguiente shift-tab: salta al campo anterior.
page up: salta alapagina de captura amteriur. page down: salta a l a pagtna de c&tura siguiente.
esc: termina la captura.
E: importante aclarar que las coordenas capturadas deben ser absolu?as.
IJt-ta-vez que se han proporciona.do los dalos de las
cüurdenada5.. ya :ea por arctrdo o pur teclado. Nos ubicamüs nuevamente en el men<i prinqal.
L a opción a elegtr en este momento es Trartmiidri
Transmisión:
En
esta. ü p d n se pregun?a. elnumero de?a.ttIilla.z que se desem perforar., ya que e l usuario puede
desear que
se
perforenmás
de ulna tablilla cot-t 1a.s misttiascüordenadaj. For
lo
tanto el usuario debe dar este dato. Una vez que el sistema y a sabe cuantas tablillas debep erfür ar .
A p
a.r e ce un letrero que dice pr e sione cualquiertecla p a r a corttini.1a.r. Finalmente aparece unletrero que
Aparece otro letrero
el
cual indica que se debe poner lasiguiente tablilla y una vez que la.ta.blilla esta lista se debe
oprirttir Icxialquier tecla para transrnitir los datüs de la
siwiertte
.-
tablilla. Esta Última a c c h debe repetirse hastaterminar de perforar todas l a . ~ tablillas. Cuando se
terminan el programa regresa al menii principal.
Ayuda: Si se tiene alguna duda del funcionamiento del
sistema se puede seleccionar esta opción y aparecerd una ventana que contiene 1n.s indicaciones #3. seguir.
Salir:
Al
seleccionar esta op"órise
regresa al sistemaoper a.tim.
A continuacion se propor"onauna lista de los archicros de software necesarios para implantar el sistema, junto con una breve explicación de
las
rutinas que contienen.Este &digo se implantü en lenguaje C
com3to.c Contiene las rutinas de comunicacihn con
el
puertci par alelo.Incluye:
hoyos-def: definiciones de la estructura de
datos para las coordenada.5.
comqto.cie: constantes para la rutina de cümunicaciún.
conv - kit.c Contiene lar rutinas de cnnversihn de coordenadas. Incluye:
1ectura.c Contiene las rutinas para interpretar el
fürmato del archivo que deja Orcad y leerlo enla estruciura de dahs en memoria.
Se espera que
este
archivo tengaen
unfuturo
rutinas para l a lectura de diferentesfürmatos de archivos de descripción de perforaciones. Inciuye.
stream-def: definicibn de la estructura de
datos stream.
hoy os. d ef.
sir e am. c Contiene el código p a r a la impiaritacih del
TDA,stream. Incluye: sire am. d e f
hoyos.def
Contiene
el
manejador de tnenús del sistemay las invücaciones a las funciones
principales del sistema. Realiz a glübalmente
la
interfaz de usuario. Incluye:scrni0.h: archivo de encabezadci para las
rutinas básicas de manejü de parhlla. iouti1.h: archivo de encabezado p a r a las
rutinas basicas de rnanejo de entradu(sa1ida. str1st.h: archivü de encabezado para las rutinas basicas de manejü
del
tdñ lista de cadenas.smenu.h archim de encabeza-do para las
rutinas basicas de manejü de meriús.
edici6n.h: archivo de encahezadü para las rutinas basicas de manejo de captura.
pagh: archivo de encabezado parallas
rutinas basicas de triarteiü de pa@-tas de
c.apkir a. str eam.def hoy o s. def
ioutil. c
P
0PUP.C
snnio.
c
smenu. c
edicion. c
Contiene la implaritacilón de las rutinas
iouti1.h
b&i-.- _. ~ d , r de eritra.da y salida. Incluye.
Contiene la implantacihn de
las
rutinasb6sica; de manejo de ventanas. Incluye.
iouti1.h s crnio . h
Contiene
la.
implantacih de las rutinasioutil. h 5crnio.h
ha-'-. iiLas d e manejo de pantalla. Incluye
Contiene la implantación de las rutinas
básicas de manejo de mer&. Incluye.
iouti1.h scrni0.h 5rnenu.h
Contiene la implantación de
las
rutinas básicas de manejo de capturas. incluye.iouti1.h
scrni0.h
edicion.h
Chitime la implantaciíiri de las rutinas
basicas de manejo de paana.s
.-
de captura. Incluye :iouti1.h
scrnio . h
str1st.c Contiene la implantación de las rutinas basilcas de manejo del tda lista de cadena
1nc:liiye :
str1rt.h
A continuación
se
muestra ellistado completo de las/c m g t o - c t e i
Censtantes p a r a l a cornunicacion can e l pciei.to par.aie!n + ; ~
# d e f i n e LFT1 c i
! #define LPT2 1
¡ #dkfine ENVIa-FTO C)
i # d e f i n e INI-PTD t
!
,
t y p e d e f S t t - ' . t C t
float x, y, d r i l l ;
3 hoyo;
.
,
/*********R..**:.***************.****.**~**~..~.i. *-4.i.**.*., ******.E.*
,
.- - .
pa$.?, 3 ; p a q u e t e de mnr,~.jo d r c&
***************************~***.*:*.CtX+.~-**** L . * * I C
~
, ,
í
I..**
...
!* I x. i.
Interfaz p a r a las rutinas de men#
. . .
typedE-f snum :simple, p u l l d o w n , submenu; menutype;
I
i n t membei-str-1st (chat- *s, s t r l i s t 5 t r 1 1 s t r l i s t * m l )
/*****I+*+t********X***************************************************~** I
****+
.*
...D e t z t m i i i a 51. una c a d e n a p e t - t e n e c e u no a l i s t a
i n t j:
cjtrelew I?;
e. data.=s;
j=l;
*m 1 =5 t r 1 .- :. h n
.
f i rs t ;w h i l e í * m l ! = N U L L )
i f < C ~ R B t -s I. ein i i +:I 1 .'. ...-.'..dn
.
e 1 em. e ? : t-.etur;n j ;j i; -i +*,n ). :j = i * m i .-
.
ne:: t ;3
r e t CI 1.1'1 ::> ;
i 3
l i l t d & l s . t i l S t < ; n t p r s%t*l't5t s t V 1 )
. . .
. . . E l i m i n a una c a d e n a de l a p o s i c i " n e s p e c i f i c a d a d e n t r o de l a l i s t a
.?
s t r l i 5 t t l ? t l . 2 ; in ,C ,j :
i.f ( a t i 1 = = r . ~ u ~ ~ j !-e~-~gp-:-, p;
e l s e .:
i f ( (p:i.O) Z& (p:;=~trl->hn.numelernl j
i f (st t-1->hn. n&nelem==l)
.:
d e l s t r e l e m i s t r l - : h n . f i r ~ . t - > d n . e l e m ) ; f r e e í í c h a r * ) s t i 1 -?hn I f i r5 t ? ;
st I* 1 -?hn
.
.f i rs t=NULL ; stt-l-:-hn. l a s t = N U L L ; 3else
i f ( p = = i )
t 1 =s t t- 1 -:?hn. f i rst -)dn. ne:.: t ;
d e 1 e t re1 em ( st r 1 ->hn. f i t-st.-:.:-dn. e 1 em) ;
f r-ee i i c h a r.* > s t r- 1 ->hn
.
f i PS t j ;t; p.. :L .- ". .... hn. f i rst=.t 1; 3
e l s e
i f íp==si:rl.-
i n t m e m b e t * s t r l a t ( c h a r * e , 5 t r l i s t stt.1, s t r i i s t * m l )
. . .
*****
****-c.’* ***..>c*.I.+.*.C* f**.**CI**+***************~***************************./Dr+:?imiria S I uria c a d e n a p e r t e n e c e o n o a l i s t a
r
i n t j ;
streíem e ;
e . d a t a = s ;
j = l ;
*ml=stt-l->hn. f i r s t ; w h i l e ( * m l ! = N U L L )
.:
i f <, 1 ní, ri .t :-el. em í ! i m 1 !.
J * .~ ;
d n . e l e r n , e Y rciturn j :
: .*,n i 1 = *,TI i ; - .::4n. ne?: t ;
ret u t’n O j i
I
i n t & 3 ~ ; i $ ; . ~ . ~ ~ p, s t i - l i s t -L-. =,$,I 1 )
/***.*II*Y****+*****X**~***********************.****************************
. . .
Eliinina una c a d e n a d e l a p o 5 i c i ” n e s p e c i f i c a d a d e n t r o d e l a l i s t a-i
d e 1 s t re 1 em í s t r 1
-
> hn.
f i rs t -? dn.
e 1 em ) ;free í f c h a r * : 5 t e - 1 -.:.hn I f i rs t ; s t r l - . * . h n . f i r s t = N U L L ;
st r 1 -;.hn. 1 as t =NULL;
3 @ i S E
‘i
i f ( p = = l :
t 1 =s t r 1
-
::.hn.
f i rs t -*.dn. ne>: t ;d e l s t r e l e m i s t r l - > h n . f i r s t - : > d n . e l e m ) ; f í r e e í ( c h a r * i s t r l - > . h n . f i r s t : ;
sti.-:.-:>hn. fir.st=tl;
fnr-:j=2, t l = s t r l - > h n . f i t - á t : js:p: :.t.t, tl=tl--::.dn.nei:t:; d e 15 t re lem I t, 1 --::.dn
.
n e :x t -+drb. e 1 em; jf ree í i char-* ) t 1 -.:,dn
.
ne :.: t i ; t!.-:,drt. next=NULL;5 t r 1 - :> h n
.
1 a 5 t = t 1 ;. - . . . . ~ ,.--. .
A c ~ ~ q i 3 uric1 cacle .:a si f i n a l d e una l i s t a d e c a d e n a s
*******.s*******+s,+s*******************************************************,'
c
,
. - , s t r 1 is t t 1 ;
1
strelem e;i f ( + s t t - 1 = = w L L ) 1 1
ma.:len,e. l e n i ;
r-, t I T , 5 5 : t. 1. !. = h a , ' a ; i n t d l . , i n t k ~ y , i n t p , á t P 1 i s t ; *st,-1)
/ * * * * * , + * * * * * * * * * . ~ - * * * * * * * * * * * * * ~ * . ~ * * * * * . * S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . ~
I n s e r t a una c a d e n a y una l l a v e en i a l 1 5 t ñ d e c a d e n a s en una p o s i t i"n e s p e c i f i c a d a
...
s t t - 1 i s t t 1 , t 12:
i n : j ;
s t ~ e l e m e;
i f ( p < l ) r e t u r n O;
i f í*s t r l==NULL)
L
i f ( ! m a k e s t r l s t ( l t l ) ) r e t u r n O;
i f i ! a p p e n d s t r . l s t i s , d l k e y , & t l ) ) r e t u r n O; *st r i=t i ;
>
else
i f i p:::' í *st r-1) ->hn
.
nume .:i f í ! a p p e n d s t r l s t ( i , d 3
else
f
em i
, k e y , s t r I ) > r e t u r n O;
128305
a = m a k e s t r e l e m ( s , 3 l , k e y ) ; i f í ! m a k e s t r n o d e ( e , & t l ) ) ;
i * s t r 1 ) -> h n
.
ma;.: 1 en=MAX ( i f.5.t i" 1 i .-I> hr,.
ma;.: 1 e n , e. 1 en > ;i f ( p = = l >
.t 1--, dn
.
- n e x t = (*st r 1 > -::: h n.
f i ;-.st ;i *5t r 1 ) -::*hn. f i rst=t 1 ;
- .
b
/ X f i 1: t i 8 i t t It X X 1; '!
F-0PuP.C !
H w r r u i e n t a e para crear ventanas popup
' I t ~ t 1 C * l t 8 i t 8 ~ & l ( i I i & t 8 S 8 t t t 8 t S & L ~ 8 t t t 8 8 8 t 8 8 8 t 8 8 k 8 t 8 8 8 8 L 8 8 I 8 I ; t l I $ 8 8 t 8 8 / '
lud. (rtdáefi. h>
nclude <alloc.h>
hc lude *ser ni o. h"
n c l ude "i out i 1. h I'
efine MIN-W-WT 3
efine HIN-W-HT 3 ef ine W X - W - W T 80 efine MAX-W-HT 25 efine CENTER-W -1 efino CilRñENT-bi -2
tr bare-window=NüLL; tr active-window=NULL;
p t r teripi
f <brre,wlndow-NUU) r e t u r n O;
81s. if (activo-window ! - base-window)
{
temp-acti ve-window;
selectwindow (base-wi ndow) ;
p u t s t r a t r a b s ( 0 , 24, '"I
,
base-wi ndow- : . w n i j a t r , €30) :se1 e c t w i ndow (temp) ;
3
e l s e putstratrabsCO, 24, "I'
,
base-window-iwndatr, 861 ;e t u r n 1 ;
tStlll1 Funciones que el u s u a r i o puede i n v o c a r t:t1lttl21ltl1SXtl$l1~~~8/
.t
8 t t ~ t X l 8 t t L : 8 8 ~ ~ ~ t l ~ t ~ : t t ~ t t 8 l t 8 t ~ ~ l 8 8 t t t 8 i 8 t t $ ~ t t : l t t 8 t ~ l l $ : t 8 t : k ~ t l l t 8
& s i g n a v a l o r e s i n i c i a l e s a l a s v a r i a b l e s i n t e r n a s
E s t a f u n c i o n e s crean una ventana por omisi+?, "Base windaw", que r w p r o o o n t a t o d a l a p a n t a l l a .
Debe i n v o c a r s e antes d e c u a l q u i e r o t r a de e s t e paquete
i n i t w i :id¿cis <
.
-I 6 :: t t t t t L : i L : f t % 8 t t t t ~ t t t t l t * * t t i t X t * S l t t t t t ~ L : f ~ L : L : 8 t t t L : t i 8 ~ t ~ t i ~ $ 8 t t ~ t t $ t ~ ~ k , '
ong vp;
fp = i e t s c r p t r ( - l ) ;
f (!make_window-node(kba%e-window) 1 r e t u r r ? O;
sase-wi ndow-.-
base-wi ndow-:jyh=27;
; a s ~ . . . w i ~ I ~ o < H - 'I:<* =Q7:
)ase-window-;.%save =where:cabsi) ;
) r s e - w i ndow- )ysave r w h s w a b s ( ) ;
jtrcpy <base-window->nar, UBi.%O Window") i
/.--ni ndow->wtype -psuodo;
tare-window-iwndatr ~ % ~ r e ~ L b a s e ~ w i n d o w - > y % a v e I tbase-windou- > x r a v e J . a t t r ;
irmm-wi n d o w - >f 1 d a t r
-
1 12 1!are-window->brdatr =baSa_wi ndow->wndatr ; k s e - w i n d o w - X i t a t r =1121
lase-wi ndow- >prmptatr = 15; lase-wi ndow->box t y p e =O;
i t k t o p =base-window;
i c t i ve-window *base-window;
If (vp~aOxb66üL)
, a 5 e _ w : r e l o v l ~ - . : y x . i 2 --I ;
def c o l o r 5 = nonoco¡ws; e r r c o l o r s = i n v c o l o r s ; w r r i c o l o r s = i n v c d o r s ; msgcalors = i n v c o l o r s ;
' e t u r n 1;
it p0pupwlridowii<i: x 5 i i i t y j i r : t w i 7 ink. ¡it, L L t r 3n, Z I - . ~ ~ biindutwti.pi .NL*
: t l 8 i t ~ t ~ t t t t ~ t 8 ~ 8 8 ~ t 1 ~ t 1 t l 8 t ~ t t t ~ 1 ~ t ~ L : 8 ~ t $ ~ t L 1 ~ ~ t l ~ t t ~ t $ t t t X ~ : l 1 l l S t ~ t ~ t ~
Crea una vantandi x columna y r r n p l d n i wd aricho ht rituri.i; In nombre w t t i p o , Lcp a t r i b u t o s de color twnd a p u n t a d w 51 la verttarld creada
v a l o r e s e s p e c i a l e s p a r a l o s argumentos " - I r.rnc.-* 1 , .m,e.c%.e= n.. 1 a<,-..--+*,.
,.
a .ctu.l x
y -2 usa l a coordenada a c t u a l y
8 8 t 8 8 8 8 8 & l & 8 8 8 8 8 8 8 8 8 S t t t S * S t t t t t * S t t t l t r ~ & 8 8 8 l & ~ 8 8 8 8 8 8 8 8 8 8 & ~ 8 8 8 8 8 8 8 8 8 8 8 ~
wtr w i
i n t 1 , >(wow, y w o w l t e x e l p t r t p ;
t e x e l t i
i f ( ! p u s h - w i n d o w - n o d e ( & w ) ) r e t u r n O;
i f (wd:MIN-W-WT) wd=MIN-W-WT;
i f ( h t (MIN-W-HT 1 h t = M I N - W - H T 3 i f (wd>MAX-W-WT) wd=MAX-W-WTI
i f (ht>PIAX-W-HT) ht=MAX-W-HT;
W->XW = w d i
w->yh l h t i
if (x==CENTER-W) x = (MAX-W-WT-wd) 1 2 ;
e i s s i f (x==CUkWENT-Wi
.:
1
i f ( w t != v t p t i : < = w h e r e x a b s ! ! ; Pise ::=where>: (!;
i f ( w t = = v t p t ) %+=act i v e - w i n d o w - > x u l + l i
i f (v==CENTER-W) y=(MfAX-bJ-HT-ht) 12;
c l 5 e 1 f (v-=CURRENT_bi!
1 f (wt ! = v t p t J y s w h e r e y a b s < ) ; oi 5e y = w h c r e y ( ) ;
3
i f ( w t = = v t p t ) y+=act i v e - w i n d o w - > y u l +I ;
i f ( : : * : O ) x=O;
i f <y,:ci;, ,y=<!;
l f ( w t ' = v t p t l
i:
i f í(x+Wd-1)>79) x e - w d i
i i ííy+ht-i) >24) y m 2 S - h t i >
i f ( W t - v t p t )
C
w - h a r r = x l
i f t w d > w - > r i r r i w->xu1 = w - i x a r r ; el se H- > x u l = w - . > x a r r - w d + l ; i f <ht*2>=y)
<
w - > a r r o w b u f f COI. a t t r = c p - > . ~ c d a t . ? r IZB:
w - > a r r o w b u f f t ü 3 . c h = O x l e i
w - > a r r o w b u f f t i 1 . a t t r = c p - > w n d a t r c i 2 6 ; w->rrroubuff t l 3 . c h = O x b 3 ;
w - > y u l = y+31 w - > y a r r = y+1;
3.
el 5e
c
w - > a r r o w b u f f C O I . a t t r = c p - 'wndatrcl25;
w - ) a r r o w l u f f COI. ch K k b 3 ;
w - s a r r o > , ú u f f C 1 3 . a t t r = c p - i w r : & k r +I-;;
w.- ? a r r - c w b L i f f i i 2. ct: 'w;: I f ;
w-; y u l =w- > y a r r - h t ;
3 :
L.,.. :,.ar;- y - : ;
>
else C w - > x u l = x ; w-;, ,,.
#*-\ld*.,m~*Ll+ 9
1 I
I
. .-.
it r mvwÍ ndow (Wt r Iw>
r88t888t8$8~$8~8t)Y8~~~888P*IPt8Lt8Mt~$t88I8t$88tl:$~l:Il*l8~888~88St8Lt8t&8/
w t r q, prevwi
. n t b w n p a p p d , n l , m2, nU, m41
f ttw==NULL) r e t u r n O; )revw= (&h)->prev; ~eenpopped=ü;
jo<.
i t 8 8 8 8 ~ ~ M 8 8 O l $ 8 t 8 ~ ~ f 8 t t t t * S t t & t 8 M t 8 8 8 t 8 l 8 8 l 8 8 8 8 8 8 8 8 ~ l I ~ 8 8 8 ~ 8 8 8 8 l ~ 8 l
Elimíma una vonkana y todhr i*r que se mtwmtran oncima di o l l a
i f ( s t k t o p - > w t y p r - = v t p t ) s w a p - ~ r r ~ ~ ( s t k t o p ) ; ~wapvra~n<otktiop, s t k t o p - > p i c p t r 1 t
q=st k t o p ;
i f ( q = * p r e v w ) beenpopped=l; s t k t o p s s t ktop- >under ;
l f ( q = = s w )
d i spose-wi ndow-node ( & q ) ; tceai,;
e l s e d i spose-window-nods . ? . J J ; > W h i l e ( 1 ) :
s t k top- ,over=NULL;
i f (brrnpopped I w l r c twr ndow ( s t k t o p ) ; el se sei ectwr ndow (pr evw) ;
r e t u r n 1 ;
. .~
f (w==NULL) r e t u r n 0 ;
tcti v e - w i n d o w - ~ x s a v e - w h e r e x O ; icti ve-window->yaave=wherey ( ) ;
iul=w->xul ; tul =w->yul1
:w=w->x w ; /h-;w->yh;
w i n d o w ( x u l + i , y U l + l , xul+xw-2, yul+yh-2) i
?1 se
i f (yh==3)
C
u i n d o w ( x u l + l . vul+l. uul+xw-2, yul+yh-1) I
2 1 se
I
_ i
i
w i n d o w í x u l , y u l , xul+xw-1, y u l + y h ) i 3
: t e x t c o l o r (u->wndatr i ;
~ c t o x y ( w - h s a v e , w - i y s a v e ) ; icti ve-wi ndowrw;
- e t u r n I :
n t b t , u , y ;
f ( a i <.tt r=&;
el yc at.tr-=w->brdatr- j
f ibaxt.ype) bt=boxtypel
# s e bt.=w->boxtypo$
f ( t a l t ; i t . t r = t a ;
el r e ?.it !~ r,:::iw >t i t a t r i
o x ( w - : : . . u:, ,.r-'xy.~i, E ~ ' - ~ ~ ~ , w->yh, b t , a t t r ) ;
enters; I- . x u i , w . - . . , , ~ l , w->xul+w->xw-l, w->yul, w->name, t a t t r j i
wprr ci
q= i w p ' , r malloctrizeuf (window-packet));
i f tq=:::NULLi r e t u r n O ?
t w - 4 :
q.- ;. 1 ~I : t - = : l . L i - :
q-:PvL"-=! I L L :
return 1 .
. .
or < i = C i ; ( í < = l ) ; i + + )
t=&mcr een Ew->yarr+L 3 t w - > w u r 3 ; tmp98t ;
S t : = w - - : a r r o w b u f f t i 3; w- >arrowbuf f t i I-tmp;
l i d uwapvramíwptr w, t e x e l p t r b )
: t t t : ~ t C l t k t r ~ t t t X \ 8 t ~ : : t 8 k t t 8 8 ~ t ~ k t ~ t ~ 8 ~ ~ 8 8 8 8 ~ 8 8 t ~ 8 8 8 : 8 8 t t ~ $ 8 8 8 8 8 8 8 8 8 8 1
1 n : e r c : m r b i a la imagen de v i d e o de la ventana con a1 imagen d e t r a s .
da l a ventana
: 8 8 t ~ t ~ t t ~ 8 S t t t 8 t 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 k 8 8 8 8 8 8 8 8 8 ~ ~ 8 8 8 8 8 ~ 8 8 8 8 ~ 8 8 8 8 8 ~ ~ 8 8 8 8 8 8 8 8 8 8 /
:exe'.ptr t p ;
'kit. : .
.I.
:í-. . ?; : : s t a r t . y c i t a r t ;.f ( ! ~ - > w t y p e ! = psuedoj
.
..
. I
. 2 ..: ,
..
-,..
>:?=i.J-% L i l + w - > x w-1: .. ~ . = . J , . , . d.
,
+.; . v , . k - i ;.: 1: :~-'..>-' . . _ : I * y s t w t : : w - i y u l ;
i f (Iw-:.boxtype)
c . . xs.:art.++; ys:a-t.++; y2-3 .. - , .. ..&
,
:.
f u r í y = ; y s t a r t ; y . = , , - ; y t t J
c
for í x : = x s t a r t
,
t p = & < r c r n n C y l t x r t a r t 3 : x < =xZ; x++) ctp*Phtp ;
t'tp+i-=8b;
8tr ++et p2 : >
3 i
:aid c : i q i i i.5t imencidesc .*.sin) ;
v o i d c i s p b a i i i n t a t t r , menudesc *sm!;
vcjid n:eni..s:.ze:int nc, i n t n r , i n t h i e . s t r l i s t sl, c h a r *t, senudesc *sm, i n t *wd);
- + - . t i ; 3 v.-.^.; L.ir. - . ,,~m;:hat--(menctclesc *sir' ; ' C ,
!? t c t i r
s t a t i i s t a t i c s t a t i c s t a t i c s t a t i c s t a t i c s t a t i c s t a t i c
s t a t i c stat:[ .- , a i i c r;.tatic s t a t i c
5: *
<.,!. .. l,.i..i..- Cmeniide~,: * 5 m ) :
ir! :.r coi;; % i i i t colnci, menudesc *.smi i
i n t b a r l m x i i n t i , menudesc +sin) ;
i n t b a r l o c y í i n t i , menudesc *sm);
v ~ ~ i d a d j s i z r ( m e n u d e s c *sm, i n t nc, i n t n r ) ; v c 8 i d a d j i ( m r n u d e s c *sm, i n t *i);
v o i d homebarimenudesc *sm); v o i d endbarinenud.esc +sm) ; v o i d pgupbar(menudesc * s m ) ; v c 8 i d pydnbar (menudesc +sm) ; ' v c : i G upbat- Inenudesc *sin> ; ',+!::. ;ci i.c?~r!barimeniidess *+m) ;