/Designs/STOPWATCH02A/SW/main.c
3,28 → 3,9
unsigned int position;
unsigned int32 section[4];
unsigned int32 time; // pocitadlo preteceni casovace
unsigned int state;
 
#define RUNNING 1
#define STOPPED 0
#Define INORDER 1
 
#int_RB
void RB_isr(void)
{
section[position]= get_timer0();
time=0;
set_timer0(0);
if(position < 3) position++;
else {
disable_interrupts(INT_RB);
state = STOPPED;
}
time=0;
set_timer0(0);
 
}
 
#int_RTCC
void RTCC_isr(void) // preruseni od pretekleho casovace
{
62,14 → 43,34
}
}
 
void test_mode()
void test_mode() //Testovaci mod stopek
{
lcd_gotoxy(1,1);
printf(lcd_putc,"\f TEST MODE");
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,"%d %d %d %d",bit_test(input_b(),0), bit_test(input_b(),1), bit_test(input_b(),2), bit_test(input_b(),3));
}
}
void send_measuring()
{
printf(usb_cdc_putc, "\n\r %5ld %5ld %5ld %5ld %5ld", run, section[0]*0.000010667, section[1]*0.000010667, section[2]*0.000010667, section[3]*0.000010667);
}
 
void main() {
void exeption_inorder()
{
}
 
void main()
{
unsigned int8 last, input;
unsigned int16 timer;
int exception;
 
setup_adc_ports(NO_ANALOGS|VSS_VDD);
port_b_pullups(TRUE);
setup_adc(ADC_OFF);
76,13 → 77,13
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16);
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(GLOBAL);
enable_interrupts(INT_TIMER0);
 
lcd_init();
usb_init();
90,46 → 91,52
lcd_gotoxy(1,1);
printf(lcd_putc,"\f STOPWATCH01A");
lcd_gotoxy(1,2);
printf(lcd_putc," Kaklik 2010 ");
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());
while(!usb_cdc_connected()) if(!input(BUTTON1)) test_mode();
lcd_gotoxy(1,1);
printf(lcd_putc,"\f PC connected...");
beep(10);
if(!input(BUTTON1)) test_mode();
run=0;
section[0]=0;
section[1]=0;
section[2]=0;
section[3]=0;
while (TRUE)
{
run++;
lcd_gotoxy(3,1);
printf(lcd_putc,"\f START");
printf(lcd_putc,"\f\nSTART");
section[0]=0;
section[1]=0;
section[2]=0;
section[3]=0;
last!=input_b();
 
while(input(BUTTON2));
time = 0;
set_timer0(0);
position = 0;
state = RUNNING;
clear_interrupt(int_timer0);
clear_interrupt(int_RB);
enable_interrupts(INT_RTCC);
enable_interrupts(INT_RB);
lcd_gotoxy(6,1);
printf(lcd_putc,"\f STOP");
while(state==RUNNING);
while(input(BUTTON1));
printf(lcd_putc,"\f\n STOP");
time = 0;
set_timer0(0);
enable_interrupts(GLOBAL);
position = 0;
exception = 0;
 
 
printf(usb_cdc_putc, "\n\r %ld %ld %ld %ld %ld", run, section[0], section[1], section[2], section[3]);
while((position < 4) && (input(BUTTON2))) // cekame na tlacitko stop nebo na preruseni vsech paprsku
{
if(last!=(input=input_b())) // pri preruseni nektereho z paprsku zjistime ktery to byl
{
timer=get_timer0();
if(bit_test(last ^ input, position))section[position] = (time << 16) + timer; // kontroluje, jestli jsou paprsky preruseny ve spravnem poradi.
else exception=INORDER;
time=0;
set_timer0(0);
position++;
}
last=input_b();
}
if (exception == INORDER) exeption_inorder();
else send_measuring();
}
}
/Designs/STOPWATCH02A/SW/main.h
16,7 → 16,7
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES NOPBADEN //PORTB pins are configured as analog input channels on RESET
#FUSES NOPBADEN //PORTB pins are configured as analog input channels on RESET
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
/Designs/STOPWATCH02A/SW/main.hex
1,418 → 1,498
:020000040000FA
:04000000A1EF0BF071
:08000800056ED8CF06F0E0CF31
:100000001CEF0EF05DEF0FF0056ED8CF06F0E0CFDD
:1000100007F00001E9CF0DF0EACF08F0E1CF09F0D9
:10002000E2CF0AF0D9CF0BF0DACF0CF0F3CF14F017
:10003000F4CF15F0FACF16F000C00FF001C010F0A9
:1000400002C011F003C012F004C013F0F2AA2CEFAA
:1000500000F0F2B4D7EF01F0F2A632EF00F0F2B008
:10006000B2EF01F0A0AA38EF00F0A1BAE2EF08F079
:100070000FC000F010C001F011C002F012C003F078
:1000800013C004F00DC0E9FF08C0EAFF088E09C0E4
:10009000E1FF0AC0E2FF0BC0D9FF0CC0DAFF14C0B9
:1000A000F3FF15C0F4FF16C0FAFF055007C0E0FFCC
:1000B00006C0D8FF1000F2CF0EF0F29EF76AD00F04
:1000C000F66E000EF7220900F5500EBEF28E1200F9
:1000D000280C0106F76AE40FF66E000EF7220900FD
:1000E000F5501200000302FFFFFFFFFFFFFFFFFFBD
:1000F000FFFFFFFFF76A040FF66E010EF7220900FB
:10010000F550120000FF02FFFFFFFFFFFFFFFFFFA0
:10011000FFFFFFFFF76A240FF66E010EF7220900BA
:10012000F5501200400008004000000000000000F0
:1001300000000000000000000000000000000000BF
:1001400000000000F76A540FF66E010EF722090056
:10015000F5501200400000004000000000000000C8
:10016000000000000000000000000000000000008F
:1001700000000000F76A840FF66E010EF7220900F6
:10018000F550120009024300020100803209040008
:1001900000010202010005240010010424020205EE
:1001A000240600010524010001070581030800FA67
:1001B00009040100020A00000007050202410001D3
:1001C0000705820241000100F76AD80FF66E010EA2
:1001D000F7220900F55012000200F76AEA0FF66EE6
:1001E000010EF7220900F550120012171B20FFFF25
:1001F000FFFFF76A020FF66E020EF7220900F550B4
:1002000012001201100102000040610433000001DD
:1002100001020001F76A240FF66E020EF7220900B0
:10022000F55012000403090408034300430053007F
:100230001803530045005200490041004C002000C3
:10024000440045004D004F00F2CF0EF0F29EF76AD9
:10025000620FF66E020EF7220900F5500EBEF28E06
:1002600012000C2054455354204D4F444500F2CF0A
:100270000EF0F29EF76A880FF66E020EF722090062
:10028000F5500EBEF28E12000C2053544F505741C1
:100290005443483031410000F2CF0EF0F29EF76A2D
:1002A000B20FF66E020EF7220900F5500EBEF28E66
:1002B0001200202020204B616B6C696B20323031A2
:1002C00030200000F2CF0EF0F29EF76ADE0FF66EDD
:1002D000020EF7220900F5500EBEF28E12000C201D
:1002E00057616974696E6720666F722050432E2EC5
:1002F0002E200000F2CF0EF0F29EF76A0E0FF66E7F
:10030000030EF7220900F5500EBEF28E12000C20EB
:10031000504320636F6E6E65637465642E2E2E00ED
:10032000F2CF0EF0F29EF76A3A0FF66E030EF72246
:100330000900F5500EBEF28E12000C2053544152AB
:100340005400F2CF0EF0F29EF76A5C0FF66E030EC9
:10035000F7220900F5500EBEF28E12000C20535405
:100360004F5000001950040DF350036A1A0FE96E44
:10037000000E0320EA6ED650EF6ED7CFECFFEC6A8A
:10038000EC6A2D6A2C6A2B6A2A6AD76AD66A1950D7
:10039000020802E3192A02D0F2962E6A2D6A2C6A0C
:1003A0002B6A2A6AD76AD66AF29038EF00F0010EFB
:1003B0002A26D8B02B2AD8B42C2AD8B42D2AF294C5
:1003C00038EF00F06D92699468A402D06894FCD76D
:1003D000EDEF08F0400E0401016F040E036F180EDC
:1003E000026F880E006F046B040E076F580E066FC5
:1003F0000001000C70A002D0EDDF7090689AF6EF5B
:1004000008F06A6A6892FCEF08F0CE51D003F3CF8F
:1004100001F0F4CF00F0D103F3500026CF51D00308
:10042000F3500020026E000C036AC851700FE96E91
:100430000F0E0320EA6EEF6ACF6BC8C0CEF0D16B0F
:10044000080ED06FE2DF01C0E9FF040E0224EA6E5D
:10045000EF6ACF6BC8C0CEF0D16B080ED06FD5DF7E
:1004600002C0CAF001C0C9F0040EC927000ECA2399
:10047000C9C0E9FF040ECA25EA6EEF6A000C010E3E
:10048000C76FC7510F0805E3C7C0C8F0CDDFC72B42
:10049000F8D7000C446A436A250E426E800E416E06
:1004A000456A466A080E476E976B9691496A486A94
:1004B000926B9391000CBD6BBD5101080AE3036A76
:1004C000BD513F0FE96E000E0320EA6EEF6ABD2BAF
:1004D000F3D7E0DF346A010E356E336A000C68969C
:1004E00000D000D000D0000C6A6A686A9F0E6B6E64
:1004F0003D0E696E6E6AC3DFDEDF160E706E68A693
:1005000002D0EDDFFCD76D9865DF030E3A6E02EF87
:1005100009F0698468986D8208EF09F0689C0EEF15
:1005200009F0C2C03BF0000CFF0E3B6E000CC06B2C
:100530003E5237E0C0513F0834E3365005E0020A2E
:100540000DE0010A15E01ED0036A3D50F2CFC2F063
:10055000F29E10DEC2BFF28EC16F14D0036A3D500E
:10056000F2CFC2F0F29E56DEC2BFF28EC16F0AD049
:10057000036A3D50F2CFC2F0F29E3BDEC2BFF28E64
:10058000C16F00D03D2A3E06C051C02B580F036AF0
:10059000D8B0032AE96E040E0324EA6EC1C0EFFF4F
:1005A000C7D73E5204E1C051400801E0336AC0C0E1
:1005B000C2F0B7DF000C3D6A366A04011B51010A24
:1005C000000107E0030A0AE0010A0BE0220A20E02A
:1005D0003AD0120E3E6E030E366E37D0430E3E6E8C
:1005E00034D0020E366E036A04011A51370FE96ED9
:1005F000000E0320EA6EEFCF3DF0036A3D50F2CFCC
:10060000BFF0F29E000106DEBFBFF28E3E6E1DD02F
:10061000036A04011A51F2CFBFF0F29E0001DDDD42
:10062000BFBFF28E3D6E3D3C01D00BD0036A3D5002
:10063000F2CFBFF0F29E9EDDBFBFF28E3E6E05D0C0
:1006400002D072DF0ED070DF0CD004011F5305E121
:100650003E501E5D02E21EC43EF0010E336E0001EC
:1006600066DF71EF04F0BF5304E1040E3A6E07DF5A
:10067000E7D0050E3A6E040EC26F980EC16F010EE0
:10068000C06FC0510F08D8A0DBD0C0C0C8F0CCDE0E
:10069000C36B036AC051F2CFC7F0F29E2BDDC7BF18
:1006A000F28EFF0863E0040EC36FD890C035036A72
:1006B000F2CFC7F0F29E46DD0900F5CF03F0C7BFC9
:1006C000F28EC46F03C0C5F0CF6BC0C0CEF0D16B4B
:1006D000080ED06F9ADE01C0C7F0010E0124016E32
:1006E000000E0220036E01C0E9FF040E0324EA6E2F
:1006F000C4C0EFFFCF6BC0C0CEF0D16B080ED06F7F
:1007000084DE01C0C7F0020E0124016E000E02203B
:10071000036E01C0E9FF040E0324EA6EC2C0ECFFC1
:10072000ED52C1C0EFFFD890C035036AF2CFC7F0D9
:10073000F29E08DD0900F5CF03F0C7BFF28EC12796
:100740000350C223880EC66FC5B1C681C5B3C68328
:10075000CF6BC0C0CEF0D16B080ED06F56DE01C09B
:10076000E9FF040E0224EA6EC6C0EFFF036AC0511F
:10077000F2CFC7F0F29EAEDCC7BFF28EFF0845E0B5
:10078000C383CF6BC0C0CEF0D16B080ED06F3DDEFF
:1007900002C0C8F001C0C7F0040EC727000EC8236E
:1007A000020EC725016E000EC821036E01C0E9FFCD
:1007B000040E0324EA6EC2C0ECFFED52C1C0EFFF8D
:1007C000D890C035036AF2CFC7F0F29EA3DC0900CF
:1007D000F5CF03F0C7BFF28EC1270350C223CF6B02
:1007E000C0C0CEF0D16B080ED06F0FDE02C0C8F0D3
:1007F00001C0C7F0040EC727000EC823C7C0E9FF19
:10080000040EC825EA6E400EEF6EC351060802E1E1
:100810000E0EC36F036AC051F2CFC7F0F29E5ADCCE
:10082000C7BFF28E0108D8A4C389036AC051700FF4
:10083000E96E0F0E0320EA6EC3C0EFFFC02B21D775
:100840006BEF04F00401195100010DE0010A14E0FE
:10085000020A1EE0060A27E0030A2CE00E0A2BE03B
:10086000010A2FE03CD035C058F40401596B020E48
:100870000001C26F56DE35D004011A2D06D0010EDC
:1008800035160001C26B4DDE02D000014DDE29D0CD
:1008900004011A2D05D035820001C26B42DE02D060
:1008A000000142DE1ED0020E336E1AC43CF0C26B51
:1008B00038DE17D080D634C058F4010EC26F31DE56
:1008C00010D004011A51010808E31AC434F01AC404
:1008D000BFF00001C8D6C26B24DE000102D024DEC6
:1008E00000D00CEF06F034C0BFF004011951000134
:1008F00005E00A0A0BE0010A2BE03CD00401586B2A
:10090000596B020E0001C26F0CDE36D0BF531EE0E1
:10091000010EBF5D036AF2CFC0F0F29E55DCC0BF8E
:10092000F28E016E04011C5DD8A002D000010ED031
:10093000036A1C513F0FE96E000E0320EA6EEFCFF1
:1009400058F4010E0001C26FECDD01D0EDDD14D0D2
:10095000BF530EE0036A04011C513F0FE96E000E05
:100960000320EA6E1AC4EFFF0001C26BDADD01D08A
:10097000DBDD02D0D9DD00D00CEF06F0C091BFBFA7
:10098000C081BF9FC0A111D0036ABF51F2CFC1F097
:10099000F29E6AEC00F0C1BFF28EFF0802E1000E89
:1009A00001D0010E016E11D010D0036ABF51F2CFF9
:1009B000C1F0F29E7AEC00F0C1BFF28EFF0802E1B6
:1009C000000E01D0010E016E00D078EF05F0C0914D
:1009D000BFBFC081BF9FC0A117D0CF6BBFC0CEF03B
:1009E000D16B080ED06F11DD02C0C2F001C0C1F0A2
:1009F000040EC127000EC223C1C0E9FF040EC225A8
:100A0000EA6E880EEF6E0DD0CF6BBFC0CEF0D16B0B
:100A1000080ED06FFADC01C0E9FF040E0224EA6E72
:100A2000EF6A87EF05F0C091BFBFC081BF9FC0A133
:100A300017D0CF6BBFC0CEF0D16B080ED06FE5DC06
:100A400002C0C2F001C0C1F0040EC127000EC223D3
:100A5000C1C0E9FF040EC225EA6E840EEF6E0ED00F
:100A6000CF6BBFC0CEF0D16B080ED06FCEDC01C013
:100A7000E9FF040E0224EA6E840EEF6E8DEF05F09E
:100A8000C091BFBFC081BF9FC0A117D0CF6BBFC0F7
:100A9000CEF0D16B080ED06FB8DC02C0C3F001C03D
:100AA000C2F0040EC227000EC323C2C0E9FF040E29
:100AB000C325EA6EEFCFC1F00ED0CF6BBFC0CEF032
:100AC000D16B080ED06FA1DC01C0E9FF040E022437
:100AD000EA6EEFCFC1F0C1AF02D0C1B502D0000EB7
:100AE00001D0010E016E97EF05F01CC4BFF046D790
:100AF000015229E004011951010A000105E0020A2E
:100B000009E0030A0DE01DD01CC4BFF060D7C26B22
:100B100008DD19D01CC4BFF086D7C26B02DD13D02C
:100B20000401586B596B1CC4BFF00001A9D70152D6
:100B300004E0010E0401586F0001020EC26FF1DCE7
:100B400002D0F2DC00D00CEF06F0FE0E3B6E000C83
:100B500004011C2D01D002D01C5348E119510001A1
:100B60000BE0010A0DE0210A1CE0010A1FE0030A64
:100B70002EE0010A31E037D0010E996FE6DF35D063
:100B8000040EEA6E580EE96EE26A4A0EE16E080E35
:100B9000016EE6CFEEFF012EFCD71EC4C2F0C1DC11
:100BA00024D0020E996F9681D0DF1FD0040EEA6E1A
:100BB000580EE96EE26A410EE16E070E016EE6CF55
:100BC000EEFF012EFCD7070EC26FABDC0ED01AC4AD
:100BD00097F0C26BA6DC09D01AC449F01BC448F0D8
:100BE000C26B9FDC02D0A0DC00D0040100010CEF3E
:100BF00006F0336A040118517F0B000107E0010A77
:100C000006E0030A05E0230A04E004D01BD66BD6F5
:100C10006CD79ED789DC00D030EF08F0CF6BBFC017
:100C2000CEF0D16B080ED06F05EC02F001C0E9FFE9
:100C3000040E0224EA6EEFCFC1F0C051020806E1B3
:100C4000C1AD02D0C06B02D0010EC06FC05103080D
:100C50001AE1840EC16FCF6BBFC0CEF0D16B080E0E
:100C6000D06F05EC02F002C0C5F001C0C4F0040E64
:100C7000C427000EC523C4C0E9FF040EC525EA6ED3
:100C8000840EEF6E07D0C02D03D0C80EC16F02D006
:100C9000880EC16FD890BF35036AF2CFC4F0F29EC0
:100CA000A2EC00F00900F5CF03F0C4BFF28EC26FD2
:100CB00003C0C3F0CF6BBFC0CEF0D16B080ED06FB6
:100CC00005EC02F001C0C4F0010E0124016E000E1B
:100CD0000220036E01C0E9FF040E0324EA6EC2C0C5
:100CE000EFFFC3B1C181C3B3C183CF6BBFC0CEF02F
:100CF000D16B080ED06F05EC02F001C0E9FF040EC5
:100D00000224EA6EC1C0EFFF000C036ACD51700FE0
:100D1000E96E0F0E0320EA6EEF5219E0CF6BCDC0E3
:100D2000CEF0D16B080ED06F05EC02F002C0CFF010
:100D300001C0CEF0040ECE27000ECF23CEC0E9FFB7
:100D4000040ECF25EA6EEFCFCEF0CEAF02D0000E6C
:100D500001D0010E016E000CC8C0CDF0D6DF0152EB
:100D6000D8B47CD0CF6BC8C0CEF0D16B080ED06F9A
:100D700005EC02F002C0CEF001C0CDF0040ECD278C
:100D8000000ECE23010ECD25016E000ECE21036E86
:100D900001C0E9FF040E0324EA6EC9C0EFFFCB5186
:100DA00002081EE1CF6BC8C0CEF0D16B080ED06F29
:100DB00005EC02F002C0CEF001C0CDF0040ECD274C
:100DC000000ECE23CDC0E9FF040ECE25EA6EEFCF94
:100DD000CCF0CCAD02D0CB6B02D0010ECB6F18D0D3
:100DE000CB51040815E1CF6BC8C0CEF0D16B080E13
:100DF000D06F05EC02F001C0E9FF040E0224EA6E98
:100E0000EFCFCCF0CCAD03D0010ECB6F01D0CB6BCC
:100E1000CB2D03D0C80ECC6F02D0880ECC6FCAB1D8
:100E2000CC81CAB3CC83CF6BC8C0CEF0D16B080ED7
:100E3000D06F05EC02F002C0CEF001C0CDF0040E80
:100E4000CD27000ECE23CDC0E9FF040ECE25EA6EDD
:100E5000CCC0EFFF010E016E03D000D0000E016E7A
:100E6000000C9951010A03E0030A13E024D0EA6A56
:100E70004A0EE96E040EE26E180EE16E080E016E67
:100E8000E6CFEEFF012EFCD7C26B91EC02F0996B1E
:100E900016D0EA6A410EE96E040EE26E180EE16E9B
:100EA000070E016EE6CFEEFF012EFCD7996BC26BE9
:100EB00091EC02F004D0996BEAEC01F000D08BEFDA
:100EC00007F0CF6BC0C0CEF0D16B080ED06F05EC31
:100ED00002F002C0C2F001C0C1F0010E0124016E97
:100EE000000E0220036E01C0E9FF040E0324EA6E27
:100EF000036AEFCF01F003C002F084EF07F09381A3
:100F0000956B020EC06FDDD701C094F090EF07F033
:100F1000BF5302E1A6D704D0BF51020801E1EFD7C9
:100F2000000CC0C06EFFC05303E0040E3A6E02D046
:100F3000020E3A6EA1EF07F0346A336A3CC0C0F08B
:100F4000F0D710EF08F0C0C0CDF0DFDE015246E070
:100F5000CF6BC0C0CEF0D16B080ED06F05EC02F0A5
:100F600002C0C9F001C0C8F0040EC827000EC92392
:100F7000020EC825016E000EC921036E01C0E9FFF3
:100F8000040E0324EA6EECCF03F0ED52EFCFC6F06F
:100F900003C0C7F0C7C0EAFFC6C0E9FFC2C0E2FF96
:100FA000C1C0E1FFC4C002F0C3C001F0015202E0C1
:100FB000022A02D0025206E0E6CFEEFF012EFCD755
:100FC000022EFAD7C0C0C8F0C4C0CAF0C3C0C9F06E
:100FD000C5C0CBF0C1DE015003D000D0000E016EC1
:100FE000000C020EC06FC26B520EC16FC46B92C078
:100FF000C3F0020EC56FA7DF92C098F0926B000C91
:10100000925301E0EEDF15EF08F0BF530AE1332CF5
:1010100003D097EC02F004D03350020801E18CD7E2
:1010200004D0BF51020801E1EBD7000C6C30BD6F5A
:10103000BD33BD331F0EBD176C5240E1040100519A
:101040003C0B0001BE6F430E0401001700016FEC62
:1010500002F0BE5134081BE10401046B0001C9D544
:101060006D983B3C05D0BF6B030EC06FD7DD0ED033
:10107000BF6B020EC06FD2DD3B50FE0807E0C86BAD
:10108000CA6B3BC0C9F0040ECB6F66DE16D0BE51F2
:10109000040813E1BF6B3CDFBF6B020EC06FBEDD07
:1010A0003B50FE080AE03B3C01D007D0C86BCA6B3E
:1010B0003BC0C9F0010ECB6F4FDE82D06C500408EC
:1010C00018E1430E0401041700016FEC02F0FF0E5B
:1010D0003B6EBF6B9ADF3B3C01D008D0C86BCA6B3C
:1010E0003BC0C9F0020ECB6F37DE02D0EAEC01F054
:1010F00067D06CB42CD0CF6BBDC0CEF0D16B080ED6
:10110000D06F05EC02F001C0BFF001C001F0040E89
:101110000224036E01C0BFF0C06FCF6BBDC0CEF024
:10112000D16B080ED06F05EC02F001C0E9FF040E90
:101130000224EA6EEF50430BC0C0EAFFBFC0E9FFD4
:10114000EF6E6FEC02F0BDC0BFF0E2DE39D0CF6BC6
:10115000BDC0CEF0D16B080ED06F05EC02F002C01E
:10116000C0F001C0BFF0040EBF27000EC023BFC0F7
:1011700001F0040EC025036EBFC0BFF0C06FCF6B7F
:10118000BDC0CEF0D16B080ED06F05EC02F002C0EE
:10119000C2F001C0C1F0040EC127000EC223C1C0BD
:1011A000E9FF040EC225EA6EEF50430BC0C0EAFF10
:1011B000BFC0E9FFEF6E6FEC02F0BDC0BFF025DFEE
:1011C00014EF09F03A5201E135D0685233E068A4D7
:1011D00004D069A402D0E2EF01F06DA201D02AD0C0
:1011E00068AA04D069AA02D0FAEF01F068A204D07C
:1011F00069A202D001EF02F068A004D069A002D079
:1012000074EF02F068A804D069A802D089EF02F058
:1012100068AC04D069AC02D08EEF02F0BC6B68A65B
:1012200004D069A602D002D701D004D0BC51BC2B97
:101230000308F5E2A19A38EF00F0EA6A9C0EE96E25
:10124000EF500EE00F0E016E006A002EFED7012E49
:10125000FBD78F0E006E002EFED70000EF2EF2D7C8
:10126000000CA3B102D08C9801D08C889598A3B3C0
:1012700002D08C9A01D08C8A959AA3B502D08C9C0E
:1012800001D08C8C959CA3B702D08C9E01D08C8E03
:10129000959E00008D809690070E006E002EFED762
:1012A00000D08D909690000CA46B9588000E83B8AA
:1012B000010EA413958A000E83BA010E006ED89019
:1012C00000360050A413958C000E83BC010E006EF6
:1012D00000360036FC0E00160050A413958E000E4A
:1012E00083BE010E006E003600360036F80E001682
:1012F0000050A413A4C001F0000C9588958A958C29
:10130000958E8D84969400008D8096900000CCDFA1
:1013100001C0A3F08D90969000008D809690030EF2
:10132000006E002EFED700D0BFDF01C0A2F08D906E
:1013300096909598959A959C959EA339006EF00E7F
:1013400000160050A211016EA9EF09F08D9296923D
:10135000D4D701C0A2F001BEFBD7A05302E18D9209
:1013600001D08D82969200008D94969400008D900D
:101370009690A139A26F0F0EA217A2C0A3F071DF41
:10138000A1510F0BA26FA36F6CDF000C9598959A7B
:10139000959C959E9690969296948D9296928D9409
:1013A00096948D9096900F0E9C6F47DF010E9A6F6A
:1013B0009A51030808E3030EA36F53DF050E9C6FD9
:1013C0003CDF9A2BF5D7020EA36F4BDF9A6B9A5135
:1013D00003080FE3036A9A51F2CF9BF0F29E5BEC95
:1013E00000F09BBFF28E9B6FA06BA16FAFDF9A2BBB
:1013F000EED7E5EF0BF06D6A696A080E6F6E9450D8
:101400003009946E3A6A186AF2BE188EF29E5BEC4E
:1014100002F018BEF28E0EEF0AF0EDD734EF0AF0AC
:10142000186AF2BE188EF29E5BEC02F018BEF28EC5
:101430006D6A140E6F6E696A6D86010E3A6E24EF46
:101440000AF06DB601D0ECD73A2C0BD06DBA09D0AA
:10145000686A696AA08AC00EF212110E696E020EE5
:101460003A6E35EF0AF0D9D7ECD73A500208FCE1D2
:10147000E6EF0BF09D2D01D003D0400E9E6F01D002
:101480009E6B010E9C5D9E279E5180099F6FA06BF5
:10149000A16F5CDF000C9B510C0A05E0060A0BE013
:1014A000020A0FE013D0A06B010EA16F4FDF020EF6
:1014B0009C6FC3DE11D0010E9C6F020E9D6FDADFB0
:1014C0000BD0A06B100EA16F41DF06D0010EA06FF4
:1014D0009BC0A1F03BDF00D0000C010E9D5F0CE330
:1014E000EA6A9D0EE96EEF5007E0020E006E002ED4
:1014F000FED700D0EF2EF9D788EF0AF09A519B1152
:101500000EE094908B70040E9C6FC80E9D6FE5D713
:101510009C2FFBD79A51D8B49B079A07EFD730EF8F
:101520000CF0010E9C6F9D6FA5DF9A6B9A5124EC15
:1015300001F09A2B006E9B6FAEDF0B0E9A5DF6E109
:1015400034EF0CF0A891F2BEA881F29E92513F08B0
:1015500002E23F0E926F9251922B036A520FE96E94
:10156000000E0320EA6EA7C0EFFFF29EA8B1F28E34
:10157000186AF2BE188EF29E020ECD6F85EC06F050
:1015800018BEF28E015207E0186AF2BE188EF29E63
:1015900028DD18BEF28EE7EF0AF092513F0814E200
:1015A000186AF2BE188EF29E020ECD6F85EC06F020
:1015B00018BEF28E015207E0186AF2BE188EF29E33
:1015C00010DD18BEF28EE9D7A6C0A7F0BBD7000C7D
:1015D000006A016A026A036AAE6BAF6BB06BB16BF3
:1015E000AD51AC11AB11AA112CE0200EB26FD89006
:1015F000A637A737A837A937AE37AF37B037B137D7
:10160000AD51B15D08E1AC51B05D05E1AB51AF5DED
:1016100002E1AA51AE5D0FE3AA51AE5FAB51D8A073
:10162000AB3DAF5FAC51D8A0AC3DB05FAD51D8A0E1
:10163000AD3DB15FD8800036013602360336B22F99
:10164000D6D7EA6AAE0EE96E000CE9509E6F9DAFE8
:101650000DD09E079E8B9A1F9B1F9C1F9D1F9A2B30
:10166000D8B49B2BD8B49C2BD8B49D2B3B0EA56F24
:101670009A0EA46FCA0EA36FA26B0A0EA06F9DC034
:10168000A9F09CC0A8F09BC0A7F09AC0A6F0A5C086
:10169000ADF0A4C0ACF0A3C0ABF0A2C0AAF098DF3C
:1016A0000150EFCF9AF0ECCF9BF0ECCF9CF0ECCF59
:1016B0009DF000520FE1A051010A0CE09E510CE098
:1016C0000F0BA05D01E024E29EBF22D09EBD04D09E
:1016D000200E1AD0200E9E179EAB09D09E9B00C0F4
:1016E0009EF02D0EA66F59DF9EC000F09E6B300E4F
:1016F0009EAB0AD09E9B00C09EF02D0EA66F4DDFC4
:101700009EC000F09E6B300E002600C0A6F045DFA4
:10171000A5C0A9F0A4C0A8F0A3C0A7F0A2C0A6F0DD
:10172000AD6BAC6BAB6B0A0EAA6F52DF03C0A5F0BA
:1017300002C0A4F001C0A3F000C0A2F0A02F9FD768
:10174000000CF86AD09E088EEA6AE96AB886E10E53
:10175000AF6E040EB06EA60EAC6E900EAB6EC150A6
:10176000C00B0F09C16E070EB46E376A040E386ED7
:101770000C0E396E3A6A3E6A926B996BC150C00B7F
:101780000F09C16EF19EC290B098C69A949E938044
:101790009392010EC66E000EC76ED190830ED56E69
:1017A000CD6A000ECA6E000ECB6EB16A070EB46E23
:1017B0009250926E270E006E002EFED700D0B450CD
:1017C000A19CB56AC00EF212E1D54DD6010E9C6FF8
:1017D0009D6F50DE9A6B9A5137EC01F09A2B006E98
:1017E0009B6F59DE0E0E9A5DF6E1010E9C6F020EA4
:1017F0009D6F40DE9A6B9A514CEC01F09A2B006E73
:101800009B6F49DE100E9A5DF6E1040E9A6FFA0E98
:101810009C6F13DD9A2FFBD7010E9C6F9D6F2ADE04
:101820009A6B9A5162EC01F09A2B006E9B6F33DE3B
:10183000140E9A5DF6E196A1FED7010E9C6F9D6F86
:1018400019DE9A6B9A517AEC01F09A2B006E9B6F1D
:1018500022DE110E9A5DF6E19B6B0A0E9A6F4ED650
:10186000958083B001D05DD6326A316A306A2F6AC2
:101870001D6A1C6A1B6A1A6A216A206A1F6A1E6A2C
:10188000256A246A236A226A296A286A276A266ADC
:10189000010E2F26D8B0302AD8B4312AD8B4322A33
:1018A000030E9C6F010E9D6FE5DD9A6B9A5190ECD3
:1018B00001F09A2B006E9B6FEEDD070E9A5DF6E14C
:1018C000958283B2FDD72D6A2C6A2B6A2A6AD76A61
:1018D000D66A196A010E2E6EF294F290F28AF2869E
:1018E000060E9C6F010E9D6FC5DD9A6B9A51A1EC9F
:1018F00001F09A2B006E9B6FCEDD060E9A5DF6E12D
:101900002E2C01D0FDD70A0EA66F47DE0D0EA66F56
:1019100044DE200EA66F41DE410EE96E32C09DF01E
:1019200031C09CF030C09BF02FC09AF08EDE200EAC
:10193000A66F33DE410EE96E1DC09DF01CC09CF009
:101940001BC09BF01AC09AF080DE200EA66F25DE29
:10195000410EE96E21C09DF020C09CF01FC09BF09D
:101960001EC09AF072DE200EA66F17DE410EE96EE1
:1019700025C09DF024C09CF023C09BF022C09AF0AB
:1019800064DE200EA66F09DE410EE96E29C09DF0CF
:1019900028C09CF027C09BF026C09AF056DE78D76E
:0219A000030042
:1000500000F0F2B4BCEF01F0A0AA32EF00F0A1BAB8
:10006000C7EF08F00FC000F010C001F011C002F09F
:1000700012C003F013C004F00DC0E9FF08C0EAFF8E
:10008000088E09C0E1FF0AC0E2FF0BC0D9FF0CC017
:10009000DAFF14C0F3FF15C0F4FF16C0FAFF0550D5
:1000A00007C0E0FF06C0D8FF1000F2CF0EF0F29EAE
:1000B000F76AC40FF66E000EF7220900F5500EBE67
:1000C000F28E1200280C0106F76AD80FF66E000EA9
:1000D000F7220900F5501200000302FFFFFFFFFFA7
:1000E000FFFFFFFFFFFFFFFFF76AF80FF66E000E3E
:1000F000F7220900F550120000FF02FFFFFFFFFF8B
:10010000FFFFFFFFFFFFFFFFF76A180FF66E010EFC
:10011000F7220900F55012004000080040000000DE
:1001200000000000000000000000000000000000CF
:100130000000000000000000F76A480FF66E010E94
:10014000F7220900F55012004000000040000000B6
:10015000000000000000000000000000000000009F
:100160000000000000000000F76A780FF66E010E34
:10017000F7220900F5501200090243000201008035
:1001800032090400000102020100052400100104EC
:10019000240202052406000105240100010705814F
:1001A000030800FA09040100020A00000007050222
:1001B000024100010705820241000100F76ACC0FED
:1001C000F66E010EF7220900F55012000200F76AE0
:1001D000DE0FF66E010EF7220900F550120012171D
:1001E0001B20FFFFFFFFF76AF60FF66E010EF722E6
:1001F0000900F550120012011001020000406104D4
:100200003300000101020001F76A180FF66E020EBA
:10021000F7220900F5501200040309040803430003
:1002200043005300180353004500520049004100A9
:100230004C002000440045004D004F00F2CF0EF06E
:10024000F29EF76A560FF66E020EF7220900F5507D
:100250000EBEF28E12000C20202054455354204D27
:100260004F444500F2CF0EF0F29EF76A7E0FF66E15
:10027000020EF7220900F5500EBEF28E12000C207D
:1002800053544F5057415443483031410000F2CF4E
:100290000EF0F29EF76AA80FF66E020EF722090022
:1002A000F5500EBEF28E120020204B616B6C696B14
:1002B000203230313000F2CF0EF0F29EF76AD00FCC
:1002C000F66E020EF7220900F5500EBEF28E1200F5
:1002D0000C2057616974696E6720666F7220504305
:1002E0002E2E2E200000F2CF0EF0F29EF76A000FA5
:1002F000F66E030EF7220900F5500EBEF28E1200C4
:10030000544553540000F2CF0EF0F29EF76A200FCE
:10031000F66E030EF7220900F5500EBEF28E1200A3
:100320000C20504320636F6E6E65637465642E2EDF
:100330002E00F2CF0EF0F29EF76A4C0FF66E030E0F
:10034000F7220900F5500EBEF28E12000C0A53542B
:1003500041525400F2CF0EF0F29EF76A6E0FF66E25
:10036000030EF7220900F5500EBEF28E12000C0AA1
:1003700020202053544F5000010E2A26D8B02B2A9B
:10038000D8B42C2AD8B42D2AF29432EF00F06D9212
:10039000699468A402D06894FCD7D2EF08F0400EAC
:1003A0000401016F040E036F180E026F880E006FB8
:1003B000046B040E076F580E066F0001000C70A04E
:1003C00002D0EDDF7090689ADBEF08F06A6A6892FD
:1003D000E1EF08F0E251E403F3CF01F0F4CF00F0D5
:1003E000E503F3500026E351E403F3500020026ECE
:1003F000000C036ADC51700FE96E0F0E0320EA6EE9
:10040000EF6AE36BDCC0E2F0E56B080EE46FE2DF5D
:1004100001C0E9FF040E0224EA6EEF6AE36BDCC060
:10042000E2F0E56B080EE46FD5DF02C0DEF001C03C
:10043000DDF0040EDD27000EDE23DDC0E9FF040E33
:10044000DE25EA6EEF6A000C010EDB6FDB510F0850
:1004500005E3DBC0DCF0CDDFDB2BF8D7000C436A13
:10046000426A250E416E800E406E446A456A080E4F
:10047000466E966B9591486A476A916B9291000C13
:10048000D16BD15101080AE3036AD1513E0FE96EE5
:10049000000E0320EA6EEF6AD12BF3D7E0DF336A58
:1004A000010E346E326A000C689600D000D000D085
:1004B000000C6A6A686A9F0E6B6E3D0E696E6E6A0A
:1004C000C3DFDEDF160E706E68A602D0EDDFFCD74C
:1004D0006D9865DF030E396EE7EF08F06984689860
:1004E0006D82EDEF08F0689CF3EF08F0D6C03AF0AB
:1004F000000CFF0E3A6E000CD46B3D5237E0D45125
:100500003F0834E3355005E0020A0DE0010A15E02A
:100510001ED0036A3C50F2CFD6F0F29E25DED6BF45
:10052000F28ED56F14D0036A3C50F2CFD6F0F29E13
:100530006BDED6BFF28ED56F0AD0036A3C50F2CF85
:10054000D6F0F29E50DED6BFF28ED56F00D03C2A98
:100550003D06D451D42B580F036AD8B0032AE96E54
:10056000040E0324EA6ED5C0EFFFC7D73D5204E165
:10057000D451400801E0326AD4C0D6F0B7DF000C95
:100580003C6A356A04011B51010A000107E0030AB5
:100590000AE0010A0BE0220A20E03AD0120E3D6E7A
:1005A000030E356E37D0430E3D6E34D0020E356EDD
:1005B000036A04011A51360FE96E000E0320EA6E39
:1005C000EFCF3CF0036A3C50F2CFD3F0F29E000133
:1005D0001BDED3BFF28E3D6E1DD0036A04011A519B
:1005E000F2CFD3F0F29E0001F2DDD3BFF28E3C6E6B
:1005F0003C3C01D00BD0036A3C50F2CFD3F0F29ECA
:10060000B3DDD3BFF28E3D6E05D002D072DF0ED0C7
:1006100070DF0CD004011F5305E13D501E5D02E266
:100620001EC43DF0010E326E000166DF56EF04F08D
:10063000D35304E1040E396E07DFE7D0050E396E9F
:10064000040ED66F980ED56F010ED46FD4510F08DB
:10065000D8A0DBD0D4C0DCF0CCDED76B036AD45199
:10066000F2CFDBF0F29E40DDDBBFF28EFF0863E0ED
:10067000040ED76FD890D435036AF2CFDBF0F29E28
:100680005BDD0900F5CF03F0DBBFF28ED86F03C04E
:10069000D9F0E36BD4C0E2F0E56B080EE46F9ADEAC
:1006A00001C0DBF0010E0124016E000E0220036E7A
:1006B00001C0E9FF040E0324EA6ED8C0EFFFE36B2C
:1006C000D4C0E2F0E56B080EE46F84DE01C0DBF01D
:1006D000020E0124016E000E0220036E01C0E9FF2C
:1006E000040E0324EA6ED6C0ECFFED52D5C0EFFF36
:1006F000D890D435036AF2CFDBF0F29E1DDD0900FD
:10070000F5CF03F0DBBFF28ED5270350D623880E3A
:10071000DA6FD9B1DA81D9B3DA83E36BD4C0E2F00E
:10072000E56B080EE46F56DE01C0E9FF040E0224FB
:10073000EA6EDAC0EFFF036AD451F2CFDBF0F29E2B
:10074000C3DCDBBFF28EFF0845E0D783E36BD4C088
:10075000E2F0E56B080EE46F3DDE02C0DCF001C0A4
:10076000DBF0040EDB27000EDC23020EDB25016E1E
:10077000000EDC21036E01C0E9FF040E0324EA6EC3
:10078000D6C0ECFFED52D5C0EFFFD890D435036A48
:10079000F2CFDBF0F29EB8DC0900F5CF03F0DBBF4F
:1007A000F28ED5270350D623E36BD4C0E2F0E56B7D
:1007B000080EE46F0FDE02C0DCF001C0DBF0040EB7
:1007C000DB27000EDC23DBC0E9FF040EDC25EA6E2C
:1007D000400EEF6ED751060802E10E0ED76F036A86
:1007E000D451F2CFDBF0F29E6FDCDBBFF28E01085A
:1007F000D8A4D789036AD451700FE96E0F0E032075
:10080000EA6ED7C0EFFFD42B21D750EF04F00401DC
:10081000195100010DE0010A14E0020A1EE0060A67
:1008200027E0030A2CE00E0A2BE0010A2FE03CD05F
:1008300034C058F40401596B020E0001D66F56DE25
:1008400035D004011A2D06D0010E34160001D66BE6
:100850004DDE02D000014DDE29D004011A2D05D055
:1008600034820001D66B42DE02D0000142DE1ED08F
:10087000020E326E1AC43BF0D66B38DE17D080D62B
:1008800033C058F4010ED66F31DE10D004011A5176
:10089000010808E31AC433F01AC4D3F00001C8D623
:1008A000D66B24DE000102D024DE00D0F1EF05F08B
:1008B00033C0D3F004011951000105E00A0A0BE02E
:1008C000010A2BE03CD00401586B596B020E000169
:1008D000D66F0CDE36D0D3531EE0010ED35D036A13
:1008E000F2CFD4F0F29E6ADCD4BFF28E016E040126
:1008F0001C5DD8A002D000010ED0036A1C513E0F2F
:10090000E96E000E0320EA6EEFCF58F4010E0001ED
:10091000D66FECDD01D0EDDD14D0D3530EE0036AC9
:1009200004011C513E0FE96E000E0320EA6E1AC44A
:10093000EFFF0001D66BDADD01D0DBDD02D0D9DDBF
:1009400000D0F1EF05F0D491D3BFD481D39FD4A1CF
:1009500011D0036AD351F2CFD5F0F29E64EC00F0CF
:10096000D5BFF28EFF0802E1000E01D0010E016E2C
:1009700011D010D0036AD351F2CFD5F0F29E74ECAF
:1009800000F0D5BFF28EFF0802E1000E01D0010E8B
:10099000016E00D05DEF05F0D491D3BFD481D39F19
:1009A000D4A117D0E36BD3C0E2F0E56B080EE46F7F
:1009B00011DD02C0D6F001C0D5F0040ED527000E1F
:1009C000D623D5C0E9FF040ED625EA6E880EEF6E59
:1009D0000DD0E36BD3C0E2F0E56B080EE46FFADCF8
:1009E00001C0E9FF040E0224EA6EEF6A6CEF05F025
:1009F000D491D3BFD481D39FD4A117D0E36BD3C0FC
:100A0000E2F0E56B080EE46FE5DC02C0D6F001C051
:100A1000D5F0040ED527000ED623D5C0E9FF040E6D
:100A2000D625EA6E840EEF6E0ED0E36BD3C0E2F0F3
:100A3000E56B080EE46FCEDC01C0E9FF040E022472
:100A4000EA6E840EEF6E72EF05F0D491D3BFD481BD
:100A5000D39FD4A117D0E36BD3C0E2F0E56B080EAF
:100A6000E46FB8DC02C0D7F001C0D6F0040ED62780
:100A7000000ED723D6C0E9FF040ED725EA6EEFCFCC
:100A8000D5F00ED0E36BD3C0E2F0E56B080EE46F57
:100A9000A1DC01C0E9FF040E0224EA6EEFCFD5F01D
:100AA000D5AF02D0D5B502D0000E01D0010E016E37
:100AB0007CEF05F01CC4D3F046D7015229E00401B5
:100AC0001951010A000105E0020A09E0030A0DE0DC
:100AD0001DD01CC4D3F060D7D66B08DD19D01CC460
:100AE000D3F086D7D66B02DD13D00401586B596B57
:100AF0001CC4D3F00001A9D7015204E0010E040187
:100B0000586F0001020ED66FF1DC02D0F2DC00D08B
:100B1000F1EF05F0FE0E3A6E000C04011C2D01D021
:100B200002D01C5348E1195100010BE0010A0DE00D
:100B3000210A1CE0010A1FE0030A2EE0010A31E04D
:100B400037D0010E986FE6DF35D0040EEA6E580EEE
:100B5000E96EE26A490EE16E080E016EE6CFEEFF25
:100B6000012EFCD71EC4D6F0C1DC24D0020E986F33
:100B70009581D0DF1FD0040EEA6E580EE96EE26A4E
:100B8000400EE16E070E016EE6CFEEFF012EFCD7A0
:100B9000070ED66FABDC0ED01AC496F0D66BA6DC6F
:100BA00009D01AC448F01BC447F0D66B9FDC02D0B2
:100BB000A0DC00D004010001F1EF05F0326A04016D
:100BC00018517F0B000107E0010A06E0030A05E067
:100BD000230A04E004D01BD66BD66CD79ED789DCE1
:100BE00000D015EF08F0E36BD3C0E2F0E56B080E20
:100BF000E46FEAEC01F001C0E9FF040E0224EA6EA2
:100C0000EFCFD5F0D451020806E1D5AD02D0D46BB8
:100C100002D0010ED46FD45103081AE1840ED56FAF
:100C2000E36BD3C0E2F0E56B080EE46FEAEC01F091
:100C300002C0D9F001C0D8F0040ED827000ED92385
:100C4000D8C0E9FF040ED925EA6E840EEF6E07D0F6
:100C5000D42D03D0C80ED56F02D0880ED56FD89092
:100C6000D335036AF2CFD8F0F29E9CEC00F0090075
:100C7000F5CF03F0D8BFF28ED66F03C0D7F0E36B89
:100C8000D3C0E2F0E56B080EE46FEAEC01F001C0BE
:100C9000D8F0010E0124016E000E0220036E01C087
:100CA000E9FF040E0324EA6ED6C0EFFFD7B1D58169
:100CB000D7B3D583E36BD3C0E2F0E56B080EE46FE6
:100CC000EAEC01F001C0E9FF040E0224EA6ED5C08F
:100CD000EFFF000C036AE151700FE96E0F0E032065
:100CE000EA6EEF5219E0E36BE1C0E2F0E56B080E4B
:100CF000E46FEAEC01F002C0E3F001C0E2F0040EA0
:100D0000E227000EE323E2C0E9FF040EE325EA6ECA
:100D1000EFCFE2F0E2AF02D0000E01D0010E016E83
:100D2000000CDCC0E1F0D6DF0152D8B47CD0E36B1C
:100D3000DCC0E2F0E56B080EE46FEAEC01F002C003
:100D4000E2F001C0E1F0040EE127000EE223010E03
:100D5000E125016E000EE221036E01C0E9FF040EE1
:100D60000324EA6EDDC0EFFFDF5102081EE1E36BF2
:100D7000DCC0E2F0E56B080EE46FEAEC01F002C0C3
:100D8000E2F001C0E1F0040EE127000EE223E1C031
:100D9000E9FF040EE225EA6EEFCFE0F0E0AD02D00D
:100DA000DF6B02D0010EDF6F18D0DF51040815E1B0
:100DB000E36BDCC0E2F0E56B080EE46FEAEC01F0F7
:100DC00001C0E9FF040E0224EA6EEFCFE0F0E0ADCF
:100DD00003D0010EDF6F01D0DF6BDF2D03D0C80E13
:100DE000E06F02D0880EE06FDEB1E081DEB3E08319
:100DF000E36BDCC0E2F0E56B080EE46FEAEC01F0B7
:100E000002C0E2F001C0E1F0040EE127000EE2238F
:100E1000E1C0E9FF040EE225EA6EE0C0EFFF010E3B
:100E2000016E03D000D0000E016E000C9851010A33
:100E300003E0030A13E024D0EA6A490EE96E040EC7
:100E4000E26E180EE16E080E016EE6CFEEFF012E87
:100E5000FCD7D66B76EC02F0986B16D0EA6A400E9F
:100E6000E96E040EE26E180EE16E070E016EE6CF1B
:100E7000EEFF012EFCD7986BD66B76EC02F004D017
:100E8000986BCFEC01F000D070EF07F0E36BD4C0AB
:100E9000E2F0E56B080EE46FEAEC01F002C0D6F078
:100EA00001C0D5F0010E0124016E000E0220036E78
:100EB00001C0E9FF040E0324EA6E036AEFCF01F0DC
:100EC00003C002F069EF07F09281946B020ED46FB9
:100ED000DDD701C093F075EF07F0D35302E1A6D739
:100EE00004D0D351020801E1EFD7000CD4C06EFF4B
:100EF000D45303E0040E396E02D0020E396E86EF31
:100F000007F0336A326A3BC0D4F0F0D7F5EF07F050
:100F1000D4C0E1F0DFDE015246E0E36BD4C0E2F082
:100F2000E56B080EE46FEAEC01F002C0DDF001C0F1
:100F3000DCF0040EDC27000EDD23020EDC25016E42
:100F4000000EDD21036E01C0E9FF040E0324EA6EEA
:100F5000ECCF03F0ED52EFCFDAF003C0DBF0DBC0F3
:100F6000EAFFDAC0E9FFD6C0E2FFD5C0E1FFD8C092
:100F700002F0D7C001F0015202E0022A02D0025270
:100F800006E0E6CFEEFF012EFCD7022EFAD7D4C042
:100F9000DCF0D8C0DEF0D7C0DDF0D9C0DFF0C1DEB4
:100FA000015003D000D0000E016E000C020ED46F71
:100FB000D66B510ED56FD86B91C0D7F0020ED96F9A
:100FC000A7DF91C097F0916B000C915301E0EEDF29
:100FD000FAEF07F0D3530AE1322C03D07CEC02F095
:100FE00004D03250020801E18CD704D0D35102085A
:100FF00001E1EBD7000C6C30D16FD133D1331F0E30
:10100000D1176C5240E1040100513C0B0001D26F3A
:10101000430E04010017000154EC02F0D2513408D1
:101020001BE10401046B0001C9D56D983A3C05D061
:10103000D36B030ED46FD7DD0ED0D36B020ED46FFB
:10104000D2DD3A50FE0807E0DC6BDE6B3AC0DDF023
:10105000040EDF6F66DE16D0D251040813E1D36BA5
:101060003CDFD36B020ED46FBEDD3A50FE080AE0BF
:101070003A3C01D007D0DC6BDE6B3AC0DDF0010EEC
:10108000DF6F4FDE82D06C50040818E1430E04017C
:101090000417000154EC02F0FF0E3A6ED36B9ADF96
:1010A0003A3C01D008D0DC6BDE6B3AC0DDF0020EBA
:1010B000DF6F37DE02D0CFEC01F067D06CB42CD0FC
:1010C000E36BD1C0E2F0E56B080EE46FEAEC01F0EF
:1010D00001C0D3F001C001F0040E0224036E01C070
:1010E000D3F0D46FE36BD1C0E2F0E56B080EE46F90
:1010F000EAEC01F001C0E9FF040E0224EA6EEF50B1
:10110000430BD4C0EAFFD3C0E9FFEF6E54EC02F00A
:10111000D1C0D3F0E2DE39D0E36BD1C0E2F0E56BB1
:10112000080EE46FEAEC01F002C0D4F001C0D3F085
:10113000040ED327000ED423D3C001F0040ED4250F
:10114000036ED3C0D3F0D46FE36BD1C0E2F0E56B94
:10115000080EE46FEAEC01F002C0D6F001C0D5F051
:10116000040ED527000ED623D5C0E9FF040ED625E0
:10117000EA6EEF50430BD4C0EAFFD3C0E9FFEF6E35
:1011800054EC02F0D1C0D3F025DFF9EF08F039526A
:1011900001E135D0685233E068A404D069A402D0DC
:1011A000C7EF01F06DA201D02AD068AA04D069AAC5
:1011B00002D0DFEF01F068A204D069A202D0E6EF0E
:1011C00001F068A004D069A002D059EF02F068A82D
:1011D00004D069A802D06EEF02F068AC04D069AC0C
:1011E00002D073EF02F0D06B68A604D069A602D0DB
:1011F00002D701D004D0D051D02B0308F5E2A19A38
:1012000032EF00F0EA6AA90EE96EEF500EE00F0E21
:10121000016E006A002EFED7012EFBD78F0E006EE6
:10122000002EFED70000EF2EF2D7000CB0B102D096
:101230008C9801D08C889598B0B302D08C9A01D04C
:101240008C8A959AB0B502D08C9C01D08C8C959CE0
:10125000B0B702D08C9E01D08C8E959E00008D8000
:101260009690070E006E002EFED700D08D909690BF
:10127000000CB16B9588000E83B8010EB113958AEE
:10128000000E83BA010E006ED89000360050B113E4
:10129000958C000E83BC010E006E00360036FC0EED
:1012A00000160050B113958E000E83BE010E006E25
:1012B000003600360036F80E00160050B113B1C0EB
:1012C00001F0000C9588958A958C958E8D84969466
:1012D00000008D8096900000CCDF01C0B0F08D90B2
:1012E000969000008D809690030E006E002EFED723
:1012F00000D0BFDF01C0AFF08D9096909598959A81
:10130000959C959EB039006EF00E00160050AF11FE
:10131000016E8EEF09F08D929692D4D701C0AFF096
:1013200001BEFBD7AD5302E18D9201D08D82969222
:1013300000008D94969400008D909690AE39AF6F1A
:101340000F0EAF17AFC0B0F071DFAE510F0BAF6F24
:10135000B06F6CDF000C9598959A959C959E969031
:10136000969296948D9296928D9496948D90969056
:101370000F0EA96F47DF010E9E6F9E51030808E311
:10138000030EB06F53DF050EA96F3CDF9E2BF5D720
:10139000020EB06F4BDF9E6B9E5103080FE3036A92
:1013A0009E51F2CF9FF0F29E55EC00F09FBFF28E5F
:1013B0009F6FAD6BAE6FAFDF9E2BEED760EF0EF081
:1013C0006D6A696A080E6F6E94503009946E396ABE
:1013D000186AF2BE188EF29E40EC02F018BEF28E31
:1013E000F3EF09F0EDD719EF0AF0186AF2BE188E84
:1013F000F29E40EC02F018BEF28E6D6A140E6F6E13
:10140000696A6D86010E396E09EF0AF06DB601D07A
:10141000ECD7392C0BD06DBA09D0686A696AA08AFA
:10142000C00EF212110E696E020E396E1AEF0AF03A
:10143000D9D7ECD739500208FCE162EF0EF0AA2DA3
:1014400001D003D0400EAB6F01D0AB6B010EA95D94
:10145000AB27AB518009AC6FAD6BAE6F5CDF000C9E
:10146000A8510C0A05E0060A0BE0020A0FE013D0AF
:10147000AD6B010EAE6F4FDF020EA96FC3DE11D050
:10148000010EA96F020EAA6FDADF0BD0AD6B100E42
:10149000AE6F41DF06D0010EAD6FA8C0AEF03BDFEE
:1014A00000D0000CA951016AA85D03E2A8C000F0B9
:1014B0000CD0006A080EAA6FA8370036A951005C4C
:1014C000D8B0006E0136AA2FF7D7000C200EA3A9C2
:1014D000300EA46FA2C000F0A2AF07D0001E002AF9
:1014E00000C0A2F02D0EA46FA38F0150A2C0A8F0DF
:1014F000640EA96FD7DF00C0A2F0300E0124A56FE3
:10150000A2C0A8F00A0EA96FCDDF300E0024A76F8D
:10151000300E0124A66FA4C000F0A3A702D0A3AF91
:10152000A395A3B90BD0A3AF22D0A3B520D000C000
:10153000A5F0A3B31CD000C0A6F019D0300EA55D55
:1015400016E100C0A5F0200EA46FA3A704D0A395B8
:10155000A383A3AFA393300EA65D09E100C0A6F05C
:10156000200EA56FA3A7F7D7A393A3AFA391A3A51D
:1015700003D0A4C0A8F074DFA3A303D0A5C0A8F033
:101580006FDFA3A103D0A6C0A8F06ADFA7C0A8F0B0
:1015900067DF000C9E6B9E511EEC01F09E2B006ECF
:1015A000A86F5EDF0D0E9E5DF6E1010EA96F020EC3
:1015B000AA6F45DF450EA86F53DF530EA86F50DFAB
:1015C000430EA86F4DDF958083A040D0050EA96F14
:1015D000020EAA6F34DF92908970640EA96F12DE3A
:1015E000FF0E936E000E81B0010E9E6FFF0E936E84
:1015F000000E81B2010E9F6FFF0E936E000E81B43C
:10160000010EA06FFF0E936E000E81B6010EA16F4A
:101610009EC0A2F01F0EA36F59DF200EA86F20DF1F
:101620009FC0A2F01F0EA36F51DF200EA86F18DF1E
:10163000A0C0A2F01F0EA36F49DF200EA86F10DF1D
:10164000A1C0A2F01F0EA36F41DFBDD7B6EF0EF011
:10165000010EA15F0CE3EA6AA10EE96EEF5007E00C
:10166000020E006E002EFED700D0EF2EF9D743EF0A
:101670000BF09E519F110EE094908B70040EA06FA2
:10168000C80EA16FE5D7A02FFBD79E51D8B49F07F6
:101690009E07EFD7CCEF0EF0B60E006E036A026A1B
:1016A000016AAA51AB11AC11AD1102E1006A0DD073
:1016B000D89001BE09D0AA37AB37AC37AD37033667
:1016C00002360136002EF4D7019E000CAA51D8B480
:1016D00071D0006EAE51D8B46DD0002604E3810EF7
:1016E000002668E204D07F0E005E64E363E0ABC0D6
:1016F000B2F0AF51B21BAB8FAF8FAD51B103F4CF8E
:10170000B4F0AC51B003F4CF03F0F3CFB3F0B103B6
:10171000F350B427F450B323000E0322AD51B003AD
:10172000F350B427F450B323000E026A03220222BE
:10173000AB51B103F350B327F4500322000E022241
:10174000AB51B003F3500326F4500222000E016A9D
:101750000122AD51AF03F350B327F4500322000E22
:1017600002220122AC51AF03F3500326F4500222AF
:10177000000E0122AB51AF03F3500226F4500122B8
:10178000002A01BE05D0B337033602360136000603
:10179000000EB3AF0AD0032A02220122015005E154
:1017A000025003E1035001E1002AB2BF018EB2AF43
:1017B000019E04D0006A016A026A036A000CBC91AF
:1017C000F2BEBC81F29E91513F0802E23F0E916F42
:1017D0009151912B036A510FE96E000E0320EA6EBE
:1017E000BBC0EFFFF29EBCB1F28E186AF2BE188E3B
:1017F000F29E020EE16F6AEC06F018BEF28E015204
:1018000008E0186AF2BE188EF29ED6EC07F018BEF9
:10181000F28E26EF0CF091513F0815E2186AF2BEE5
:10182000188EF29E020EE16F6AEC06F018BEF28E80
:10183000015208E0186AF2BE188EF29ED6EC07F04C
:1018400018BEF28EE8D7BAC0BBF0B9D7000C006A58
:10185000016A026A036AC26BC36BC46BC56BC15178
:10186000C011BF11BE112CE0200EC66FD890BA3740
:10187000BB37BC37BD37C237C337C437C537C15193
:10188000C55D08E1C051C45D05E1BF51C35D02E122
:10189000BE51C25D0FE3BE51C25FBF51D8A0BF3D74
:1018A000C35FC051D8A0C03DC45FC151D8A0C13DE5
:1018B000C55FD8800036013602360336C62FD6D72C
:1018C000EA6AC20EE96E000CE950B26FB1AF0DD0FA
:1018D000B207B28BAE1FAF1FB01FB11FAE2BD8B473
:1018E000AF2BD8B4B02BD8B4B12B3B0EB96F9A0E36
:1018F000B86FCA0EB76FB66B0A0EB46FB1C0BDF049
:10190000B0C0BCF0AFC0BBF0AEC0BAF0B9C0C1F05F
:10191000B8C0C0F0B7C0BFF0B6C0BEF098DF01508D
:10192000EFCFAEF0ECCFAFF0ECCFB0F0ECCFB1F04A
:1019300000520FE1B451010A0CE0B2510CE00F0B60
:10194000B45D01E024E2B2BF22D0B2BD04D0200ECB
:101950001AD0200EB217B2AB09D0B29B00C0B2F0C1
:101960002D0EBA6F58DFB2C000F0B26B300EB2ABC2
:101970000AD0B29B00C0B2F02D0EBA6F4CDFB2C0DD
:1019800000F0B26B300E002600C0BAF044DFB9C0E0
:10199000BDF0B8C0BCF0B7C0BBF0B6C0BAF0C16B08
:1019A000C06BBF6B0A0EBE6F52DF03C0B9F002C03E
:1019B000B8F001C0B7F000C0B6F0B42F9FD7F2EF77
:1019C0000DF0EACFB6F0E9CFB5F0AFAF08D0B58FE4
:1019D000B5A9B52BAE1FAF1FAE2BD8B4AF2BAF3907
:1019E000F009B16FB127E20FB26F320FB46FAF5190
:1019F0000F0BB227B227B427E90FB36FB327B32772
:101A0000AE390F0BB327B427B337B437B41FB4378D
:101A1000AE510F0BB427B137070EB06F0A0EB307E4
:101A2000B427FDE3B207B327FDE3B107B227FDE317
:101A3000B007B127FDE3EA6AB00EE96E070EB515EF
:101A4000B59DE906B51507E1B5B9E92AB5B903D0E1
:101A5000200E006E1CD0E926B40EE95CD8B4B58D1A
:101A6000EF50006E08E1B5BD06D0B5B91BD0B5B7D3
:101A700002D0200E0BD0B5AF06D02D0E006EED506B
:101A8000B59DB59F04D0B587B599300E0026EACF35
:101A9000AFF0E9CFAEF000C0BAF0BDDEAFC0EAFFF4
:101AA000AEC0E9FFEE50B5ADD7D7000C1DC0ADF00C
:101AB0001CC0ACF01BC0ABF01AC0AAF0EDDD03C037
:101AC000ADF002C0ACF001C0ABF000C0AAF06B0EEC
:101AD000B16FF60EB06F320EAF6F6E0EAE6FF6DDF9
:101AE00000C09EF001C09FF002C0A0F003C0A1F0B2
:101AF00021C0ADF020C0ACF01FC0ABF01EC0AAF0FA
:101B0000CBDD03C0ADF002C0ACF001C0ABF000C053
:101B1000AAF06B0EB16FF60EB06F320EAF6F6E0E95
:101B2000AE6FD4DD00C0A2F001C0A3F002C0A4F0EB
:101B300003C0A5F025C0ADF024C0ACF023C0ABF0CD
:101B400022C0AAF0A9DD03C0ADF002C0ACF001C014
:101B5000ABF000C0AAF06B0EB16FF60EB06F320E94
:101B6000AF6F6E0EAE6FB2DD00C0A6F001C0A7F081
:101B700002C0A8F003C0A9F029C0ADF028C0ACF0A5
:101B800027C0ABF026C0AAF087DD03C0ADF002C0CD
:101B9000ACF001C0ABF000C0AAF06B0EB16FF60E56
:101BA000B06F320EAF6F6E0EAE6F90DD00C0AAF058
:101BB00001C0ABF002C0ACF003C0ADF00A0EBA6FCA
:101BC0002ADE0D0EBA6F27DE200EBA6F24DE050E58
:101BD000E96E31C0B1F030C0B0F02FC0AFF02EC010
:101BE000AEF072D6200EBA6F16DE010EE96E9FC0FF
:101BF000AFF09EC0AEF0E5DE200EBA6F0CDE010E37
:101C0000E96EA3C0AFF0A2C0AEF0DBDE200EBA6F6B
:101C100002DE010EE96EA7C0AFF0A6C0AEF0D1DEC5
:101C2000200EBA6FF8DD010EE96EABC0AFF0AAC0AE
:101C3000AEF0C7DE5DEF0FF0F86AD09E088EEA6A5C
:101C4000E96AB886E10EAF6E040EB06EA60EAC6EF9
:101C5000900EAB6EC150C00B0F09C16E070EB46E73
:101C6000366A040E376E0C0E386E396A3D6A916B17
:101C7000986BC150C00B0F09C16EF19EC290B09815
:101C8000C69A949E93809392010EC66E000EC76E04
:101C9000D190870ED56ECD6A000ECA6E000ECB6E47
:101CA000B16A070EB46E9250926E270E006E002E2F
:101CB000FED700D0B450A19CB56AF28AABEF09F010
:101CC00018EF0AF0010EA96FAA6F1FEC0AF09E6BC5
:101CD0009E5132EC01F09E2B006EA86F30EC0AF0A2
:101CE0000E0E9E5DF5E1010EA96F020EAA6F1FECAC
:101CF0000AF09E6B9E5147EC01F09E2B006EA86F80
:101D000030EC0AF00D0E9E5DF5E1040E9E6FFA0EAA
:101D1000A96F02EC09F09E2FFAD7010EA96FAA6FE6
:101D20001FEC0AF09E6B9E515BEC01F09E2B006E47
:101D3000A86F30EC0AF0140E9E5DF5E1010EA96F5C
:101D4000020EAA6F1FEC0AF09E6B9E5173EC01F01D
:101D50009E2B006EA86F30EC0AF0040E9E5DF5E13C
:101D600095B105D0958083B001D014D4F9D7010E78
:101D7000A96FAA6F1FEC0AF09E6B9E5183EC01F0D5
:101D80009E2B006EA86F30EC0AF0110E9E5DF5E1FF
:101D90009F6B0A0E9E6F6DD4316A306A2F6A2E6A6D
:101DA000010E2E26D8B02F2AD8B4302AD8B4312A22
:101DB0009E6B9E5199EC01F09E2B006EA86F30EC4B
:101DC0000AF0070E9E5DF5E11D6A1C6A1B6A1A6A1D
:101DD000216A206A1F6A1E6A256A246A236A226AA7
:101DE000296A286A276A266AFF0E936E8150995DD8
:101DF00002E1000E00D0958083B0FDD79E6B9E510E
:101E0000AAEC01F09E2B006EA86F30EC0AF0090ED0
:101E10009E5DF5E12D6A2C6A2B6A2A6AD76AD66A1A
:101E2000C00EF212196A9D6B1950030841E39582A6
:101E300083A23ED0FF0E936E81CF9AF09A51995DA6
:101E400032E0D6509B6FD7CF9CF099519A199E6F74
:101E5000006E1950016E04E0D8900032012EFCD7BC
:101E600000A018D01950040DF350036A1A0FE96E40
:101E7000000E0320EA6EA16BA26B9B51A125EF6EB1
:101E80009C51A221EC6E000E2A20EC6E000E2B203D
:101E9000EC6E02D0010E9D6F2D6A2C6A2B6A2A6AA5
:101EA000D76AD66A192AFF0E936E81CF99F0BCD7F4
:0E1EB0009D2D02D002EF00F0F9D572D703008D
:020000040030CA
:0E00000024CE390E0005A1000FC00FE00F4006
:00000001FF
;PIC18F4550
;CRC=D8D1 CREATED="03-I-10 13:21"
;CRC=10C2 CREATED="24-I-10 00:38"
/Designs/STOPWATCH02A/SW/main.pjt
17,17 → 17,17
0=0000 %S 0 0 796 451 3 0
[Opened Files]
1=main.c
2=
3=
4=
5=C:\Program Files\PICC\drivers\pic18_usb.h
6=C:\Program Files\PICC\drivers\usb_hw_layer.h
7=C:\Program Files\PICC\drivers\usb_desc_cdc.h
8=C:\Program Files\PICC\drivers\usb.h
9=C:\Program Files\PICC\drivers\usb.c
10=C:\Program Files\PICC\drivers\pic18_usb.c
11=C:\Program Files\PICC\drivers\ctype.h
12=C:\Program Files\PICC\drivers\lcd.c
2=main.h
3=C:\Program Files\PICC\devices\18F4550.h
4=C:\Program Files\PICC\drivers\lcd.c
5=C:\Program Files\PICC\drivers\usb_cdc.h
6=C:\Program Files\PICC\drivers\pic18_usb.h
7=C:\Program Files\PICC\drivers\usb_hw_layer.h
8=C:\Program Files\PICC\drivers\usb_desc_cdc.h
9=C:\Program Files\PICC\drivers\usb.h
10=C:\Program Files\PICC\drivers\usb.c
11=C:\Program Files\PICC\drivers\pic18_usb.c
12=C:\Program Files\PICC\drivers\ctype.h
13=
[Target Data]
OptionString=-p +FH
/Designs/STOPWATCH02A/SW/test/main.c
9,17 → 9,17
Output_low(LED2);
}
 
#int_RB
/*#int_RB
void RB_isr(void)
{
output_high(LED2);
output_toggle(PIN_B2);
input_b();
}
output_high(LED2);
}*/
 
 
void main()
{
unsigned int8 last;
 
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
32,16 → 32,18
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
set_tris_b(0xFF);
port_b_pullups(TRUE);
 
enable_interrupts(INT_TIMER0);
enable_interrupts(INT_RB);
// enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
 
last=input_b();
while(true)
{
Output_toggle(LED1);
Delay_ms(100);
if(last!=Input_b()) output_high(LED2);
last=input_b();
}
}
/Designs/STOPWATCH02A/SW/test/main.hex
1,31 → 1,31
:020000040000FA
:0400000077EF00F0A6
:0400000068EF00F0B5
:08000800056ED8CF06F0E0CF31
:1000100007F00001E9CF0DF0EACF08F0E1CF09F0D9
:10002000E2CF0AF0D9CF0BF0DACF0CF0F3CF14F017
:10003000F4CF15F0FACF16F000C00FF001C010F0A9
:1000400002C011F003C012F004C013F0F2AA2CEFAA
:1000500000F0F2B455EF00F0F2A632EF00F0F2B08B
:100060005AEF00F00FC000F010C001F011C002F014
:1000700012C003F013C004F00DC0E9FF08C0EAFF8E
:10008000088E09C0E1FF0AC0E2FF0BC0D9FF0CC017
:10009000DAFF14C0F3FF15C0F4FF16C0FAFF0550D5
:1000A00007C0E0FF06C0D8FF100092948994F29434
:1000B00032EF00F09294898493948A74FF0E936EC9
:1000C000F29032EF00F0EA6A180EE96EEF500DE0A0
:1000D000020E016E006A002EFED7012EFBD7970E8E
:1000E000006E002EFED7EF2EF3D7BCEF00F0F86ABB
:1000F000D09E088EEA6AE96A700ED36ED350B89625
:100100000C0EAF6EA20EAC6E900EAB6EC150C00B5B
:100110000F09C16E070EB46EC150C00B0F09C16E3E
:10012000C290B098C69A949E93809392010EC66E28
:10013000000EC76ED190810ED56ECD6A000ECA6ECC
:10014000000ECB6EB70EB16E070EB46E9250926E6B
:10015000060E006E002EFED70000B450A19CB56ABA
:10016000FF0E936EF19EF28AF286C00EF212929208
:0C0170008972640E186EA7D7FAD703003E
:1000500000F0F2B44FEF00F00FC000F010C001F05C
:1000600011C002F012C003F013C004F00DC0E9FF8C
:1000700008C0EAFF088E09C0E1FF0AC0E2FF0BC01A
:10008000D9FF0CC0DAFF14C0F3FF15C0F4FF16C08F
:10009000FAFF055007C0E0FF06C0D8FF1000929499
:1000A0008994F2942CEF00F0EA6A190EE96EEF5091
:1000B0000DE0020E016E006A002EFED7012EFBD766
:1000C000970E006E002EFED7EF2EF3D7AEEF00F0A6
:1000D000F86AD09E088EEA6AE96A700ED36ED35031
:1000E000B8960C0EAF6EA20EAC6E900EAB6EC150F9
:1000F000C00B0F09C16E070EB46EC150C00B0F09C3
:10010000C16EC290B098C69A949E93809392010E4D
:10011000C66E000EC76ED190810ED56ECD6A000EF0
:10012000CA6E000ECB6EB70EB16E070EB46E925053
:10013000926E060E006E002EFED70000B450A19CF9
:10014000B56AF19EF28AC00EF212FF0E936E81CF55
:1001500018F092928972640E196EA6D7FF0E936EF4
:100160008150185C02E092948984FF0E936E81CFD7
:0601700018F0EFD70300B8
:020000040030CA
:0E0000003FC8190E008781000FC00FE00F40AF
:00000001FF
;PIC18F4550
;CRC=E3C3 CREATED="20-I-10 01:41"
;CRC=9481 CREATED="23-I-10 18:55"
/Designs/STOPWATCH02A/SW/test/main.lst
1,15 → 1,15
CCS PCH C Compiler, Version 4.090, 47914 20-I-10 01:41
CCS PCH C Compiler, Version 4.090, 47914 23-I-10 18:55
 
Filename: D:\MLAB\Designs\STOPWATCH02A\SW\test\main.lst
 
ROM used: 376 bytes (1%)
Largest free fragment is 32388
RAM used: 24 (1%) at main() level
25 (1%) worst case
ROM used: 370 bytes (1%)
Largest free fragment is 32394
RAM used: 25 (1%) at main() level
26 (1%) worst case
Stack: 2 worst case (1 in main + 1 for interrupts)
 
*
0000: GOTO 00EE
0000: GOTO 00D0
*
0008: MOVWF 05
000A: MOVFF FD8,06
32,30 → 32,26
004C: BTFSS FF2.5
004E: GOTO 0058
0052: BTFSC FF2.2
0054: GOTO 00AA
0058: BTFSS FF2.3
005A: GOTO 0064
005E: BTFSC FF2.0
0060: GOTO 00B4
0064: MOVFF 0F,00
0068: MOVFF 10,01
006C: MOVFF 11,02
0070: MOVFF 12,03
0074: MOVFF 13,04
0078: MOVFF 0D,FE9
007C: MOVFF 08,FEA
0080: BSF 08.7
0082: MOVFF 09,FE1
0086: MOVFF 0A,FE2
008A: MOVFF 0B,FD9
008E: MOVFF 0C,FDA
0092: MOVFF 14,FF3
0096: MOVFF 15,FF4
009A: MOVFF 16,FFA
009E: MOVF 05,W
00A0: MOVFF 07,FE0
00A4: MOVFF 06,FD8
00A8: RETFIE 0
0054: GOTO 009E
0058: MOVFF 0F,00
005C: MOVFF 10,01
0060: MOVFF 11,02
0064: MOVFF 12,03
0068: MOVFF 13,04
006C: MOVFF 0D,FE9
0070: MOVFF 08,FEA
0074: BSF 08.7
0076: MOVFF 09,FE1
007A: MOVFF 0A,FE2
007E: MOVFF 0B,FD9
0082: MOVFF 0C,FDA
0086: MOVFF 14,FF3
008A: MOVFF 15,FF4
008E: MOVFF 16,FFA
0092: MOVF 05,W
0094: MOVFF 07,FE0
0098: MOVFF 06,FD8
009C: RETFIE 0
.................... #include "D:\MLAB\Designs\STOPWATCH02A\SW\test\main.h"
.................... #include <18F4550.h>
.................... //////// Standard Header file for the PIC18F4550 device ////////////////
96,25 → 92,25
....................
.................... #use delay(clock=8000000)
*
00C6: CLRF FEA
00C8: MOVLW 18
00CA: MOVWF FE9
00CC: MOVF FEF,W
00CE: BZ 00EA
00D0: MOVLW 02
00D2: MOVWF 01
00D4: CLRF 00
00D6: DECFSZ 00,F
00D8: BRA 00D6
00DA: DECFSZ 01,F
00DC: BRA 00D4
00DE: MOVLW 97
00E0: MOVWF 00
00E2: DECFSZ 00,F
00E4: BRA 00E2
00E6: DECFSZ FEF,F
00E8: BRA 00D0
00EA: GOTO 0178 (RETURN)
00A8: CLRF FEA
00AA: MOVLW 19
00AC: MOVWF FE9
00AE: MOVF FEF,W
00B0: BZ 00CC
00B2: MOVLW 02
00B4: MOVWF 01
00B6: CLRF 00
00B8: DECFSZ 00,F
00BA: BRA 00B8
00BC: DECFSZ 01,F
00BE: BRA 00B6
00C0: MOVLW 97
00C2: MOVWF 00
00C4: DECFSZ 00,F
00C6: BRA 00C4
00C8: DECFSZ FEF,F
00CA: BRA 00B2
00CC: GOTO 015C (RETURN)
.................... #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
....................
....................
127,128 → 123,133
.................... {
.................... Output_low(LED2);
*
00AA: BCF F92.2
00AC: BCF F89.2
009E: BCF F92.2
00A0: BCF F89.2
.................... }
....................
00AE: BCF FF2.2
00B0: GOTO 0064
.................... #int_RB
.................... /*#int_RB
.................... void RB_isr(void)
.................... {
.................... output_high(LED2);
00B4: BCF F92.2
00B6: BSF F89.2
.................... output_toggle(PIN_B2);
00B8: BCF F93.2
00BA: BTG F8A.2
.................... input_b();
00BC: MOVLW FF
00BE: MOVWF F93
.................... }
.................... output_high(LED2);
.................... }*/
....................
....................
00C0: BCF FF2.0
00C2: GOTO 0064
00A2: BCF FF2.2
00A4: GOTO 0058
.................... void main()
.................... {
*
00EE: CLRF FF8
00F0: BCF FD0.7
00F2: BSF 08.7
00F4: CLRF FEA
00F6: CLRF FE9
00F8: MOVLW 70
00FA: MOVWF FD3
00FC: MOVF FD3,W
00FE: BCF FB8.3
0100: MOVLW 0C
0102: MOVWF FAF
0104: MOVLW A2
0106: MOVWF FAC
0108: MOVLW 90
010A: MOVWF FAB
010C: MOVF FC1,W
010E: ANDLW C0
0110: IORLW 0F
0112: MOVWF FC1
0114: MOVLW 07
0116: MOVWF FB4
00D0: CLRF FF8
00D2: BCF FD0.7
00D4: BSF 08.7
00D6: CLRF FEA
00D8: CLRF FE9
00DA: MOVLW 70
00DC: MOVWF FD3
00DE: MOVF FD3,W
00E0: BCF FB8.3
00E2: MOVLW 0C
00E4: MOVWF FAF
00E6: MOVLW A2
00E8: MOVWF FAC
00EA: MOVLW 90
00EC: MOVWF FAB
00EE: MOVF FC1,W
00F0: ANDLW C0
00F2: IORLW 0F
00F4: MOVWF FC1
00F6: MOVLW 07
00F8: MOVWF FB4
.................... unsigned int8 last;
....................
.................... setup_adc_ports(NO_ANALOGS|VSS_VDD);
0118: MOVF FC1,W
011A: ANDLW C0
011C: IORLW 0F
011E: MOVWF FC1
00FA: MOVF FC1,W
00FC: ANDLW C0
00FE: IORLW 0F
0100: MOVWF FC1
.................... setup_adc(ADC_OFF);
0120: BCF FC2.0
0102: BCF FC2.0
.................... setup_psp(PSP_DISABLED);
0122: BCF FB0.4
0104: BCF FB0.4
.................... setup_spi(SPI_SS_DISABLED);
0124: BCF FC6.5
0126: BCF F94.7
0128: BSF F93.0
012A: BCF F93.1
012C: MOVLW 01
012E: MOVWF FC6
0130: MOVLW 00
0132: MOVWF FC7
0106: BCF FC6.5
0108: BCF F94.7
010A: BSF F93.0
010C: BCF F93.1
010E: MOVLW 01
0110: MOVWF FC6
0112: MOVLW 00
0114: MOVWF FC7
.................... setup_wdt(WDT_OFF);
0134: BCF FD1.0
0116: BCF FD1.0
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4);
0136: MOVLW 81
0138: MOVWF FD5
0118: MOVLW 81
011A: MOVWF FD5
.................... setup_timer_1(T1_DISABLED);
013A: CLRF FCD
011C: CLRF FCD
.................... setup_timer_2(T2_DISABLED,0,1);
013C: MOVLW 00
013E: MOVWF FCA
0140: MOVLW 00
0142: MOVWF FCB
011E: MOVLW 00
0120: MOVWF FCA
0122: MOVLW 00
0124: MOVWF FCB
.................... setup_timer_3(T3_EXTERNAL|T3_DIV_BY_8);
0144: MOVLW B7
0146: MOVWF FB1
0126: MOVLW B7
0128: MOVWF FB1
.................... setup_comparator(NC_NC_NC_NC);
0148: MOVLW 07
014A: MOVWF FB4
014C: MOVF F92,W
014E: MOVWF F92
0150: MOVLW 06
0152: MOVWF 00
0154: DECFSZ 00,F
0156: BRA 0154
0158: NOP
015A: MOVF FB4,W
015C: BCF FA1.6
012A: MOVLW 07
012C: MOVWF FB4
012E: MOVF F92,W
0130: MOVWF F92
0132: MOVLW 06
0134: MOVWF 00
0136: DECFSZ 00,F
0138: BRA 0136
013A: NOP
013C: MOVF FB4,W
013E: BCF FA1.6
.................... setup_vref(FALSE);
015E: CLRF FB5
0140: CLRF FB5
....................
.................... set_tris_b(0xFF);
0160: MOVLW FF
0162: MOVWF F93
.................... port_b_pullups(TRUE);
0164: BCF FF1.7
0142: BCF FF1.7
....................
.................... enable_interrupts(INT_TIMER0);
0166: BSF FF2.5
.................... enable_interrupts(INT_RB);
0168: BSF FF2.3
0144: BSF FF2.5
.................... // enable_interrupts(INT_RB);
.................... enable_interrupts(GLOBAL);
016A: MOVLW C0
016C: IORWF FF2,F
0146: MOVLW C0
0148: IORWF FF2,F
....................
.................... last=input_b();
014A: MOVLW FF
014C: MOVWF F93
014E: MOVFF F81,18
....................
.................... while(true)
.................... {
.................... Output_toggle(LED1);
016E: BCF F92.1
0170: BTG F89.1
0152: BCF F92.1
0154: BTG F89.1
.................... Delay_ms(100);
0172: MOVLW 64
0174: MOVWF 18
0176: BRA 00C6
0156: MOVLW 64
0158: MOVWF 19
015A: BRA 00A8
.................... if(last!=Input_b()) output_high(LED2);
015C: MOVLW FF
015E: MOVWF F93
0160: MOVF F81,W
0162: SUBWF 18,W
0164: BZ 016A
0166: BCF F92.2
0168: BSF F89.2
.................... last=input_b();
016A: MOVLW FF
016C: MOVWF F93
016E: MOVFF F81,18
.................... }
0178: BRA 016E
0172: BRA 0152
.................... }
017A: SLEEP
0174: SLEEP
 
Configuration Fuses:
Word 1: C83F INTRC_IO IESO FCMEN PLL12 CPUDIV4 USBDIV