#include "main.h"unsigned int32 section[4];unsigned int32 time; // pocitadlo preteceni casovace#Define INORDER 1#int_RTCCvoid RTCC_isr(void) // preruseni od pretekleho casovace{time++;}#define LCD_ENABLE_PIN PIN_E0#define LCD_RS_PIN PIN_E1#define LCD_RW_PIN PIN_E2#define LCD_DATA4 PIN_D4#define LCD_DATA5 PIN_D5#define LCD_DATA6 PIN_D6#define LCD_DATA7 PIN_D7#include <lcd.c>#define BUTTON1 PIN_D0#define BUTTON2 PIN_D1#define BUTTON3 PIN_D2#define BUTTON4 PIN_D3#define START1 PIN_B0#define STOP1 PIN_B1#define START2 PIN_B2#define STOP2 PIN_B3#define START3 PIN_B4#define STOP3 PIN_B5#define START4 PIN_B6#define STOP4 PIN_B7#define BEEPER PIN_C0unsigned int32 run;// Includes all USB code and interrupts, as well as the CDC API#include <usb_cdc.h>void beep(int16 period){while(period){output_toggle(BEEPER);delay_us(800);period--;}}void test_mode() //Testovaci mod stopek{printf(lcd_putc,"\f TEST MODE");lcd_gotoxy(1,2);printf(lcd_putc,"ESC");while(input(BUTTON1)) // testuje dokud nekdo nezmackne tlacitlo{lcd_gotoxy(5,2);Output_toggle(PIN_A0);delay_ms(100);printf(lcd_putc,"%x",input_b());}}void send_measuring(){printf(usb_cdc_putc, "\n\r %5u %5u %5u %5u %5u", run, section[0], section[1], section[2], section[3]);} //*0.000010667void main(){setup_adc_ports(NO_ANALOGS|VSS_VDD);port_b_pullups(TRUE);setup_adc(ADC_OFF);setup_psp(PSP_DISABLED);setup_spi(SPI_SS_DISABLED);setup_wdt(WDT_OFF);setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);setup_timer_1(T1_DISABLED);setup_timer_2(T2_DISABLED,0,1);setup_timer_3(T3_DISABLED|T3_DIV_BY_1);setup_comparator(NC_NC_NC_NC);setup_vref(FALSE);enable_interrupts(INT_TIMER0);enable_interrupts(GLOBAL);lcd_init();usb_init();lcd_gotoxy(1,1);printf(lcd_putc,"\f STOPWATCH01A");lcd_gotoxy(1,2);printf(lcd_putc," Kaklik 2010");delay_ms(1000);lcd_gotoxy(1,1);printf(lcd_putc,"\f Waiting for PC... ");lcd_gotoxy(1,2);printf(lcd_putc,"TEST");while(!usb_cdc_connected()) if(!input(BUTTON1)) test_mode(); // pockej nez se pripoji seriovy port PClcd_gotoxy(1,1);printf(lcd_putc,"\f PC connected...");beep(10);run=0;while (TRUE){run++;printf(lcd_putc,"\f\nSTART");while(input(BUTTON1)); // ceka na zmacknuti startovaciho tlacitkaprintf(lcd_putc,"\f\n STOP"); //while((!input(START1)) && (input(BUTTON2))); // cekame na tlacitko stop nebo na preruseni paprskutime = 0;set_timer0(0);while((input(STOP1)) && (input(BUTTON2)))section[0] = (time << 16) + get_timer0();send_measuring();}}