CCS PCM C Compiler, Version 4.106, 47914 22-5-13 12:34Filename: D:\Honza\MLAB\Designs\Measuring_instruments\GM_counter\SW\counter\main.lstROM used: 2825 words (34%)Largest free fragment is 2048RAM used: 36 (10%) at main() level55 (15%) worst caseStack: 6 worst case (5 in main + 1 for interrupts)*0000: MOVLW 080001: MOVWF 0A0002: GOTO 0000003: NOP0004: MOVWF 7F0005: SWAPF 03,W0006: CLRF 030007: MOVWF 210008: MOVF 0A,W0009: MOVWF 20000A: CLRF 0A000B: MOVF 04,W000C: MOVWF 22000D: MOVF 77,W000E: MOVWF 23000F: MOVF 78,W0010: MOVWF 240011: MOVF 79,W0012: MOVWF 250013: MOVF 7A,W0014: MOVWF 260015: BCF 03.70016: BCF 03.50017: BTFSS 0B.50018: GOTO 01B0019: BTFSC 0B.2001A: GOTO 032001B: MOVLW 8C001C: MOVWF 04001D: BTFSS 00.0001E: GOTO 021001F: BTFSC 0C.00020: GOTO 0350021: MOVF 22,W0022: MOVWF 040023: MOVF 23,W0024: MOVWF 770025: MOVF 24,W0026: MOVWF 780027: MOVF 25,W0028: MOVWF 790029: MOVF 26,W002A: MOVWF 7A002B: MOVF 20,W002C: MOVWF 0A002D: SWAPF 21,W002E: MOVWF 03002F: SWAPF 7F,F0030: SWAPF 7F,W0031: RETFIE0032: BCF 0A.30033: BCF 0A.40034: GOTO 0400035: BCF 0A.30036: BCF 0A.40037: GOTO 047.................... #include ".\main.h".................... #include <16F887.h>.................... //////// Standard Header file for the PIC16F887 device ////////////////.................... #device PIC16F887.................... #list........................................ #device adc=10........................................ #FUSES NOWDT //No Watch Dog Timer.................... #FUSES INTRC //Internal RC Osc.................... #FUSES NOPUT //No Power Up Timer.................... #FUSES MCLR //Master Clear pin enabled.................... #FUSES NOPROTECT //Code not protected from reading.................... #FUSES NOCPD //No EE protection.................... #FUSES NOBROWNOUT //No brownout reset.................... #FUSES IESO //Internal External Switch Over mode enabled.................... #FUSES FCMEN //Fail-safe clock monitor enabled.................... #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O.................... #FUSES NODEBUG //No Debug mode for ICD.................... #FUSES NOWRT //Program memory not write protected.................... #FUSES BORV40 //Brownout reset at 4.0V........................................ #use delay(clock=8000000)*00A9: MOVLW 4600AA: MOVWF 0400AB: BCF 03.700AC: MOVF 00,W00AD: BTFSC 03.200AE: GOTO 0BC00AF: MOVLW 0200B0: MOVWF 7800B1: CLRF 7700B2: DECFSZ 77,F00B3: GOTO 0B200B4: DECFSZ 78,F00B5: GOTO 0B100B6: MOVLW 9700B7: MOVWF 7700B8: DECFSZ 77,F00B9: GOTO 0B800BA: DECFSZ 00,F00BB: GOTO 0AF00BC: RETURN*05FC: MOVLW 0805FD: SUBWF 40,F05FE: BTFSS 03.005FF: GOTO 60C0600: MOVLW 400601: MOVWF 040602: BCF 03.70603: BCF 03.00604: RRF 00,F0605: MOVF 00,W0606: BTFSC 03.20607: GOTO 60C0608: GOTO 60A0609: NOP060A: DECFSZ 00,F060B: GOTO 609060C: RETURN.................... #use rs232(baud=9600,parity=N,xmit=PIN_B7,rcv=PIN_B6,bits=8)*0235: BSF 03.50236: BCF 06.70237: BCF 03.50238: BCF 06.70239: MOVLW 08023A: MOVWF 78023B: GOTO 23C023C: NOP023D: BSF 78.7023E: GOTO 24D023F: BCF 78.70240: RRF 45,F0241: BTFSC 03.00242: BSF 06.70243: BTFSS 03.00244: BCF 06.70245: BSF 78.60246: GOTO 24D0247: BCF 78.60248: DECFSZ 78,F0249: GOTO 240024A: GOTO 24B024B: NOP024C: BSF 06.7024D: MOVLW 3F024E: MOVWF 04024F: DECFSZ 04,F0250: GOTO 24F0251: NOP0252: BTFSC 78.70253: GOTO 23F0254: BTFSC 78.60255: GOTO 2470256: RETURN................................................................................ #define LED1 PIN_C6 //CHANGE PIN_XX TO YOUR LED PIN NUMBER, EX: PIN_A5.................... #define LED2 PIN_C5 //CHANGE PIN_XX TO YOUR LED PIN NUMBER, EX: PIN_A5.................... #define LED3 PIN_C4 // pulse detect.................... #define LED4 PIN_D3 //CHANGE PIN_XX TO YOUR LED PIN NUMBER........................................ #define S1 PIN_C2 // raw up.................... #define S2 PIN_C3 // raw down.................... #define S3 PIN_D0 // fine up.................... #define S4 PIN_D1 // fine down.................... #define S5 PIN_B1 // time setup.................... #define S6 PIN_B2 // treshold setup........................................ #define BEEP PIN_D2 //piezo beeper........................................ #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>.................... ///////////////////////////////////////////////////////////////////////////////.................... //// LCD.C ////.................... //// Driver for common LCD modules ////.................... //// ////.................... //// lcd_init() Must be called before any other function. ////.................... //// ////.................... //// lcd_putc(c) Will display c on the next position of the LCD. ////.................... //// \a Set cursor position to upper left ////.................... //// \f Clear display, set cursor to upper left ////.................... //// \n Go to start of second line ////.................... //// \b Move back one position ////.................... //// If LCD_EXTENDED_NEWLINE is defined, the \n character ////.................... //// will erase all remanining characters on the current ////.................... //// line, and move the cursor to the beginning of the next ////.................... //// line. ////.................... //// If LCD_EXTENDED_NEWLINE is defined, the \r character ////.................... //// will move the cursor to the start of the current ////.................... //// line. ////.................... //// ////.................... //// lcd_gotoxy(x,y) Set write position on LCD (upper left is 1,1) ////.................... //// ////.................... //// lcd_getc(x,y) Returns character at position x,y on LCD ////.................... //// ////.................... //// CONFIGURATION ////.................... //// The LCD can be configured in one of two ways: a.) port access or ////.................... //// b.) pin access. Port access requires the entire 7 bit interface ////.................... //// connected to one GPIO port, and the data bits (D4:D7 of the LCD) ////.................... //// connected to sequential pins on the GPIO. Pin access ////.................... //// has no requirements, all 7 bits of the control interface can ////.................... //// can be connected to any GPIO using several ports. ////.................... //// ////.................... //// To use port access, #define LCD_DATA_PORT to the SFR location of ////.................... //// of the GPIO port that holds the interface, -AND- edit LCD_PIN_MAP ////.................... //// of this file to configure the pin order. If you are using a ////.................... //// baseline PIC (PCB), then LCD_OUTPUT_MAP and LCD_INPUT_MAP also must ////.................... //// be defined. ////.................... //// ////.................... //// Example of port access: ////.................... //// #define LCD_DATA_PORT getenv("SFR:PORTD") ////.................... //// ////.................... //// To use pin access, the following pins must be defined: ////.................... //// LCD_ENABLE_PIN ////.................... //// LCD_RS_PIN ////.................... //// LCD_RW_PIN ////.................... //// LCD_DATA4 ////.................... //// LCD_DATA5 ////.................... //// LCD_DATA6 ////.................... //// LCD_DATA7 ////.................... //// ////.................... //// Example of pin access: ////.................... //// #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 ////.................... //// ////.................... ///////////////////////////////////////////////////////////////////////////////.................... //// (C) Copyright 1996,2010 Custom Computer Services ////.................... //// This source code may only be used by licensed users of the CCS C ////.................... //// compiler. This source code may only be distributed to other ////.................... //// licensed users of the CCS C compiler. No other use, reproduction ////.................... //// or distribution is permitted without written permission. ////.................... //// Derivative programs created using this software in object code ////.................... //// form are not restricted in any way. ////.................... ///////////////////////////////////////////////////////////////////////////........................................ // define the pinout..................... // only required if port access is being used..................... typedef struct.................... { // This structure is overlayed.................... BOOLEAN enable; // on to an I/O port to gain.................... BOOLEAN rs; // access to the LCD pins..................... BOOLEAN rw; // The bits are allocated from.................... BOOLEAN unused; // low order up. ENABLE will.................... int data : 4; // be LSB pin of that port..................... #if defined(__PCD__) // The port used will be LCD_DATA_PORT..................... int reserved: 8;.................... #endif.................... } LCD_PIN_MAP;........................................ // this is to improve compatability with previous LCD drivers that accepted.................... // a define labeled 'use_portb_lcd' that configured the LCD onto port B..................... #if ((defined(use_portb_lcd)) && (use_portb_lcd==TRUE)).................... #define LCD_DATA_PORT getenv("SFR:PORTB").................... #endif........................................ #if defined(__PCB__).................... // these definitions only need to be modified for baseline PICs..................... // all other PICs use LCD_PIN_MAP or individual LCD_xxx pin definitions..................... /* EN, RS, RW, UNUSED, DATA */.................... const LCD_PIN_MAP LCD_OUTPUT_MAP = {0, 0, 0, 0, 0};.................... const LCD_PIN_MAP LCD_INPUT_MAP = {0, 0, 0, 0, 0xF};.................... #endif........................................ ////////////////////// END CONFIGURATION ///////////////////////////////////........................................ #ifndef LCD_ENABLE_PIN.................... #define lcd_output_enable(x) lcdlat.enable=x.................... #define lcd_enable_tris() lcdtris.enable=0.................... #else.................... #define lcd_output_enable(x) output_bit(LCD_ENABLE_PIN, x).................... #define lcd_enable_tris() output_drive(LCD_ENABLE_PIN).................... #endif........................................ #ifndef LCD_RS_PIN.................... #define lcd_output_rs(x) lcdlat.rs=x.................... #define lcd_rs_tris() lcdtris.rs=0.................... #else.................... #define lcd_output_rs(x) output_bit(LCD_RS_PIN, x).................... #define lcd_rs_tris() output_drive(LCD_RS_PIN).................... #endif........................................ #ifndef LCD_RW_PIN.................... #define lcd_output_rw(x) lcdlat.rw=x.................... #define lcd_rw_tris() lcdtris.rw=0.................... #else.................... #define lcd_output_rw(x) output_bit(LCD_RW_PIN, x).................... #define lcd_rw_tris() output_drive(LCD_RW_PIN).................... #endif........................................ // original version of this library incorrectly labeled LCD_DATA0 as LCD_DATA4,.................... // LCD_DATA1 as LCD_DATA5, and so on. this block of code makes the driver.................... // compatible with any code written for the original library.................... #if (defined(LCD_DATA0) && defined(LCD_DATA1) && defined(LCD_DATA2) && defined(LCD_DATA3) && !defined(LCD_DATA4) && !defined(LCD_DATA5) && !defined(LCD_DATA6) && !defined(LCD_DATA7)).................... #define LCD_DATA4 LCD_DATA0.................... #define LCD_DATA5 LCD_DATA1.................... #define LCD_DATA6 LCD_DATA2.................... #define LCD_DATA7 LCD_DATA3.................... #endif........................................ #ifndef LCD_DATA4.................... #ifndef LCD_DATA_PORT.................... #if defined(__PCB__).................... #define LCD_DATA_PORT 0x06 //portb.................... #define set_tris_lcd(x) set_tris_b(x).................... #else.................... #if defined(PIN_D0).................... #define LCD_DATA_PORT getenv("SFR:PORTD") //portd.................... #else.................... #define LCD_DATA_PORT getenv("SFR:PORTB") //portb.................... #endif.................... #endif.................... #endif........................................ #if defined(__PCB__).................... LCD_PIN_MAP lcd, lcdlat;.................... #byte lcd = LCD_DATA_PORT.................... #byte lcdlat = LCD_DATA_PORT.................... #elif defined(__PCM__).................... LCD_PIN_MAP lcd, lcdlat, lcdtris;.................... #byte lcd = LCD_DATA_PORT.................... #byte lcdlat = LCD_DATA_PORT.................... #byte lcdtris = LCD_DATA_PORT+0x80.................... #elif defined(__PCH__).................... LCD_PIN_MAP lcd, lcdlat, lcdtris;.................... #byte lcd = LCD_DATA_PORT.................... #byte lcdlat = LCD_DATA_PORT+9.................... #byte lcdtris = LCD_DATA_PORT+0x12.................... #elif defined(__PCD__).................... LCD_PIN_MAP lcd, lcdlat, lcdtris;.................... #word lcd = LCD_DATA_PORT.................... #word lcdlat = LCD_DATA_PORT+2.................... #word lcdtris = LCD_DATA_PORT-0x02.................... #endif.................... #endif //LCD_DATA4 not defined........................................ #ifndef LCD_TYPE.................... #define LCD_TYPE 2 // 0=5x7, 1=5x10, 2=2 lines.................... #endif........................................ #ifndef LCD_LINE_TWO.................... #define LCD_LINE_TWO 0x40 // LCD RAM address for the second line.................... #endif........................................ #ifndef LCD_LINE_LENGTH.................... #define LCD_LINE_LENGTH 20.................... #endif........................................ BYTE const LCD_INIT_STRING[4] = {0x20 | (LCD_TYPE << 2), 0xc, 1, 6};.................... // These bytes need to be sent to the LCD.................... // to start it up......................................... BYTE lcd_read_nibble(void);........................................ BYTE lcd_read_byte(void).................... {.................... BYTE low,high;........................................ #if defined(__PCB__).................... set_tris_lcd(LCD_INPUT_MAP);.................... #else.................... #if (defined(LCD_DATA4) && defined(LCD_DATA5) && defined(LCD_DATA6) && defined(LCD_DATA7)).................... output_float(LCD_DATA4);*0122: BSF 08.4.................... output_float(LCD_DATA5);0123: BSF 08.5.................... output_float(LCD_DATA6);0124: BSF 08.6.................... output_float(LCD_DATA7);0125: BSF 08.7.................... #else.................... lcdtris.data = 0xF;.................... #endif.................... #endif........................................ lcd_output_rw(1);0126: BCF 03.50127: BSF 09.20128: BSF 03.50129: BCF 09.2.................... delay_cycles(1);012A: NOP.................... lcd_output_enable(1);012B: BCF 03.5012C: BSF 09.0012D: BSF 03.5012E: BCF 09.0.................... delay_cycles(1);012F: NOP.................... high = lcd_read_nibble();0130: BCF 03.50131: CALL 0E90132: MOVF 78,W0133: MOVWF 4D........................................ lcd_output_enable(0);0134: BCF 09.00135: BSF 03.50136: BCF 09.0.................... delay_cycles(1);0137: NOP.................... lcd_output_enable(1);0138: BCF 03.50139: BSF 09.0013A: BSF 03.5013B: BCF 09.0.................... delay_us(1);013C: GOTO 13D.................... low = lcd_read_nibble();013D: BCF 03.5013E: CALL 0E9013F: MOVF 78,W0140: MOVWF 4C........................................ lcd_output_enable(0);0141: BCF 09.00142: BSF 03.50143: BCF 09.0........................................ #if defined(__PCB__).................... set_tris_lcd(LCD_OUTPUT_MAP);.................... #else.................... #if (defined(LCD_DATA4) && defined(LCD_DATA5) && defined(LCD_DATA6) && defined(LCD_DATA7)).................... output_drive(LCD_DATA4);0144: BCF 08.4.................... output_drive(LCD_DATA5);0145: BCF 08.5.................... output_drive(LCD_DATA6);0146: BCF 08.6.................... output_drive(LCD_DATA7);0147: BCF 08.7.................... #else.................... lcdtris.data = 0x0;.................... #endif.................... #endif........................................ return( (high<<4) | low);0148: BCF 03.50149: SWAPF 4D,W014A: MOVWF 77014B: MOVLW F0014C: ANDWF 77,F014D: MOVF 77,W014E: IORWF 4C,W014F: MOVWF 78.................... }........................................ BYTE lcd_read_nibble(void).................... {.................... #if (defined(LCD_DATA4) && defined(LCD_DATA5) && defined(LCD_DATA6) && defined(LCD_DATA7))*00E9: CLRF 4E.................... BYTE n = 0x00;........................................ /* Read the data port */.................... n |= input(LCD_DATA4);00EA: BSF 03.500EB: BSF 08.400EC: MOVLW 0000ED: BCF 03.500EE: BTFSC 08.400EF: MOVLW 0100F0: IORWF 4E,F.................... n |= input(LCD_DATA5) << 1;00F1: BSF 03.500F2: BSF 08.500F3: MOVLW 0000F4: BCF 03.500F5: BTFSC 08.500F6: MOVLW 0100F7: MOVWF 7700F8: BCF 03.000F9: RLF 77,F00FA: MOVF 77,W00FB: IORWF 4E,F.................... n |= input(LCD_DATA6) << 2;00FC: BSF 03.500FD: BSF 08.600FE: MOVLW 0000FF: BCF 03.50100: BTFSC 08.60101: MOVLW 010102: MOVWF 770103: RLF 77,F0104: RLF 77,F0105: MOVLW FC0106: ANDWF 77,F0107: MOVF 77,W0108: IORWF 4E,F.................... n |= input(LCD_DATA7) << 3;0109: BSF 03.5010A: BSF 08.7010B: MOVLW 00010C: BCF 03.5010D: BTFSC 08.7010E: MOVLW 01010F: MOVWF 770110: RLF 77,F0111: RLF 77,F0112: RLF 77,F0113: MOVLW F80114: ANDWF 77,F0115: MOVF 77,W0116: IORWF 4E,F........................................ return(n);0117: MOVF 4E,W0118: MOVWF 78.................... #else.................... return(lcd.data);.................... #endif.................... }0119: RETURN........................................ void lcd_send_nibble(BYTE n).................... {.................... #if (defined(LCD_DATA4) && defined(LCD_DATA5) && defined(LCD_DATA6) && defined(LCD_DATA7)).................... /* Write to the data port */.................... output_bit(LCD_DATA4, bit_test(n, 0));*00BD: BTFSC 4D.000BE: GOTO 0C100BF: BCF 08.400C0: GOTO 0C200C1: BSF 08.400C2: BSF 03.500C3: BCF 08.4.................... output_bit(LCD_DATA5, bit_test(n, 1));00C4: BCF 03.500C5: BTFSC 4D.100C6: GOTO 0C900C7: BCF 08.500C8: GOTO 0CA00C9: BSF 08.500CA: BSF 03.500CB: BCF 08.5.................... output_bit(LCD_DATA6, bit_test(n, 2));00CC: BCF 03.500CD: BTFSC 4D.200CE: GOTO 0D100CF: BCF 08.600D0: GOTO 0D200D1: BSF 08.600D2: BSF 03.500D3: BCF 08.6.................... output_bit(LCD_DATA7, bit_test(n, 3));00D4: BCF 03.500D5: BTFSC 4D.300D6: GOTO 0D900D7: BCF 08.700D8: GOTO 0DA00D9: BSF 08.700DA: BSF 03.500DB: BCF 08.7.................... #else.................... lcdlat.data = n;.................... #endif........................................ delay_cycles(1);00DC: NOP.................... lcd_output_enable(1);00DD: BCF 03.500DE: BSF 09.000DF: BSF 03.500E0: BCF 09.0.................... delay_us(2);00E1: GOTO 0E200E2: GOTO 0E3.................... lcd_output_enable(0);00E3: BCF 03.500E4: BCF 09.000E5: BSF 03.500E6: BCF 09.0.................... }00E7: BCF 03.500E8: RETURN........................................ void lcd_send_byte(BYTE address, BYTE n).................... {.................... #if defined(__PCB__).................... set_tris_lcd(LCD_OUTPUT_MAP);.................... #else.................... lcd_enable_tris();*011A: BSF 03.5011B: BCF 09.0.................... lcd_rs_tris();011C: BCF 09.1.................... lcd_rw_tris();011D: BCF 09.2.................... #endif........................................ lcd_output_rs(0);011E: BCF 03.5011F: BCF 09.10120: BSF 03.50121: BCF 09.1.................... while ( bit_test(lcd_read_byte(),7) ) ;*0150: MOVF 78,W0151: MOVWF 4C0152: BTFSS 4C.70153: GOTO 1560154: BSF 03.50155: GOTO 122.................... lcd_output_rs(address);0156: MOVF 4A,F0157: BTFSS 03.20158: GOTO 15B0159: BCF 09.1015A: GOTO 15C015B: BSF 09.1015C: BSF 03.5015D: BCF 09.1.................... delay_cycles(1);015E: NOP.................... lcd_output_rw(0);015F: BCF 03.50160: BCF 09.20161: BSF 03.50162: BCF 09.2.................... delay_cycles(1);0163: NOP.................... lcd_output_enable(0);0164: BCF 03.50165: BCF 09.00166: BSF 03.50167: BCF 09.0.................... lcd_send_nibble(n >> 4);0168: BCF 03.50169: SWAPF 4B,W016A: MOVWF 4C016B: MOVLW 0F016C: ANDWF 4C,F016D: MOVF 4C,W016E: MOVWF 4D016F: CALL 0BD.................... lcd_send_nibble(n & 0xf);0170: MOVF 4B,W0171: ANDLW 0F0172: MOVWF 4C0173: MOVWF 4D0174: CALL 0BD.................... }0175: RETURN........................................ #if defined(LCD_EXTENDED_NEWLINE).................... unsigned int8 g_LcdX, g_LcdY;.................... #endif........................................ void lcd_init(void).................... {.................... BYTE i;........................................ #if defined(__PCB__).................... set_tris_lcd(LCD_OUTPUT_MAP);.................... #else.................... #if (defined(LCD_DATA4) && defined(LCD_DATA5) && defined(LCD_DATA6) && defined(LCD_DATA7)).................... output_drive(LCD_DATA4);0176: BSF 03.50177: BCF 08.4.................... output_drive(LCD_DATA5);0178: BCF 08.5.................... output_drive(LCD_DATA6);0179: BCF 08.6.................... output_drive(LCD_DATA7);017A: BCF 08.7.................... #else.................... lcdtris.data = 0x0;.................... #endif.................... lcd_enable_tris();017B: BCF 09.0.................... lcd_rs_tris();017C: BCF 09.1.................... lcd_rw_tris();017D: BCF 09.2.................... #endif........................................ lcd_output_rs(0);017E: BCF 03.5017F: BCF 09.10180: BSF 03.50181: BCF 09.1.................... lcd_output_rw(0);0182: BCF 03.50183: BCF 09.20184: BSF 03.50185: BCF 09.2.................... lcd_output_enable(0);0186: BCF 03.50187: BCF 09.00188: BSF 03.50189: BCF 09.0........................................ delay_ms(15);018A: MOVLW 0F018B: BCF 03.5018C: MOVWF 46018D: CALL 0A9.................... for(i=1;i<=3;++i)018E: MOVLW 01018F: MOVWF 390190: MOVF 39,W0191: SUBLW 030192: BTFSS 03.00193: GOTO 19C.................... {.................... lcd_send_nibble(3);0194: MOVLW 030195: MOVWF 4D0196: CALL 0BD.................... delay_ms(5);0197: MOVLW 050198: MOVWF 460199: CALL 0A9.................... }019A: INCF 39,F019B: GOTO 190........................................ lcd_send_nibble(2);019C: MOVLW 02019D: MOVWF 4D019E: CALL 0BD.................... for(i=0;i<=3;++i)019F: CLRF 3901A0: MOVF 39,W01A1: SUBLW 0301A2: BTFSS 03.001A3: GOTO 1AD.................... lcd_send_byte(0,LCD_INIT_STRING[i]);01A4: MOVF 39,W01A5: CALL 03801A6: MOVWF 3A01A7: CLRF 4A01A8: MOVF 3A,W01A9: MOVWF 4B01AA: CALL 11A........................................ #if defined(LCD_EXTENDED_NEWLINE)01AB: INCF 39,F01AC: GOTO 1A0.................... g_LcdX = 0;.................... g_LcdY = 0;.................... #endif.................... }01AD: BSF 0A.301AE: BCF 0A.401AF: GOTO 0B3 (RETURN)........................................ void lcd_gotoxy(BYTE x, BYTE y).................... {.................... BYTE address;........................................ if(y!=1)01B0: DECFSZ 47,W01B1: GOTO 1B301B2: GOTO 1B6.................... address=LCD_LINE_TWO;01B3: MOVLW 4001B4: MOVWF 48.................... else01B5: GOTO 1B7.................... address=0;01B6: CLRF 48........................................ address+=x-1;01B7: MOVLW 0101B8: SUBWF 46,W01B9: ADDWF 48,F.................... lcd_send_byte(0,0x80|address);01BA: MOVF 48,W01BB: IORLW 8001BC: MOVWF 4901BD: CLRF 4A01BE: MOVF 49,W01BF: MOVWF 4B01C0: CALL 11A........................................ #if defined(LCD_EXTENDED_NEWLINE).................... g_LcdX = x - 1;.................... g_LcdY = y - 1;.................... #endif.................... }01C1: RETURN........................................ void lcd_putc(char c).................... {.................... switch (c).................... {01C2: MOVF 45,W01C3: XORLW 0701C4: BTFSC 03.201C5: GOTO 1D001C6: XORLW 0B01C7: BTFSC 03.201C8: GOTO 1D501C9: XORLW 0601CA: BTFSC 03.201CB: GOTO 1DD01CC: XORLW 0201CD: BTFSC 03.201CE: GOTO 1E301CF: GOTO 1E8.................... case '\a' : lcd_gotoxy(1,1); break;01D0: MOVLW 0101D1: MOVWF 4601D2: MOVWF 4701D3: CALL 1B001D4: GOTO 1EE........................................ case '\f' : lcd_send_byte(0,1);01D5: CLRF 4A01D6: MOVLW 0101D7: MOVWF 4B01D8: CALL 11A.................... delay_ms(2);01D9: MOVLW 0201DA: MOVWF 4601DB: CALL 0A9.................... #if defined(LCD_EXTENDED_NEWLINE).................... g_LcdX = 0;.................... g_LcdY = 0;.................... #endif.................... break;01DC: GOTO 1EE........................................ #if defined(LCD_EXTENDED_NEWLINE).................... case '\r' : lcd_gotoxy(1, g_LcdY+1); break;.................... case '\n' :.................... while (g_LcdX++ < LCD_LINE_LENGTH).................... {.................... lcd_send_byte(1, ' ');.................... }.................... lcd_gotoxy(1, g_LcdY+2);.................... break;.................... #else.................... case '\n' : lcd_gotoxy(1,2); break;01DD: MOVLW 0101DE: MOVWF 4601DF: MOVLW 0201E0: MOVWF 4701E1: CALL 1B001E2: GOTO 1EE.................... #endif........................................ case '\b' : lcd_send_byte(0,0x10); break;01E3: CLRF 4A01E4: MOVLW 1001E5: MOVWF 4B01E6: CALL 11A01E7: GOTO 1EE........................................ #if defined(LCD_EXTENDED_NEWLINE).................... default :.................... if (g_LcdX < LCD_LINE_LENGTH).................... {.................... lcd_send_byte(1, c);.................... g_LcdX++;.................... }.................... break;.................... #else.................... default : lcd_send_byte(1,c); break;01E8: MOVLW 0101E9: MOVWF 4A01EA: MOVF 45,W01EB: MOVWF 4B01EC: CALL 11A01ED: GOTO 1EE.................... #endif.................... }.................... }01EE: RETURN........................................ char lcd_getc(BYTE x, BYTE y).................... {.................... char value;........................................ lcd_gotoxy(x,y);.................... while ( bit_test(lcd_read_byte(),7) ); // wait until busy flag is low.................... lcd_output_rs(1);.................... value = lcd_read_byte();.................... lcd_output_rs(0);........................................ return(value);.................... }................................................................................ unsigned int32 pulse_count=0;.................... unsigned int16 overflow_count=0;.................... unsigned int16 time_overflow_count=0;............................................................ #int_RTCC.................... void RTCC_isr(void).................... {.................... time_overflow_count++;*0040: INCF 2D,F0041: BTFSC 03.20042: INCF 2E,F.................... }....................0043: BCF 0B.20044: BCF 0A.30045: BCF 0A.40046: GOTO 021.................... #int_TIMER1.................... void TIMER1_isr(void).................... {.................... overflow_count++;0047: INCF 2B,F0048: BTFSC 03.20049: INCF 2C,F.................... output_toggle(LED3);004A: BCF 2F.4004B: MOVF 2F,W004C: BSF 03.5004D: MOVWF 07004E: MOVLW 10004F: BCF 03.50050: XORWF 07,F.................... output_toggle(BEEP);0051: BSF 03.50052: BCF 08.20053: MOVLW 040054: BCF 03.50055: XORWF 08,F.................... }....................0056: BCF 0C.00057: BCF 0A.30058: BCF 0A.40059: GOTO 021.................... void sound_beep( unsigned int lenght, int16 frequency).................... {.................... unsigned int i;........................................ for(i=0;i<=lenght;i++)*060D: CLRF 3C060E: MOVF 3C,W060F: SUBWF 39,W0610: BTFSS 03.00611: GOTO 655.................... {.................... output_toggle(BEEP);0612: BSF 03.50613: BCF 08.20614: MOVLW 040615: BCF 03.50616: XORWF 08,F.................... delay_us(1/frequency);0617: CLRF 3E0618: MOVLW 010619: MOVWF 3D061A: MOVF 3B,W061B: MOVWF 40061C: MOVF 3A,W061D: MOVWF 3F*0642: MOVF 79,W0643: MOVWF 3E0644: MOVF 78,W0645: MOVWF 3D0646: MOVF 3E,W0647: MOVWF 3F0648: INCF 3F,F0649: DECF 3F,F064A: BTFSC 03.2064B: GOTO 650064C: MOVLW FF064D: MOVWF 40064E: CALL 5FC064F: GOTO 6490650: MOVF 3D,W0651: MOVWF 400652: CALL 5FC.................... }0653: INCF 3C,F0654: GOTO 60E.................... }0655: RETURN........................................ void main().................... {*0800: CLRF 040801: BCF 03.70802: MOVLW 1F0803: ANDWF 03,F0804: MOVLW 710805: BSF 03.50806: MOVWF 0F0807: MOVF 0F,W0808: BCF 06.70809: BCF 03.5080A: BSF 06.7080B: CLRF 2A080C: CLRF 29080D: CLRF 28080E: CLRF 27080F: CLRF 2C0810: CLRF 2B0811: CLRF 2E0812: CLRF 2D0813: BSF 03.50814: BSF 03.60815: MOVF 09,W0816: ANDLW C00817: MOVWF 090818: BCF 03.60819: BCF 1F.4081A: BCF 1F.5081B: MOVLW 00081C: BSF 03.6081D: MOVWF 08081E: BCF 03.5081F: CLRF 070820: CLRF 080821: CLRF 09*0825: CLRF 310826: MOVLW 3C0827: MOVWF 300828: CLRF 380829: CLRF 37.................... unsigned int16 integration_time=60;.................... unsigned int16 time;.................... unsigned int16 last_timer; // promena pro praskani.................... unsigned int1 button_press,voltage_setup,time_setup; // semafor pro cteni tlacitek.................... unsigned int16 measurement_number=0;........................................ setup_adc_ports(sAN0|VSS_VDD);082A: BSF 03.5082B: BSF 03.6082C: MOVF 09,W082D: ANDLW C0082E: MOVWF 09082F: BCF 03.60830: BCF 1F.40831: BCF 1F.50832: MOVLW 010833: BSF 03.60834: MOVWF 08.................... setup_adc(ADC_CLOCK_DIV_32);0835: BCF 03.50836: BCF 03.60837: BCF 1F.60838: BSF 1F.70839: BSF 03.5083A: BSF 1F.7083B: BCF 03.5083C: BSF 1F.0.................... setup_spi(SPI_SS_DISABLED);083D: BCF 14.5083E: BCF 2F.5083F: MOVF 2F,W0840: BSF 03.50841: MOVWF 070842: BCF 03.50843: BSF 2F.40844: MOVF 2F,W0845: BSF 03.50846: MOVWF 070847: BCF 03.50848: BCF 2F.30849: MOVF 2F,W084A: BSF 03.5084B: MOVWF 07084C: MOVLW 01084D: BCF 03.5084E: MOVWF 14084F: MOVLW 000850: BSF 03.50851: MOVWF 14.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);0852: MOVF 01,W0853: ANDLW C00854: IORLW 070855: MOVWF 01.................... setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1);0856: MOVLW 070857: BCF 03.50858: MOVWF 10.................... setup_timer_2(T2_DISABLED,0,1);0859: MOVLW 00085A: MOVWF 78085B: MOVWF 12085C: MOVLW 00085D: BSF 03.5085E: MOVWF 12.................... setup_ccp1(CCP_PWM);085F: BCF 03.50860: BCF 2F.20861: MOVF 2F,W0862: BSF 03.50863: MOVWF 070864: BCF 03.50865: BCF 07.20866: BSF 03.50867: BCF 09.60868: MOVLW 0C0869: BCF 03.5086A: MOVWF 17086B: BSF 03.5086C: CLRF 1B086D: CLRF 1C086E: MOVLW 01086F: MOVWF 1D.................... setup_ccp2(CCP_PWM);0870: BCF 03.50871: BCF 2F.10872: MOVF 2F,W0873: BSF 03.50874: MOVWF 070875: BCF 03.50876: BCF 07.10877: MOVLW 0C0878: MOVWF 1D0879: MOVLW 01087A: MOVWF 00.................... setup_oscillator(OSC_8MHZ);087B: MOVLW 71087C: BSF 03.5087D: MOVWF 0F087E: MOVF 0F,W........................................ set_pwm1_duty(0);087F: BCF 03.50880: CLRF 15.................... set_pwm2_duty(0);0881: CLRF 1B........................................ output_high(LED1);0882: BCF 2F.60883: MOVF 2F,W0884: BSF 03.50885: MOVWF 070886: BCF 03.50887: BSF 07.6.................... output_high(LED2);0888: BCF 2F.50889: MOVF 2F,W088A: BSF 03.5088B: MOVWF 07088C: BCF 03.5088D: BSF 07.5.................... output_high(LED3);088E: BCF 2F.4088F: MOVF 2F,W0890: BSF 03.50891: MOVWF 070892: BCF 03.50893: BSF 07.4.................... output_high(LED4);0894: BSF 03.50895: BCF 08.30896: BCF 03.50897: BSF 08.3.................... output_low(BEEP);0898: BSF 03.50899: BCF 08.2089A: BCF 03.5089B: BCF 08.2........................................ setup_comparator(CP2_A0_VREF|CP2_OUT_ON_A5); // sets two comparators(A1 and VR and A2 as the output)089C: BSF 03.6089D: CLRF 07089E: MOVLW A4089F: MOVWF 0808A0: MOVLW 1008A1: MOVWF 0908A2: BSF 03.508A3: BCF 03.608A4: BCF 05.508A5: BSF 05.0.................... setup_vref(VREF_HIGH|6); //sets 3.6(vdd *value/32 +vdd/4) if vdd is 5.0V08A6: MOVLW 8608A7: MOVWF 17.................... enable_interrupts(INT_COMP); //enables the comparator interrupt08A8: BSF 0D.5.................... enable_interrupts(INT_RTCC);08A9: BCF 03.508AA: BSF 0B.5.................... enable_interrupts(INT_TIMER1);08AB: BSF 03.508AC: BSF 0C.0.................... enable_interrupts(INT_TIMER2);08AD: BSF 0C.1.................... enable_interrupts(GLOBAL);08AE: MOVLW C008AF: BCF 03.508B0: IORWF 0B,F.................... lcd_init();08B1: BCF 0A.308B2: GOTO 17608B3: BSF 0A.3........................................ lcd_putc("\fGM counter V1.0 \n 2013 MLAB");08B4: MOVLW 5A08B5: BSF 03.608B6: MOVWF 0D08B7: MOVLW 0008B8: MOVWF 0F08B9: BCF 0A.308BA: BCF 03.608BB: CALL 1EF08BC: BSF 0A.3.................... printf("Geiger-Muller Counter V1.0 \r\n");08BD: MOVLW 6A08BE: BSF 03.608BF: MOVWF 0D08C0: MOVLW 0008C1: MOVWF 0F08C2: BCF 0A.308C3: BCF 03.608C4: CALL 25708C5: BSF 0A.3.................... printf("(c) 2013 MLAB and UST.cz \r\n");08C6: MOVLW 7908C7: BSF 03.608C8: MOVWF 0D08C9: MOVLW 0008CA: MOVWF 0F08CB: BCF 0A.308CC: BCF 03.608CD: CALL 25708CE: BSF 0A.3.................... Delay_ms(1000);08CF: MOVLW 0408D0: MOVWF 3908D1: MOVLW FA08D2: MOVWF 4608D3: BCF 0A.308D4: CALL 0A908D5: BSF 0A.308D6: DECFSZ 39,F08D7: GOTO 0D1........................................ lcd_putc("\f");08D8: MOVLW 8708D9: BSF 03.608DA: MOVWF 0D08DB: MOVLW 0008DC: MOVWF 0F08DD: BCF 0A.308DE: BCF 03.608DF: CALL 1EF08E0: BSF 0A.3.................... printf("\r\n");08E1: MOVLW 0D08E2: MOVWF 4508E3: BCF 0A.308E4: CALL 23508E5: BSF 0A.308E6: MOVLW 0A08E7: MOVWF 4508E8: BCF 0A.308E9: CALL 23508EA: BSF 0A.3........................................ set_timer1(0);08EB: CLRF 0F08EC: CLRF 0E........................................ lcd_gotoxy(1,1); // vypsani hodnoty count, abz byla na LCD hned od zapnuti08ED: MOVLW 0108EE: MOVWF 4608EF: MOVWF 4708F0: BCF 0A.308F1: CALL 1B008F2: BSF 0A.3.................... printf(lcd_putc,"Count:%lu ",pulse_count);08F3: MOVLW 8808F4: BSF 03.608F5: MOVWF 0D08F6: MOVLW 0008F7: MOVWF 0F08F8: BCF 03.008F9: MOVLW 0608FA: BCF 03.608FB: MOVWF 3908FC: BCF 0A.308FD: CALL 29D08FE: BSF 0A.308FF: MOVLW 410900: MOVWF 040901: MOVF 2A,W0902: MOVWF 3C0903: MOVF 29,W0904: MOVWF 3B0905: MOVF 28,W0906: MOVWF 3A0907: MOVF 27,W0908: MOVWF 390909: BCF 0A.3090A: CALL 32E090B: BSF 0A.3090C: MOVLW 8C090D: BSF 03.6090E: MOVWF 0D090F: MOVLW 000910: MOVWF 0F0911: BSF 03.00912: MOVLW 050913: BCF 03.60914: MOVWF 390915: BCF 0A.30916: CALL 29D0917: BSF 0A.3........................................ while(true).................... {.................... pulse_count = get_timer1() + (0xffff * overflow_count); // compute pulse count0918: MOVF 0F,W0919: MOVWF 7A091A: MOVF 0E,W091B: MOVWF 77091C: MOVF 0F,W091D: SUBWF 7A,W091E: BTFSS 03.2091F: GOTO 1180920: MOVF 77,W0921: MOVWF 390922: MOVF 7A,W0923: MOVWF 3A0924: MOVLW FF0925: MOVWF 3C0926: MOVWF 3B0927: MOVF 2C,W0928: MOVWF 3E0929: MOVF 2B,W092A: MOVWF 3D092B: BCF 0A.3092C: GOTO 38A092D: BSF 0A.3092E: MOVF 79,W092F: MOVWF 7A0930: MOVF 78,W0931: ADDWF 39,W0932: MOVWF 270933: MOVF 3A,W0934: MOVWF 280935: MOVF 7A,W0936: BTFSC 03.00937: INCFSZ 7A,W0938: ADDWF 28,F0939: CLRF 29093A: CLRF 2A.................... time = integration_time + 1 - (time_overflow_count * 0.0327); // compute time interval093B: MOVLW 01093C: ADDWF 30,W093D: MOVWF 39093E: MOVF 31,W093F: MOVWF 3A0940: BTFSC 03.00941: INCF 3A,F0942: MOVF 2E,W0943: MOVWF 400944: MOVF 2D,W0945: MOVWF 3F0946: BCF 0A.30947: CALL 3A10948: BSF 0A.30949: MOVF 7A,W094A: MOVWF 3E094B: MOVF 79,W094C: MOVWF 3D094D: MOVF 78,W094E: MOVWF 3C094F: MOVF 77,W0950: MOVWF 3B0951: MOVLW 6F0952: MOVWF 420953: MOVLW F00954: MOVWF 410955: MOVLW 050956: MOVWF 400957: MOVLW 7A0958: MOVWF 3F0959: BCF 0A.3095A: GOTO 3BE095B: BSF 0A.3095C: MOVF 77,W095D: MOVWF 3B095E: MOVF 78,W095F: MOVWF 3C0960: MOVF 79,W0961: MOVWF 3D0962: MOVF 7A,W0963: MOVWF 3E0964: MOVF 3A,W0965: MOVWF 400966: MOVF 39,W0967: MOVWF 3F0968: BCF 0A.30969: CALL 3A1096A: BSF 0A.3096B: BSF 03.1096C: MOVF 7A,W096D: MOVWF 42096E: MOVF 79,W096F: MOVWF 410970: MOVF 78,W0971: MOVWF 400972: MOVF 77,W0973: MOVWF 3F0974: MOVF 3E,W0975: MOVWF 460976: MOVF 3D,W0977: MOVWF 450978: MOVF 3C,W0979: MOVWF 44097A: MOVF 3B,W097B: MOVWF 43097C: BCF 0A.3097D: GOTO 435097E: BSF 0A.3097F: MOVF 7A,W0980: MOVWF 420981: MOVF 79,W0982: MOVWF 410983: MOVF 78,W0984: MOVWF 400985: MOVF 77,W0986: MOVWF 3F0987: BCF 0A.30988: GOTO 5780989: BSF 0A.3098A: MOVF 79,W098B: MOVWF 33098C: MOVF 78,W098D: MOVWF 32........................................ if(get_timer1() != last_timer) // timer count increment detection098E: MOVF 0F,W098F: MOVWF 7A0990: MOVF 0E,W0991: MOVWF 770992: MOVF 0F,W0993: SUBWF 7A,W0994: BTFSS 03.20995: GOTO 18E0996: MOVF 77,W0997: MOVWF 390998: MOVF 7A,W0999: MOVWF 3A099A: MOVF 34,W099B: SUBWF 39,W099C: BTFSS 03.2099D: GOTO 1A2099E: MOVF 35,W099F: SUBWF 3A,W09A0: BTFSC 03.209A1: GOTO 1EF.................... {.................... output_toggle(BEEP);09A2: BSF 03.509A3: BCF 08.209A4: MOVLW 0409A5: BCF 03.509A6: XORWF 08,F.................... delay_ms(1);09A7: MOVLW 0109A8: MOVWF 4609A9: BCF 0A.309AA: CALL 0A909AB: BSF 0A.3.................... output_toggle(BEEP);09AC: BSF 03.509AD: BCF 08.209AE: MOVLW 0409AF: BCF 03.509B0: XORWF 08,F.................... output_toggle(LED3);09B1: BCF 2F.409B2: MOVF 2F,W09B3: BSF 03.509B4: MOVWF 0709B5: MOVLW 1009B6: BCF 03.509B7: XORWF 07,F.................... last_timer=get_timer1();09B8: MOVF 0F,W09B9: MOVWF 7A09BA: MOVF 0E,W09BB: MOVWF 7709BC: MOVF 0F,W09BD: SUBWF 7A,W09BE: BTFSS 03.209BF: GOTO 1B809C0: MOVF 77,W09C1: MOVWF 3409C2: MOVF 7A,W09C3: MOVWF 35.................... lcd_gotoxy(1,1); // prepsani dat na displeje09C4: MOVLW 0109C5: MOVWF 4609C6: MOVWF 4709C7: BCF 0A.309C8: CALL 1B009C9: BSF 0A.3.................... printf(lcd_putc,"Count:%lu ",pulse_count);09CA: MOVLW 9009CB: BSF 03.609CC: MOVWF 0D09CD: MOVLW 0009CE: MOVWF 0F09CF: BCF 03.009D0: MOVLW 0609D1: BCF 03.609D2: MOVWF 3909D3: BCF 0A.309D4: CALL 29D09D5: BSF 0A.309D6: MOVLW 4109D7: MOVWF 0409D8: MOVF 2A,W09D9: MOVWF 3C09DA: MOVF 29,W09DB: MOVWF 3B09DC: MOVF 28,W09DD: MOVWF 3A09DE: MOVF 27,W09DF: MOVWF 3909E0: BCF 0A.309E1: CALL 32E09E2: BSF 0A.309E3: MOVLW 9409E4: BSF 03.609E5: MOVWF 0D09E6: MOVLW 0009E7: MOVWF 0F09E8: BSF 03.009E9: MOVLW 0509EA: BCF 03.609EB: MOVWF 3909EC: BCF 0A.309ED: CALL 29D09EE: BSF 0A.3.................... }........................................ lcd_gotoxy(1,2);09EF: MOVLW 0109F0: MOVWF 4609F1: MOVLW 0209F2: MOVWF 4709F3: BCF 0A.309F4: CALL 1B009F5: BSF 0A.3.................... printf(lcd_putc,"T:%lu ",time);09F6: MOVLW 5409F7: MOVWF 4509F8: BCF 0A.309F9: CALL 1C209FA: BSF 0A.309FB: MOVLW 3A09FC: MOVWF 4509FD: BCF 0A.309FE: CALL 1C209FF: BSF 0A.30A00: MOVLW 100A01: MOVWF 040A02: MOVF 33,W0A03: MOVWF 3A0A04: MOVF 32,W0A05: MOVWF 390A06: BCF 0A.30A07: CALL 5990A08: BSF 0A.30A09: MOVLW 200A0A: MOVWF 450A0B: BCF 0A.30A0C: CALL 1C20A0D: BSF 0A.30A0E: MOVLW 200A0F: MOVWF 450A10: BCF 0A.30A11: CALL 1C20A12: BSF 0A.30A13: MOVLW 200A14: MOVWF 450A15: BCF 0A.30A16: CALL 1C20A17: BSF 0A.3.................... lcd_gotoxy(9,2);0A18: MOVLW 090A19: MOVWF 460A1A: MOVLW 020A1B: MOVWF 470A1C: BCF 0A.30A1D: CALL 1B00A1E: BSF 0A.3.................... printf(lcd_putc,"I:%lu ", integration_time);0A1F: MOVLW 490A20: MOVWF 450A21: BCF 0A.30A22: CALL 1C20A23: BSF 0A.30A24: MOVLW 3A0A25: MOVWF 450A26: BCF 0A.30A27: CALL 1C20A28: BSF 0A.30A29: MOVLW 100A2A: MOVWF 040A2B: MOVF 31,W0A2C: MOVWF 3A0A2D: MOVF 30,W0A2E: MOVWF 390A2F: BCF 0A.30A30: CALL 5990A31: BSF 0A.30A32: MOVLW 9A0A33: BSF 03.60A34: MOVWF 0D0A35: MOVLW 000A36: MOVWF 0F0A37: BSF 03.00A38: MOVLW 040A39: BCF 03.60A3A: MOVWF 390A3B: BCF 0A.30A3C: CALL 29D0A3D: BSF 0A.3........................................ if(time == 0) // po uplynuti mereneho intervalu vypis na seriovku0A3E: MOVF 32,F0A3F: BTFSS 03.20A40: GOTO 2980A41: MOVF 33,F0A42: BTFSS 03.20A43: GOTO 298.................... {.................... set_timer0(0);0A44: CLRF 01.................... time_overflow_count=0;0A45: CLRF 2E0A46: CLRF 2D.................... sound_beep(1000,700);0A47: MOVLW E80A48: MOVWF 390A49: MOVLW 020A4A: MOVWF 3B0A4B: MOVLW BC0A4C: MOVWF 3A0A4D: BCF 0A.30A4E: CALL 60D0A4F: BSF 0A.3.................... printf("$GMC1.0 %lu %lu %lu \r\n", measurement_number, integration_time, pulse_count);0A50: MOVLW 9D0A51: BSF 03.60A52: MOVWF 0D0A53: MOVLW 000A54: MOVWF 0F0A55: BCF 03.00A56: MOVLW 080A57: BCF 03.60A58: MOVWF 390A59: BCF 0A.30A5A: CALL 6560A5B: BSF 0A.30A5C: MOVLW 100A5D: MOVWF 040A5E: MOVF 38,W0A5F: MOVWF 3A0A60: MOVF 37,W0A61: MOVWF 390A62: BCF 0A.30A63: CALL 6A50A64: BSF 0A.30A65: MOVLW 200A66: MOVWF 450A67: BCF 0A.30A68: CALL 2350A69: BSF 0A.30A6A: MOVLW 100A6B: MOVWF 040A6C: MOVF 31,W0A6D: MOVWF 3A0A6E: MOVF 30,W0A6F: MOVWF 390A70: BCF 0A.30A71: CALL 6A50A72: BSF 0A.30A73: MOVLW 200A74: MOVWF 450A75: BCF 0A.30A76: CALL 2350A77: BSF 0A.30A78: MOVLW 410A79: MOVWF 040A7A: MOVF 2A,W0A7B: MOVWF 3C0A7C: MOVF 29,W0A7D: MOVWF 3B0A7E: MOVF 28,W0A7F: MOVWF 3A0A80: MOVF 27,W0A81: MOVWF 390A82: BCF 0A.30A83: GOTO 7080A84: BSF 0A.30A85: MOVLW A60A86: BSF 03.60A87: MOVWF 0D0A88: MOVLW 000A89: MOVWF 0F0A8A: BSF 03.00A8B: MOVLW 040A8C: BCF 03.60A8D: MOVWF 390A8E: BCF 0A.30A8F: CALL 6560A90: BSF 0A.3.................... set_timer1(0);0A91: CLRF 0F0A92: CLRF 0E.................... overflow_count=0;0A93: CLRF 2C0A94: CLRF 2B.................... measurement_number++;0A95: INCF 37,F0A96: BTFSC 03.20A97: INCF 38,F.................... }........................................ if(button_press==false ) // tlacitka se ctou znovu pouze pokud v redchozim cyklu nebyla zmacknuta.0A98: BTFSC 36.00A99: GOTO 37E.................... {.................... if(!input(S1))0A9A: BSF 2F.20A9B: MOVF 2F,W0A9C: BSF 03.50A9D: MOVWF 070A9E: BCF 03.50A9F: BTFSC 07.20AA0: GOTO 2C7.................... {.................... delay_ms(20);0AA1: MOVLW 140AA2: MOVWF 460AA3: BCF 0A.30AA4: CALL 0A90AA5: BSF 0A.3.................... if(!input(S1))0AA6: BSF 2F.20AA7: MOVF 2F,W0AA8: BSF 03.50AA9: MOVWF 070AAA: BCF 03.50AAB: BTFSC 07.20AAC: GOTO 2C7.................... {.................... button_press=true;0AAD: BSF 36.0.................... if(time_setup==TRUE)0AAE: BTFSS 36.20AAF: GOTO 2C7.................... {.................... sound_beep(100,700);0AB0: MOVLW 640AB1: MOVWF 390AB2: MOVLW 020AB3: MOVWF 3B0AB4: MOVLW BC0AB5: MOVWF 3A0AB6: BCF 0A.30AB7: CALL 60D0AB8: BSF 0A.3.................... if(integration_time < 0xfffa ) integration_time+=5;0AB9: MOVF 31,W0ABA: SUBLW FF0ABB: BTFSS 03.00ABC: GOTO 2C70ABD: BTFSS 03.20ABE: GOTO 2C30ABF: MOVF 30,W0AC0: SUBLW F90AC1: BTFSS 03.00AC2: GOTO 2C70AC3: MOVLW 050AC4: ADDWF 30,F0AC5: BTFSC 03.00AC6: INCF 31,F.................... }.................... }.................... }........................................ if(!input(S2))0AC7: BSF 2F.30AC8: MOVF 2F,W0AC9: BSF 03.50ACA: MOVWF 070ACB: BCF 03.50ACC: BTFSC 07.30ACD: GOTO 2FA.................... {.................... delay_ms(20);0ACE: MOVLW 140ACF: MOVWF 460AD0: BCF 0A.30AD1: CALL 0A90AD2: BSF 0A.3.................... if(!input(S2))0AD3: BSF 2F.30AD4: MOVF 2F,W0AD5: BSF 03.50AD6: MOVWF 070AD7: BCF 03.50AD8: BTFSC 07.30AD9: GOTO 2FA.................... {.................... button_press=true;0ADA: BSF 36.0.................... if(time_setup==TRUE)0ADB: BTFSS 36.20ADC: GOTO 2FA.................... {.................... sound_beep(100,600);0ADD: MOVLW 640ADE: MOVWF 390ADF: MOVLW 020AE0: MOVWF 3B0AE1: MOVLW 580AE2: MOVWF 3A0AE3: BCF 0A.30AE4: CALL 60D0AE5: BSF 0A.3.................... if(integration_time > 0x0005 ) integration_time-=5;0AE6: MOVF 31,F0AE7: BTFSS 03.20AE8: GOTO 2ED0AE9: MOVF 30,W0AEA: SUBLW 050AEB: BTFSC 03.00AEC: GOTO 2F30AED: MOVLW 050AEE: SUBWF 30,F0AEF: MOVLW 000AF0: BTFSS 03.00AF1: MOVLW 010AF2: SUBWF 31,F........................................ set_timer0(0); // vynulovani pocitadel, kdyz uzivatel sahne na tlacitka0AF3: CLRF 01.................... time_overflow_count=0;0AF4: CLRF 2E0AF5: CLRF 2D.................... set_timer1(0);0AF6: CLRF 0F0AF7: CLRF 0E.................... overflow_count=0;0AF8: CLRF 2C0AF9: CLRF 2B.................... }.................... }.................... }........................................ if(!input(S3))0AFA: BSF 03.50AFB: BSF 08.00AFC: BCF 03.50AFD: BTFSC 08.00AFE: GOTO 31D.................... {.................... delay_ms(20);0AFF: MOVLW 140B00: MOVWF 460B01: BCF 0A.30B02: CALL 0A90B03: BSF 0A.3.................... if(!input(S3))0B04: BSF 03.50B05: BSF 08.00B06: BCF 03.50B07: BTFSC 08.00B08: GOTO 31D.................... {.................... button_press=true;0B09: BSF 36.0.................... if(time_setup==TRUE)0B0A: BTFSS 36.20B0B: GOTO 31D.................... {.................... sound_beep(100,500);0B0C: MOVLW 640B0D: MOVWF 390B0E: MOVLW 010B0F: MOVWF 3B0B10: MOVLW F40B11: MOVWF 3A0B12: BCF 0A.30B13: CALL 60D0B14: BSF 0A.3.................... if(integration_time < 0xffff ) integration_time++;0B15: INCFSZ 30,W0B16: GOTO 31A0B17: INCFSZ 31,W0B18: GOTO 31A0B19: GOTO 31D0B1A: INCF 30,F0B1B: BTFSC 03.20B1C: INCF 31,F.................... }.................... }.................... }........................................ if(!input(S4))0B1D: BSF 03.50B1E: BSF 08.10B1F: BCF 03.50B20: BTFSC 08.10B21: GOTO 34A.................... {.................... delay_ms(20);0B22: MOVLW 140B23: MOVWF 460B24: BCF 0A.30B25: CALL 0A90B26: BSF 0A.3.................... if(!input(S4))0B27: BSF 03.50B28: BSF 08.10B29: BCF 03.50B2A: BTFSC 08.10B2B: GOTO 34A.................... {.................... button_press=true;0B2C: BSF 36.0.................... if(time_setup==TRUE)0B2D: BTFSS 36.20B2E: GOTO 34A.................... {.................... sound_beep(100,400);0B2F: MOVLW 640B30: MOVWF 390B31: MOVLW 010B32: MOVWF 3B0B33: MOVLW 900B34: MOVWF 3A0B35: BCF 0A.30B36: CALL 60D0B37: BSF 0A.3.................... if(integration_time > 0x0001 ) integration_time--;0B38: MOVF 31,F0B39: BTFSS 03.20B3A: GOTO 33F0B3B: MOVF 30,W0B3C: SUBLW 010B3D: BTFSC 03.00B3E: GOTO 3430B3F: MOVF 30,W0B40: BTFSC 03.20B41: DECF 31,F0B42: DECF 30,F........................................ set_timer0(0); // vynulovani pocitadel, kdyz uzivatel sahne na tlacitka0B43: CLRF 01.................... time_overflow_count=0;0B44: CLRF 2E0B45: CLRF 2D.................... set_timer1(0);0B46: CLRF 0F0B47: CLRF 0E.................... overflow_count=0;0B48: CLRF 2C0B49: CLRF 2B.................... }.................... }.................... }........................................ if(!input(S5)) // prepnuti na nastavovani casu0B4A: BSF 03.50B4B: BSF 06.10B4C: BCF 03.50B4D: BTFSC 06.10B4E: GOTO 364.................... {.................... delay_ms(20);0B4F: MOVLW 140B50: MOVWF 460B51: BCF 0A.30B52: CALL 0A90B53: BSF 0A.3.................... if(!input(S5))0B54: BSF 03.50B55: BSF 06.10B56: BCF 03.50B57: BTFSC 06.10B58: GOTO 364.................... {.................... sound_beep(100,800);0B59: MOVLW 640B5A: MOVWF 390B5B: MOVLW 030B5C: MOVWF 3B0B5D: MOVLW 200B5E: MOVWF 3A0B5F: BCF 0A.30B60: CALL 60D0B61: BSF 0A.3.................... voltage_setup=FALSE;0B62: BCF 36.1.................... time_setup=TRUE;0B63: BSF 36.2.................... }.................... }........................................ if(!input(S6)) // prepnuti na nastavovani napeti0B64: BSF 03.50B65: BSF 06.20B66: BCF 03.50B67: BTFSC 06.20B68: GOTO 37E.................... {.................... delay_ms(20);0B69: MOVLW 140B6A: MOVWF 460B6B: BCF 0A.30B6C: CALL 0A90B6D: BSF 0A.3.................... if(!input(S6))0B6E: BSF 03.50B6F: BSF 06.20B70: BCF 03.50B71: BTFSC 06.20B72: GOTO 37E.................... {.................... sound_beep(100,800);0B73: MOVLW 640B74: MOVWF 390B75: MOVLW 030B76: MOVWF 3B0B77: MOVLW 200B78: MOVWF 3A0B79: BCF 0A.30B7A: CALL 60D0B7B: BSF 0A.3.................... voltage_setup=TRUE;0B7C: BSF 36.1.................... time_setup=FALSE;0B7D: BCF 36.2.................... }.................... }.................... }........................................ if ( input(S1) && input(S2) && input(S3) && input(S4) && input(S5) && input(S6)) // detekce pustenych tlacitek0B7E: BSF 2F.20B7F: MOVF 2F,W0B80: BSF 03.50B81: MOVWF 070B82: BCF 03.50B83: BTFSS 07.20B84: GOTO 3A10B85: BSF 2F.30B86: MOVF 2F,W0B87: BSF 03.50B88: MOVWF 070B89: BCF 03.50B8A: BTFSS 07.30B8B: GOTO 3A10B8C: BSF 03.50B8D: BSF 08.00B8E: BCF 03.50B8F: BTFSS 08.00B90: GOTO 3A10B91: BSF 03.50B92: BSF 08.10B93: BCF 03.50B94: BTFSS 08.10B95: GOTO 3A10B96: BSF 03.50B97: BSF 06.10B98: BCF 03.50B99: BTFSS 06.10B9A: GOTO 3A10B9B: BSF 03.50B9C: BSF 06.20B9D: BCF 03.50B9E: BTFSS 06.20B9F: GOTO 3A1.................... {.................... button_press=false;0BA0: BCF 36.0.................... }.................... }0BA1: GOTO 118.................... }0BA2: SLEEPConfiguration Fuses:Word 1: 2CF5 INTRC NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUGWord 2: 3FFF NOWRT BORV40