jueves, 17 de diciembre de 2009

Código en CCS del Tp Final.

#include "PCronos.h"

int contador = 0;
long time[6];
long int cuenta = 0;

#int_TIMER0
void TIMER0_isr()
{
set_timer0(136);
cuenta++;
/* printf("T"); */
}

#int_EXT
void EXT_isr()
{
if (contador<= 6) {
time[contador] = cuenta;
}
contador++;
printf("E");
}


void main()
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8);
set_timer0(136);
enable_interrupts(INT_EXT);
enable_interrupts(INT_TIMER0);

set_tris_a(0x10);
set_tris_b(0x01);
printf("Cronometro para PC \n\r");
contador = 0;
while (1){

if (contador == 0) {

printf("Presione S para comenzar a realizar la medicion \n\r" );

while(getch() != 'S');
enable_interrupts(GLOBAL);

printf("\n\rOK\n\r");
contador++;
}
else if (contador > 5){
disable_interrupts(GLOBAL);
printf("\n\r");
for(contador = 1; contador < 6; contador++){
printf("%Lu\n\r", time[contador]);
}

printf("\n\r");
printf("%Lu\n\r", time[2] - time[1]);
printf("%Lu\n\r", time[3] - time[2]);
printf("%Lu\n\r", time[4] - time[3]);
printf("%Lu\n\r", time[5] - time[4]);

contador = 0;
cuenta = 0;
printf("Preparado para una nueva medicion \n\r");

}

}
}


#include <16f84a.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading

#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A4,bits=8)