'********************************************************* '*****CRONO_PC AMB PICAXE-08M***************************** '*****AUTOR:JOAN PELLICER ******************************** '*****DATA:121108***************************************** '*****VERSIÓ:9.0****************************************** '*****ARXIU:CRONO_1.BAS********************************* '********************************************************* 'DEFINICIÓ DELS PINS QUE SERAN ENTRADA I SORTIDA********** dirs=%000010101 'els pins: pin1 i pin3 seran entrades. 'els pins: pin0(sempre és sortida),pin2 i pin4 seran sortides. 'calibfreq -1 'per acabar d'ajustar la freqüència de comptatge. Vigilar que valors 'superiors als -2 espatlla la comunicació sèrie. '*****Per calibar-lo s'activa el sensor i es comprova que a fons d'escala, 'és a dir a 65000 ms, el LED vermell s'apagi. La mesura ha de coincidir 'amb la del vostre cronòmetre manual de referència. 'ASSIGNA LES ENTRADES************************************* symbol detector=pin1 'el detector de sortida i arribada pin1=0(act). 'ASSIGNA LES SORTIDES************************************* symbol cronometrant=2 'encen LED VERMELL (sortida pin2) quan funciona el crono. symbol ficrono=4 'encen LED VERD (sortida pin4) a l'arribada del robot. 'ASSIGNA REGISTRES**************************************** symbol crono1=w2 'registre 16 bits (b4=8bits baixos) (b5=8 bits alts). 'PROGRAMA PRINCIPAL*************************************** inici: pause 10 'espera 0,01 segons. high ficrono 'el LED VERD indica que la cursa pot començar. if detector=1 and bit0=0 then cronometra 's'activa el detector i salta a cronometra. goto inici cronometra: gosub enviainici 'envia un canvi de línia pel port serie per iniciar el crono del pc. high cronometrant 'activa el LED VERMELL. El crono funciona. low ficrono 'apaga LED VERD. bit0=1 'bit indicador que s'ha iniciat el contatge de temps(ms). let crono1=0 inici1:pause 22 'espera 22ms+3ms=25ms que representa el temps que tarda a fer el bucle. let crono1 =crono1+25 'incremetra el crono en 20ms per cada bucle realitzat. if crono1>=65000 or detector=1 and crono1>=4000 then finalcrono'fins que no hagi comptat fins a 65000ms. goto inici1 'o el detector detecti robot passats 4 segons.Així el robot té temps de 'de passar sense tornar a activar el detector i aturar el comptatge. finalcrono: gosub enviacrono pause 4000 'retard per donar temps al robot de sortir de sobre el detector. bit0=0 goto inici 'SUBRUTINA1********************************************** enviacrono: 'debug w2 'temps mesurat en milisegons. bintoascii crono1,b10,b9,b8,b7,b6 'converteix de binari a ascii la paraula w2 (16bits) en: serout 0,n2400,(b10) 'desenes de milers serout 0,n2400,(b9) 'milers serout 0,n2400,(b8) 'centenes serout 0,n2400,(b7) 'desenes serout 0,n2400,(b6) 'unitats. 'serout 0,n2400,("ms") 'mil·lisegons. high ficrono 'encen el LED VERD. low cronometrant 'apaga el LED VERMELL. pause 500 'espera 0,5segons. high cronometrant pause 500 low ficrono 'apaga el LED VERD. low cronometrant 'apaga el LED VERMELL. return 'SUBRUTINA2******************************************** enviainici: serout 0,N2400,("i") 'indica a l'ordinador que comenci la simulació del crono. return 'FI PROGRAMA****************************************** end