CCS PCM C Compiler, Version 4.106, 47914 26-VIII-13 19:04Filename: Z:\home\kaklik\svnMLAB\Designs\Measuring_instruments\GeoMet01A\SW\PIC16F887\main.lstROM used: 2940 words (36%)Largest free fragment is 2048RAM used: 21 (6%) at main() level46 (12%) worst caseStack: 5 locations*0000: MOVLW 0A0001: MOVWF 0A0002: GOTO 2280003: NOP.................... #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)*0078: MOVLW 3D0079: MOVWF 04007A: BCF 03.7007B: MOVF 00,W007C: BTFSC 03.2007D: GOTO 08B007E: MOVLW 02007F: MOVWF 780080: CLRF 770081: DECFSZ 77,F0082: GOTO 0810083: DECFSZ 78,F0084: GOTO 0800085: MOVLW 970086: MOVWF 770087: DECFSZ 77,F0088: GOTO 0870089: DECFSZ 00,F008A: GOTO 07E008B: RETURN.................... #use i2c(master, sda=PIN_C4, scl=PIN_C3)*0202: MOVLW 080203: MOVWF 780204: NOP0205: BCF 07.30206: BCF 20.30207: MOVF 20,W0208: BSF 03.50209: MOVWF 07020A: NOP020B: BCF 03.5020C: RLF 34,F020D: BCF 07.4020E: BTFSS 03.0020F: GOTO 2160210: BSF 20.40211: MOVF 20,W0212: BSF 03.50213: MOVWF 070214: GOTO 21A0215: BCF 03.50216: BCF 20.40217: MOVF 20,W0218: BSF 03.50219: MOVWF 07021A: NOP021B: BCF 03.5021C: BSF 20.3021D: MOVF 20,W021E: BSF 03.5021F: MOVWF 070220: BCF 03.50221: BTFSS 07.30222: GOTO 2210223: DECFSZ 78,F0224: GOTO 2040225: NOP0226: BCF 07.30227: BCF 20.30228: MOVF 20,W0229: BSF 03.5022A: MOVWF 07022B: NOP022C: BCF 03.5022D: BSF 20.4022E: MOVF 20,W022F: BSF 03.50230: MOVWF 070231: NOP0232: NOP0233: BCF 03.50234: BSF 20.30235: MOVF 20,W0236: BSF 03.50237: MOVWF 070238: BCF 03.50239: BTFSS 07.3023A: GOTO 239023B: CLRF 78023C: NOP023D: BTFSC 07.4023E: BSF 78.0023F: BCF 07.30240: BCF 20.30241: MOVF 20,W0242: BSF 03.50243: MOVWF 070244: BCF 03.50245: BCF 07.40246: BCF 20.40247: MOVF 20,W0248: BSF 03.50249: MOVWF 07024A: BCF 03.5024B: RETURN024C: MOVLW 08024D: MOVWF 35024E: MOVF 77,W024F: MOVWF 360250: BSF 20.40251: MOVF 20,W0252: BSF 03.50253: MOVWF 070254: NOP0255: BCF 03.50256: BSF 20.30257: MOVF 20,W0258: BSF 03.50259: MOVWF 07025A: BCF 03.5025B: BTFSS 07.3025C: GOTO 25B025D: BTFSC 07.4025E: BSF 03.0025F: BTFSS 07.40260: BCF 03.00261: RLF 78,F0262: NOP0263: BCF 20.30264: MOVF 20,W0265: BSF 03.50266: MOVWF 070267: BCF 03.50268: BCF 07.30269: DECFSZ 35,F026A: GOTO 250026B: BSF 20.4026C: MOVF 20,W026D: BSF 03.5026E: MOVWF 07026F: NOP0270: BCF 03.50271: BCF 07.40272: MOVF 36,W0273: BTFSC 03.20274: GOTO 27A0275: BCF 20.40276: MOVF 20,W0277: BSF 03.50278: MOVWF 070279: BCF 03.5027A: NOP027B: BSF 20.3027C: MOVF 20,W027D: BSF 03.5027E: MOVWF 07027F: BCF 03.50280: BTFSS 07.30281: GOTO 2800282: NOP0283: BCF 07.30284: BCF 20.30285: MOVF 20,W0286: BSF 03.50287: MOVWF 070288: NOP0289: BCF 03.5028A: BCF 07.4028B: BCF 20.4028C: MOVF 20,W028D: BSF 03.5028E: MOVWF 07028F: BCF 03.50290: RETURN.................... #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)................................................................................ #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);*00F1: BSF 08.4.................... output_float(LCD_DATA5);00F2: BSF 08.5.................... output_float(LCD_DATA6);00F3: BSF 08.6.................... output_float(LCD_DATA7);00F4: BSF 08.7.................... #else.................... lcdtris.data = 0xF;.................... #endif.................... #endif........................................ lcd_output_rw(1);00F5: BCF 03.500F6: BSF 09.200F7: BSF 03.500F8: BCF 09.2.................... delay_cycles(1);00F9: NOP.................... lcd_output_enable(1);00FA: BCF 03.500FB: BSF 09.000FC: BSF 03.500FD: BCF 09.0.................... delay_cycles(1);00FE: NOP.................... high = lcd_read_nibble();00FF: BCF 03.50100: CALL 0B80101: MOVF 78,W0102: MOVWF 44........................................ lcd_output_enable(0);0103: BCF 09.00104: BSF 03.50105: BCF 09.0.................... delay_cycles(1);0106: NOP.................... lcd_output_enable(1);0107: BCF 03.50108: BSF 09.00109: BSF 03.5010A: BCF 09.0.................... delay_us(1);010B: GOTO 10C.................... low = lcd_read_nibble();010C: BCF 03.5010D: CALL 0B8010E: MOVF 78,W010F: MOVWF 43........................................ lcd_output_enable(0);0110: BCF 09.00111: BSF 03.50112: 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);0113: BCF 08.4.................... output_drive(LCD_DATA5);0114: BCF 08.5.................... output_drive(LCD_DATA6);0115: BCF 08.6.................... output_drive(LCD_DATA7);0116: BCF 08.7.................... #else.................... lcdtris.data = 0x0;.................... #endif.................... #endif........................................ return( (high<<4) | low);0117: BCF 03.50118: SWAPF 44,W0119: MOVWF 77011A: MOVLW F0011B: ANDWF 77,F011C: MOVF 77,W011D: IORWF 43,W011E: MOVWF 78.................... }........................................ BYTE lcd_read_nibble(void).................... {.................... #if (defined(LCD_DATA4) && defined(LCD_DATA5) && defined(LCD_DATA6) && defined(LCD_DATA7))*00B8: CLRF 45.................... BYTE n = 0x00;........................................ /* Read the data port */.................... n |= input(LCD_DATA4);00B9: BSF 03.500BA: BSF 08.400BB: MOVLW 0000BC: BCF 03.500BD: BTFSC 08.400BE: MOVLW 0100BF: IORWF 45,F.................... n |= input(LCD_DATA5) << 1;00C0: BSF 03.500C1: BSF 08.500C2: MOVLW 0000C3: BCF 03.500C4: BTFSC 08.500C5: MOVLW 0100C6: MOVWF 7700C7: BCF 03.000C8: RLF 77,F00C9: MOVF 77,W00CA: IORWF 45,F.................... n |= input(LCD_DATA6) << 2;00CB: BSF 03.500CC: BSF 08.600CD: MOVLW 0000CE: BCF 03.500CF: BTFSC 08.600D0: MOVLW 0100D1: MOVWF 7700D2: RLF 77,F00D3: RLF 77,F00D4: MOVLW FC00D5: ANDWF 77,F00D6: MOVF 77,W00D7: IORWF 45,F.................... n |= input(LCD_DATA7) << 3;00D8: BSF 03.500D9: BSF 08.700DA: MOVLW 0000DB: BCF 03.500DC: BTFSC 08.700DD: MOVLW 0100DE: MOVWF 7700DF: RLF 77,F00E0: RLF 77,F00E1: RLF 77,F00E2: MOVLW F800E3: ANDWF 77,F00E4: MOVF 77,W00E5: IORWF 45,F........................................ return(n);00E6: MOVF 45,W00E7: MOVWF 78.................... #else.................... return(lcd.data);.................... #endif.................... }00E8: 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));*008C: BTFSC 44.0008D: GOTO 090008E: BCF 08.4008F: GOTO 0910090: BSF 08.40091: BSF 03.50092: BCF 08.4.................... output_bit(LCD_DATA5, bit_test(n, 1));0093: BCF 03.50094: BTFSC 44.10095: GOTO 0980096: BCF 08.50097: GOTO 0990098: BSF 08.50099: BSF 03.5009A: BCF 08.5.................... output_bit(LCD_DATA6, bit_test(n, 2));009B: BCF 03.5009C: BTFSC 44.2009D: GOTO 0A0009E: BCF 08.6009F: GOTO 0A100A0: BSF 08.600A1: BSF 03.500A2: BCF 08.6.................... output_bit(LCD_DATA7, bit_test(n, 3));00A3: BCF 03.500A4: BTFSC 44.300A5: GOTO 0A800A6: BCF 08.700A7: GOTO 0A900A8: BSF 08.700A9: BSF 03.500AA: BCF 08.7.................... #else.................... lcdlat.data = n;.................... #endif........................................ delay_cycles(1);00AB: NOP.................... lcd_output_enable(1);00AC: BCF 03.500AD: BSF 09.000AE: BSF 03.500AF: BCF 09.0.................... delay_us(2);00B0: GOTO 0B100B1: GOTO 0B2.................... lcd_output_enable(0);00B2: BCF 03.500B3: BCF 09.000B4: BSF 03.500B5: BCF 09.0.................... }00B6: BCF 03.500B7: RETURN........................................ void lcd_send_byte(BYTE address, BYTE n).................... {.................... #if defined(__PCB__).................... set_tris_lcd(LCD_OUTPUT_MAP);.................... #else.................... lcd_enable_tris();*00E9: BSF 03.500EA: BCF 09.0.................... lcd_rs_tris();00EB: BCF 09.1.................... lcd_rw_tris();00EC: BCF 09.2.................... #endif........................................ lcd_output_rs(0);00ED: BCF 03.500EE: BCF 09.100EF: BSF 03.500F0: BCF 09.1.................... while ( bit_test(lcd_read_byte(),7) ) ;*011F: MOVF 78,W0120: MOVWF 430121: BTFSS 43.70122: GOTO 1250123: BSF 03.50124: GOTO 0F1.................... lcd_output_rs(address);0125: MOVF 41,F0126: BTFSS 03.20127: GOTO 12A0128: BCF 09.10129: GOTO 12B012A: BSF 09.1012B: BSF 03.5012C: BCF 09.1.................... delay_cycles(1);012D: NOP.................... lcd_output_rw(0);012E: BCF 03.5012F: BCF 09.20130: BSF 03.50131: BCF 09.2.................... delay_cycles(1);0132: NOP.................... lcd_output_enable(0);0133: BCF 03.50134: BCF 09.00135: BSF 03.50136: BCF 09.0.................... lcd_send_nibble(n >> 4);0137: BCF 03.50138: SWAPF 42,W0139: MOVWF 43013A: MOVLW 0F013B: ANDWF 43,F013C: MOVF 43,W013D: MOVWF 44013E: CALL 08C.................... lcd_send_nibble(n & 0xf);013F: MOVF 42,W0140: ANDLW 0F0141: MOVWF 430142: MOVWF 440143: CALL 08C.................... }0144: 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);0145: BSF 03.50146: BCF 08.4.................... output_drive(LCD_DATA5);0147: BCF 08.5.................... output_drive(LCD_DATA6);0148: BCF 08.6.................... output_drive(LCD_DATA7);0149: BCF 08.7.................... #else.................... lcdtris.data = 0x0;.................... #endif.................... lcd_enable_tris();014A: BCF 09.0.................... lcd_rs_tris();014B: BCF 09.1.................... lcd_rw_tris();014C: BCF 09.2.................... #endif........................................ lcd_output_rs(0);014D: BCF 03.5014E: BCF 09.1014F: BSF 03.50150: BCF 09.1.................... lcd_output_rw(0);0151: BCF 03.50152: BCF 09.20153: BSF 03.50154: BCF 09.2.................... lcd_output_enable(0);0155: BCF 03.50156: BCF 09.00157: BSF 03.50158: BCF 09.0........................................ delay_ms(15);0159: MOVLW 0F015A: BCF 03.5015B: MOVWF 3D015C: CALL 078.................... for(i=1;i<=3;++i)015D: MOVLW 01015E: MOVWF 2F015F: MOVF 2F,W0160: SUBLW 030161: BTFSS 03.00162: GOTO 16B.................... {.................... lcd_send_nibble(3);0163: MOVLW 030164: MOVWF 440165: CALL 08C.................... delay_ms(5);0166: MOVLW 050167: MOVWF 3D0168: CALL 078.................... }0169: INCF 2F,F016A: GOTO 15F........................................ lcd_send_nibble(2);016B: MOVLW 02016C: MOVWF 44016D: CALL 08C.................... for(i=0;i<=3;++i)016E: CLRF 2F016F: MOVF 2F,W0170: SUBLW 030171: BTFSS 03.00172: GOTO 17C.................... lcd_send_byte(0,LCD_INIT_STRING[i]);0173: MOVF 2F,W0174: CALL 0040175: MOVWF 300176: CLRF 410177: MOVF 30,W0178: MOVWF 420179: CALL 0E9........................................ #if defined(LCD_EXTENDED_NEWLINE)017A: INCF 2F,F017B: GOTO 16F.................... g_LcdX = 0;.................... g_LcdY = 0;.................... #endif.................... }017C: RETURN........................................ void lcd_gotoxy(BYTE x, BYTE y).................... {.................... BYTE address;........................................ if(y!=1)017D: DECFSZ 3E,W017E: GOTO 180017F: GOTO 183.................... address=LCD_LINE_TWO;0180: MOVLW 400181: MOVWF 3F.................... else0182: GOTO 184.................... address=0;0183: CLRF 3F........................................ address+=x-1;0184: MOVLW 010185: SUBWF 3D,W0186: ADDWF 3F,F.................... lcd_send_byte(0,0x80|address);0187: MOVF 3F,W0188: IORLW 800189: MOVWF 40018A: CLRF 41018B: MOVF 40,W018C: MOVWF 42018D: CALL 0E9........................................ #if defined(LCD_EXTENDED_NEWLINE).................... g_LcdX = x - 1;.................... g_LcdY = y - 1;.................... #endif.................... }018E: RETURN........................................ void lcd_putc(char c).................... {.................... switch (c).................... {018F: MOVF 3C,W0190: XORLW 070191: BTFSC 03.20192: GOTO 19D0193: XORLW 0B0194: BTFSC 03.20195: GOTO 1A20196: XORLW 060197: BTFSC 03.20198: GOTO 1AA0199: XORLW 02019A: BTFSC 03.2019B: GOTO 1B0019C: GOTO 1B5.................... case '\a' : lcd_gotoxy(1,1); break;019D: MOVLW 01019E: MOVWF 3D019F: MOVWF 3E01A0: CALL 17D01A1: GOTO 1BB........................................ case '\f' : lcd_send_byte(0,1);01A2: CLRF 4101A3: MOVLW 0101A4: MOVWF 4201A5: CALL 0E9.................... delay_ms(2);01A6: MOVLW 0201A7: MOVWF 3D01A8: CALL 078.................... #if defined(LCD_EXTENDED_NEWLINE).................... g_LcdX = 0;.................... g_LcdY = 0;.................... #endif.................... break;01A9: GOTO 1BB........................................ #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;01AA: MOVLW 0101AB: MOVWF 3D01AC: MOVLW 0201AD: MOVWF 3E01AE: CALL 17D01AF: GOTO 1BB.................... #endif........................................ case '\b' : lcd_send_byte(0,0x10); break;01B0: CLRF 4101B1: MOVLW 1001B2: MOVWF 4201B3: CALL 0E901B4: GOTO 1BB........................................ #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;01B5: MOVLW 0101B6: MOVWF 4101B7: MOVF 3C,W01B8: MOVWF 4201B9: CALL 0E901BA: GOTO 1BB.................... #endif.................... }.................... }01BB: 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);.................... }............................................................ #include "../SHT25.h"........................................ #define SHT25_HEATER_ON 0x04.................... #define SHT25_HEATER_OFF 0x00.................... #define SHT25_OTP_reload_off 0x02.................... #define SHT25_RH12_T14 0x00.................... #define SHT25_RH8_T12 0x01.................... #define SHT25_RH10_T13 0x80.................... #define SHT25_RH11_T11 0x81........................................ #define SHT25_ADDR 0x80........................................ #include "SHT25.c".................... void SHT25_soft_reset().................... {.................... i2c_start(); // Start condition.................... i2c_write(0x80); // Device address.................... i2c_write(0xFE); // Device command.................... i2c_stop(); // Stop condition.................... }........................................ unsigned int8 SHT25_setup(unsigned int8 setup_reg ) // writes to status register and returns its value.................... {.................... unsigned int8 reg;........................................ i2c_start(); // Start condition.................... i2c_write(SHT25_ADDR); // Device address.................... i2c_write(0xE7); // Device command........................................ i2c_start(); // Start condition.................... i2c_write(SHT25_ADDR+1); // Device address.................... reg=i2c_read(0); // Read status actual status register........................................ reg = (reg & 0x3A) | setup_reg;........................................ i2c_start(); // Start condition.................... i2c_write(SHT25_ADDR); // Device address.................... i2c_write(0xE6); // Write to status register.................... i2c_write(reg); // Device command.................... i2c_stop(); // Stop condition........................................ delay_ms(10);........................................ i2c_start(); // Start condition.................... i2c_write(SHT25_ADDR); // Device address.................... i2c_write(0xE7); // Device command........................................ i2c_start(); // Start condition.................... i2c_write(SHT25_ADDR+1); // Device address.................... reg=i2c_read(0); // Read status actual status register........................................ return (reg);.................... }............................................................ float SHT25_get_temp().................... {.................... unsigned int8 MSB, LSB, Check;.................... unsigned int16 data;........................................ i2c_start();*052E: BSF 20.4052F: MOVF 20,W0530: BSF 03.50531: MOVWF 070532: NOP0533: BCF 03.50534: BSF 20.30535: MOVF 20,W0536: BSF 03.50537: MOVWF 070538: NOP0539: BCF 03.5053A: BTFSS 07.3053B: GOTO 53A053C: BCF 07.4053D: BCF 20.4053E: MOVF 20,W053F: BSF 03.50540: MOVWF 070541: NOP0542: BCF 03.50543: BCF 07.30544: BCF 20.30545: MOVF 20,W0546: BSF 03.50547: MOVWF 07.................... I2C_Write(SHT25_ADDR);0548: MOVLW 800549: BCF 03.5054A: MOVWF 34054B: CALL 202.................... I2C_write(0xE3);054C: MOVLW E3054D: MOVWF 34054E: CALL 202.................... i2c_stop();054F: BCF 20.40550: MOVF 20,W0551: BSF 03.50552: MOVWF 070553: NOP0554: BCF 03.50555: BSF 20.30556: MOVF 20,W0557: BSF 03.50558: MOVWF 070559: BCF 03.5055A: BTFSS 07.3055B: GOTO 55A055C: NOP055D: GOTO 55E055E: NOP055F: BSF 20.40560: MOVF 20,W0561: BSF 03.50562: MOVWF 070563: NOP........................................ delay_ms(100);0564: MOVLW 640565: BCF 03.50566: MOVWF 3D0567: CALL 078........................................ i2c_start();0568: BSF 20.40569: MOVF 20,W056A: BSF 03.5056B: MOVWF 07056C: NOP056D: BCF 03.5056E: BSF 20.3056F: MOVF 20,W0570: BSF 03.50571: MOVWF 070572: NOP0573: BCF 03.50574: BCF 07.40575: BCF 20.40576: MOVF 20,W0577: BSF 03.50578: MOVWF 070579: NOP057A: BCF 03.5057B: BCF 07.3057C: BCF 20.3057D: MOVF 20,W057E: BSF 03.5057F: MOVWF 07.................... I2C_Write(SHT25_ADDR+1);0580: MOVLW 810581: BCF 03.50582: MOVWF 340583: CALL 202.................... MSB=i2c_read(1);0584: MOVLW 010585: MOVWF 770586: CALL 24C0587: MOVF 78,W0588: MOVWF 2F.................... LSB=i2c_read(1);0589: MOVLW 01058A: MOVWF 77058B: CALL 24C058C: MOVF 78,W058D: MOVWF 30.................... Check=i2c_read(0);058E: CLRF 77058F: CALL 24C0590: MOVF 78,W0591: MOVWF 31.................... i2c_stop();0592: BCF 20.40593: MOVF 20,W0594: BSF 03.50595: MOVWF 070596: NOP0597: BCF 03.50598: BSF 20.30599: MOVF 20,W059A: BSF 03.5059B: MOVWF 07059C: BCF 03.5059D: BTFSS 07.3059E: GOTO 59D059F: NOP05A0: GOTO 5A105A1: NOP05A2: BSF 20.405A3: MOVF 20,W05A4: BSF 03.505A5: MOVWF 0705A6: NOP........................................ LSB = LSB >> 2; // trow out status bits05A7: BCF 03.505A8: RRF 30,F05A9: RRF 30,F05AA: MOVLW 3F05AB: ANDWF 30,F........................................ data = (((unsigned int16) MSB << 8) + (LSB << 4));05AC: CLRF 3505AD: MOVF 2F,W05AE: MOVWF 3405AF: MOVWF 3505B0: CLRF 3405B1: SWAPF 30,W05B2: MOVWF 7705B3: MOVLW F005B4: ANDWF 77,F05B5: MOVF 77,W05B6: ADDWF 34,W05B7: MOVWF 3205B8: MOVF 35,W05B9: MOVWF 3305BA: BTFSC 03.005BB: INCF 33,F.................... return(-46.85 + 175.72*((float)data/0xFFFF));05BC: MOVF 33,W05BD: MOVWF 3505BE: MOVF 32,W05BF: MOVWF 3405C0: CALL 29105C1: MOVF 77,W05C2: MOVWF 3405C3: MOVF 78,W05C4: MOVWF 3505C5: MOVF 79,W05C6: MOVWF 3605C7: MOVF 7A,W05C8: MOVWF 3705C9: MOVWF 3B05CA: MOVF 79,W05CB: MOVWF 3A05CC: MOVF 78,W05CD: MOVWF 3905CE: MOVF 77,W05CF: MOVWF 3805D0: CLRF 3F05D1: MOVLW FF05D2: MOVWF 3E05D3: MOVLW 7F05D4: MOVWF 3D05D5: MOVLW 8E05D6: MOVWF 3C05D7: CALL 2AE05D8: MOVLW 5205D9: MOVWF 3F05DA: MOVLW B805DB: MOVWF 3E05DC: MOVLW 2F05DD: MOVWF 3D05DE: MOVLW 8605DF: MOVWF 3C05E0: MOVF 7A,W05E1: MOVWF 4305E2: MOVF 79,W05E3: MOVWF 4205E4: MOVF 78,W05E5: MOVWF 4105E6: MOVF 77,W05E7: MOVWF 4005E8: CALL 37805E9: BCF 03.105EA: MOVLW 6605EB: MOVWF 3705EC: MOVWF 3605ED: MOVLW BB05EE: MOVWF 3505EF: MOVLW 8405F0: MOVWF 3405F1: MOVF 7A,W05F2: MOVWF 3B05F3: MOVF 79,W05F4: MOVWF 3A05F5: MOVF 78,W05F6: MOVWF 3905F7: MOVF 77,W05F8: MOVWF 3805F9: CALL 3ED.................... }05FA: BSF 0A.305FB: BCF 0A.405FC: GOTO 2E4 (RETURN)........................................ float SHT25_get_hum().................... {.................... unsigned int8 MSB, LSB, Check;.................... unsigned int16 data;........................................ i2c_start(); //RH05FD: BSF 20.405FE: MOVF 20,W05FF: BSF 03.50600: MOVWF 070601: NOP0602: BCF 03.50603: BSF 20.30604: MOVF 20,W0605: BSF 03.50606: MOVWF 070607: NOP0608: BCF 03.50609: BCF 07.4060A: BCF 20.4060B: MOVF 20,W060C: BSF 03.5060D: MOVWF 07060E: NOP060F: BCF 03.50610: BCF 07.30611: BCF 20.30612: MOVF 20,W0613: BSF 03.50614: MOVWF 07.................... I2C_Write(SHT25_ADDR);0615: MOVLW 800616: BCF 03.50617: MOVWF 340618: CALL 202.................... I2C_write(0xE5);0619: MOVLW E5061A: MOVWF 34061B: CALL 202........................................ delay_ms(100);061C: MOVLW 64061D: MOVWF 3D061E: CALL 078........................................ i2c_start();061F: BSF 20.40620: MOVF 20,W0621: BSF 03.50622: MOVWF 070623: NOP0624: BCF 03.50625: BSF 20.30626: MOVF 20,W0627: BSF 03.50628: MOVWF 070629: NOP062A: BCF 03.5062B: BTFSS 07.3062C: GOTO 62B062D: BCF 07.4062E: BCF 20.4062F: MOVF 20,W0630: BSF 03.50631: MOVWF 070632: NOP0633: BCF 03.50634: BCF 07.30635: BCF 20.30636: MOVF 20,W0637: BSF 03.50638: MOVWF 07.................... I2C_Write(SHT25_ADDR+1);0639: MOVLW 81063A: BCF 03.5063B: MOVWF 34063C: CALL 202.................... MSB=i2c_read(1);063D: MOVLW 01063E: MOVWF 77063F: CALL 24C0640: MOVF 78,W0641: MOVWF 2F.................... LSB=i2c_read(1);0642: MOVLW 010643: MOVWF 770644: CALL 24C0645: MOVF 78,W0646: MOVWF 30.................... Check=i2c_read(0);0647: CLRF 770648: CALL 24C0649: MOVF 78,W064A: MOVWF 31.................... i2c_stop();064B: BCF 20.4064C: MOVF 20,W064D: BSF 03.5064E: MOVWF 07064F: NOP0650: BCF 03.50651: BSF 20.30652: MOVF 20,W0653: BSF 03.50654: MOVWF 070655: BCF 03.50656: BTFSS 07.30657: GOTO 6560658: NOP0659: GOTO 65A065A: NOP065B: BSF 20.4065C: MOVF 20,W065D: BSF 03.5065E: MOVWF 07065F: NOP........................................ LSB = LSB >> 2; // trow out status bits0660: BCF 03.50661: RRF 30,F0662: RRF 30,F0663: MOVLW 3F0664: ANDWF 30,F........................................ data = (((unsigned int16) MSB << 8) + (LSB << 4) );0665: CLRF 350666: MOVF 2F,W0667: MOVWF 340668: MOVWF 350669: CLRF 34066A: SWAPF 30,W066B: MOVWF 77066C: MOVLW F0066D: ANDWF 77,F066E: MOVF 77,W066F: ADDWF 34,W0670: MOVWF 320671: MOVF 35,W0672: MOVWF 330673: BTFSC 03.00674: INCF 33,F.................... return( -6.0 + 125.0*((float)data/0xFFFF));0675: MOVF 33,W0676: MOVWF 350677: MOVF 32,W0678: MOVWF 340679: CALL 291067A: MOVF 77,W067B: MOVWF 34067C: MOVF 78,W067D: MOVWF 35067E: MOVF 79,W067F: MOVWF 360680: MOVF 7A,W0681: MOVWF 370682: MOVWF 3B0683: MOVF 79,W0684: MOVWF 3A0685: MOVF 78,W0686: MOVWF 390687: MOVF 77,W0688: MOVWF 380689: CLRF 3F068A: MOVLW FF068B: MOVWF 3E068C: MOVLW 7F068D: MOVWF 3D068E: MOVLW 8E068F: MOVWF 3C0690: CALL 2AE0691: CLRF 3F0692: CLRF 3E0693: MOVLW 7A0694: MOVWF 3D0695: MOVLW 850696: MOVWF 3C0697: MOVF 7A,W0698: MOVWF 430699: MOVF 79,W069A: MOVWF 42069B: MOVF 78,W069C: MOVWF 41069D: MOVF 77,W069E: MOVWF 40069F: CALL 37806A0: BCF 03.106A1: CLRF 3706A2: CLRF 3606A3: MOVLW C006A4: MOVWF 3506A5: MOVLW 8106A6: MOVWF 3406A7: MOVF 7A,W06A8: MOVWF 3B06A9: MOVF 79,W06AA: MOVWF 3A06AB: MOVF 78,W06AC: MOVWF 3906AD: MOVF 77,W06AE: MOVWF 3806AF: CALL 3ED.................... }06B0: BSF 0A.306B1: BCF 0A.406B2: GOTO 2EF (RETURN).................................................................................................... #include "../LTS01.h".................... //Adresa pro VDD, VDD, VDD W 0x9E R 0x9F.................... //Adresa pro GND GND GND W 0x90 R 0x91........................................ #define LTS01A_address 0x90........................................ #include "LTS01.c".................... float LTS01_get_temp().................... {.................... unsigned int8 MSB;.................... unsigned int8 LSB;.................... signed int16 data;........................................ i2c_start();06B3: BSF 20.406B4: MOVF 20,W06B5: BSF 03.506B6: MOVWF 0706B7: NOP06B8: BCF 03.506B9: BSF 20.306BA: MOVF 20,W06BB: BSF 03.506BC: MOVWF 0706BD: NOP06BE: BCF 03.506BF: BCF 07.406C0: BCF 20.406C1: MOVF 20,W06C2: BSF 03.506C3: MOVWF 0706C4: NOP06C5: BCF 03.506C6: BCF 07.306C7: BCF 20.306C8: MOVF 20,W06C9: BSF 03.506CA: MOVWF 07.................... I2C_Write(LTS01A_address);06CB: MOVLW 9006CC: BCF 03.506CD: MOVWF 3406CE: CALL 202.................... I2C_write(0x00);06CF: CLRF 3406D0: CALL 202.................... i2c_stop();06D1: BCF 20.406D2: MOVF 20,W06D3: BSF 03.506D4: MOVWF 0706D5: NOP06D6: BCF 03.506D7: BSF 20.306D8: MOVF 20,W06D9: BSF 03.506DA: MOVWF 0706DB: BCF 03.506DC: BTFSS 07.306DD: GOTO 6DC06DE: NOP06DF: GOTO 6E006E0: NOP06E1: BSF 20.406E2: MOVF 20,W06E3: BSF 03.506E4: MOVWF 0706E5: NOP.................... i2c_start();06E6: BCF 03.506E7: BSF 20.406E8: MOVF 20,W06E9: BSF 03.506EA: MOVWF 0706EB: NOP06EC: BCF 03.506ED: BSF 20.306EE: MOVF 20,W06EF: BSF 03.506F0: MOVWF 0706F1: NOP06F2: BCF 03.506F3: BCF 07.406F4: BCF 20.406F5: MOVF 20,W06F6: BSF 03.506F7: MOVWF 0706F8: NOP06F9: BCF 03.506FA: BCF 07.306FB: BCF 20.306FC: MOVF 20,W06FD: BSF 03.506FE: MOVWF 07.................... I2C_Write(LTS01A_address+1);06FF: MOVLW 910700: BCF 03.50701: MOVWF 340702: CALL 202.................... MSB=i2c_read(1);0703: MOVLW 010704: MOVWF 770705: CALL 24C0706: MOVF 78,W0707: MOVWF 2F.................... LSB=i2c_read(0);0708: CLRF 770709: CALL 24C070A: MOVF 78,W070B: MOVWF 30.................... i2c_stop();070C: BCF 20.4070D: MOVF 20,W070E: BSF 03.5070F: MOVWF 070710: NOP0711: BCF 03.50712: BSF 20.30713: MOVF 20,W0714: BSF 03.50715: MOVWF 070716: BCF 03.50717: BTFSS 07.30718: GOTO 7170719: NOP071A: GOTO 71B071B: NOP071C: BSF 20.4071D: MOVF 20,W071E: BSF 03.5071F: MOVWF 070720: NOP........................................ data = MAKE16(MSB,LSB);0721: BCF 03.50722: MOVF 2F,W0723: MOVWF 320724: MOVF 30,W0725: MOVWF 31........................................ return (data * 0.00390625 );0726: MOVF 32,W0727: MOVWF 340728: MOVF 31,W0729: MOVWF 33072A: MOVF 34,W072B: MOVWF 36072C: MOVF 33,W072D: MOVWF 35*0752: MOVF 7A,W0753: MOVWF 3F0754: MOVF 79,W0755: MOVWF 3E0756: MOVF 78,W0757: MOVWF 3D0758: MOVF 77,W0759: MOVWF 3C075A: CLRF 43075B: CLRF 42075C: CLRF 41075D: MOVLW 77075E: MOVWF 40075F: CALL 378........................................ }0760: BSF 0A.30761: BCF 0A.40762: GOTO 2FA (RETURN).................................................................................................... void main().................... {*0A28: CLRF 040A29: BCF 03.70A2A: MOVLW 1F0A2B: ANDWF 03,F0A2C: MOVLW 710A2D: BSF 03.50A2E: MOVWF 0F0A2F: MOVF 0F,W0A30: BSF 03.60A31: BCF 07.30A32: MOVLW 0C0A33: BCF 03.60A34: MOVWF 190A35: MOVLW A20A36: MOVWF 180A37: MOVLW 900A38: BCF 03.50A39: MOVWF 180A3A: BSF 03.50A3B: BSF 03.60A3C: MOVF 09,W0A3D: ANDLW C00A3E: MOVWF 090A3F: BCF 03.60A40: BCF 1F.40A41: BCF 1F.50A42: MOVLW 000A43: BSF 03.60A44: MOVWF 080A45: BCF 03.50A46: CLRF 070A47: CLRF 080A48: CLRF 09*0A4C: CLRF 2E0A4D: CLRF 2D.................... float temp1, temp2, humidity;.................... int16 i=0;........................................ setup_adc_ports(NO_ANALOGS|VSS_VDD);0A4E: BSF 03.50A4F: BSF 03.60A50: MOVF 09,W0A51: ANDLW C00A52: MOVWF 090A53: BCF 03.60A54: BCF 1F.40A55: BCF 1F.50A56: MOVLW 000A57: BSF 03.60A58: MOVWF 08.................... setup_adc(ADC_CLOCK_DIV_2);0A59: BCF 03.50A5A: BCF 03.60A5B: BCF 1F.60A5C: BCF 1F.70A5D: BSF 03.50A5E: BSF 1F.70A5F: BCF 03.50A60: BSF 1F.0.................... setup_spi(SPI_SS_DISABLED);0A61: BCF 14.50A62: BCF 20.50A63: MOVF 20,W0A64: BSF 03.50A65: MOVWF 070A66: BCF 03.50A67: BSF 20.40A68: MOVF 20,W0A69: BSF 03.50A6A: MOVWF 070A6B: BCF 03.50A6C: BCF 20.30A6D: MOVF 20,W0A6E: BSF 03.50A6F: MOVWF 070A70: MOVLW 010A71: BCF 03.50A72: MOVWF 140A73: MOVLW 000A74: BSF 03.50A75: MOVWF 14.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);0A76: MOVF 01,W0A77: ANDLW C70A78: IORLW 080A79: MOVWF 01.................... setup_timer_1(T1_DISABLED);0A7A: BCF 03.50A7B: CLRF 10.................... setup_timer_2(T2_DISABLED,0,1);0A7C: MOVLW 000A7D: MOVWF 780A7E: MOVWF 120A7F: MOVLW 000A80: BSF 03.50A81: MOVWF 12.................... setup_ccp1(CCP_OFF);0A82: BCF 03.50A83: BSF 20.20A84: MOVF 20,W0A85: BSF 03.50A86: MOVWF 070A87: BCF 03.50A88: CLRF 170A89: BSF 03.50A8A: CLRF 1B0A8B: CLRF 1C0A8C: MOVLW 010A8D: MOVWF 1D.................... setup_comparator(NC_NC_NC_NC); // This device COMP currently not supported by the PICWizard0A8E: BCF 03.50A8F: BSF 03.60A90: CLRF 070A91: CLRF 080A92: CLRF 09.................... setup_oscillator(OSC_8MHZ);0A93: MOVLW 710A94: BSF 03.50A95: BCF 03.60A96: MOVWF 0F0A97: MOVF 0F,W............................................................ printf("GeoMet01A\r\n",);0A98: MOVLW 0C0A99: BCF 03.50A9A: BSF 03.60A9B: MOVWF 0D0A9C: MOVLW 000A9D: MOVWF 0F0A9E: BCF 0A.30A9F: BCF 03.60AA0: CALL 0300AA1: BSF 0A.3.................... printf("(c) Kaklik 2013\r\n");0AA2: MOVLW 120AA3: BSF 03.60AA4: MOVWF 0D0AA5: MOVLW 000AA6: MOVWF 0F0AA7: BCF 0A.30AA8: BCF 03.60AA9: CALL 0300AAA: BSF 0A.3.................... printf("www.mlab.cz\r\n");0AAB: MOVLW 1B0AAC: BSF 03.60AAD: MOVWF 0D0AAE: MOVLW 000AAF: MOVWF 0F0AB0: BCF 0A.30AB1: BCF 03.60AB2: CALL 0300AB3: BSF 0A.3........................................ lcd_init();0AB4: BCF 0A.30AB5: CALL 1450AB6: BSF 0A.3.................... lcd_putc("(c) Kaklik 2013");0AB7: MOVLW 220AB8: BSF 03.60AB9: MOVWF 0D0ABA: MOVLW 000ABB: MOVWF 0F0ABC: BCF 0A.30ABD: BCF 03.60ABE: CALL 1BC0ABF: BSF 0A.3.................... lcd_gotoxy(3,2);0AC0: MOVLW 030AC1: MOVWF 3D0AC2: MOVLW 020AC3: MOVWF 3E0AC4: BCF 0A.30AC5: CALL 17D0AC6: BSF 0A.3.................... lcd_putc("www.mlab.cz");0AC7: MOVLW 2A0AC8: BSF 03.60AC9: MOVWF 0D0ACA: MOVLW 000ACB: MOVWF 0F0ACC: BCF 0A.30ACD: BCF 03.60ACE: CALL 1BC0ACF: BSF 0A.3.................... Delay_ms(2000);0AD0: MOVLW 080AD1: MOVWF 2F0AD2: MOVLW FA0AD3: MOVWF 3D0AD4: BCF 0A.30AD5: CALL 0780AD6: BSF 0A.30AD7: DECFSZ 2F,F0AD8: GOTO 2D2.................... lcd_init();0AD9: BCF 0A.30ADA: CALL 1450ADB: BSF 0A.3........................................ while (TRUE).................... {.................... lcd_gotoxy(1,1);0ADC: MOVLW 010ADD: MOVWF 3D0ADE: MOVWF 3E0ADF: BCF 0A.30AE0: CALL 17D0AE1: BSF 0A.3.................... temp1 = SHT25_get_temp();0AE2: BCF 0A.30AE3: GOTO 52E0AE4: BSF 0A.30AE5: MOVF 7A,W0AE6: MOVWF 240AE7: MOVF 79,W0AE8: MOVWF 230AE9: MOVF 78,W0AEA: MOVWF 220AEB: MOVF 77,W0AEC: MOVWF 21.................... humidity = SHT25_get_hum();0AED: BCF 0A.30AEE: GOTO 5FD0AEF: BSF 0A.30AF0: MOVF 7A,W0AF1: MOVWF 2C0AF2: MOVF 79,W0AF3: MOVWF 2B0AF4: MOVF 78,W0AF5: MOVWF 2A0AF6: MOVF 77,W0AF7: MOVWF 29.................... temp2= LTS01_get_temp();0AF8: BCF 0A.30AF9: GOTO 6B30AFA: BSF 0A.30AFB: MOVF 7A,W0AFC: MOVWF 280AFD: MOVF 79,W0AFE: MOVWF 270AFF: MOVF 78,W0B00: MOVWF 260B01: MOVF 77,W0B02: MOVWF 25........................................ printf(lcd_putc,"%f C %f \%% \r\n",temp1, humidity);0B03: MOVLW 890B04: MOVWF 040B05: MOVF 24,W0B06: MOVWF 320B07: MOVF 23,W0B08: MOVWF 310B09: MOVF 22,W0B0A: MOVWF 300B0B: MOVF 21,W0B0C: MOVWF 2F0B0D: MOVLW 020B0E: MOVWF 330B0F: CALL 0000B10: MOVLW 200B11: MOVWF 3C0B12: BCF 0A.30B13: CALL 18F0B14: BSF 0A.30B15: MOVLW 430B16: MOVWF 3C0B17: BCF 0A.30B18: CALL 18F0B19: BSF 0A.30B1A: MOVLW 200B1B: MOVWF 3C0B1C: BCF 0A.30B1D: CALL 18F0B1E: BSF 0A.30B1F: MOVLW 890B20: MOVWF 040B21: MOVF 2C,W0B22: MOVWF 320B23: MOVF 2B,W0B24: MOVWF 310B25: MOVF 2A,W0B26: MOVWF 300B27: MOVF 29,W0B28: MOVWF 2F0B29: MOVLW 020B2A: MOVWF 330B2B: CALL 0000B2C: MOVLW 200B2D: MOVWF 3C0B2E: BCF 0A.30B2F: CALL 18F0B30: BSF 0A.30B31: MOVLW 250B32: MOVWF 3C0B33: BCF 0A.30B34: CALL 18F0B35: BSF 0A.30B36: MOVLW 200B37: MOVWF 3C0B38: BCF 0A.30B39: CALL 18F0B3A: BSF 0A.30B3B: MOVLW 0D0B3C: MOVWF 3C0B3D: BCF 0A.30B3E: CALL 18F0B3F: BSF 0A.30B40: MOVLW 0A0B41: MOVWF 3C0B42: BCF 0A.30B43: CALL 18F0B44: BSF 0A.3.................... lcd_gotoxy(1,2);0B45: MOVLW 010B46: MOVWF 3D0B47: MOVLW 020B48: MOVWF 3E0B49: BCF 0A.30B4A: CALL 17D0B4B: BSF 0A.3.................... printf(lcd_putc," %f C",temp2);0B4C: MOVLW 200B4D: MOVWF 3C0B4E: BCF 0A.30B4F: CALL 18F0B50: BSF 0A.30B51: MOVLW 890B52: MOVWF 040B53: MOVF 28,W0B54: MOVWF 320B55: MOVF 27,W0B56: MOVWF 310B57: MOVF 26,W0B58: MOVWF 300B59: MOVF 25,W0B5A: MOVWF 2F0B5B: MOVLW 020B5C: MOVWF 330B5D: CALL 0000B5E: MOVLW 200B5F: MOVWF 3C0B60: BCF 0A.30B61: CALL 18F0B62: BSF 0A.30B63: MOVLW 430B64: MOVWF 3C0B65: BCF 0A.30B66: CALL 18F0B67: BSF 0A.3.................... printf("%ld %f %f %f \r\n",i, temp1, humidity, temp2);0B68: MOVLW 100B69: MOVWF 040B6A: MOVF 2E,W0B6B: MOVWF 300B6C: MOVF 2D,W0B6D: MOVWF 2F0B6E: GOTO 0DA0B6F: MOVLW 200B70: BTFSS 0C.40B71: GOTO 3700B72: MOVWF 190B73: MOVLW 890B74: MOVWF 040B75: MOVF 24,W0B76: MOVWF 320B77: MOVF 23,W0B78: MOVWF 310B79: MOVF 22,W0B7A: MOVWF 300B7B: MOVF 21,W0B7C: MOVWF 2F0B7D: MOVLW 020B7E: MOVWF 330B7F: CALL 1520B80: MOVLW 200B81: BTFSS 0C.40B82: GOTO 3810B83: MOVWF 190B84: MOVLW 890B85: MOVWF 040B86: MOVF 2C,W0B87: MOVWF 320B88: MOVF 2B,W0B89: MOVWF 310B8A: MOVF 2A,W0B8B: MOVWF 300B8C: MOVF 29,W0B8D: MOVWF 2F0B8E: MOVLW 020B8F: MOVWF 330B90: CALL 1520B91: MOVLW 200B92: BTFSS 0C.40B93: GOTO 3920B94: MOVWF 190B95: MOVLW 890B96: MOVWF 040B97: MOVF 28,W0B98: MOVWF 320B99: MOVF 27,W0B9A: MOVWF 310B9B: MOVF 26,W0B9C: MOVWF 300B9D: MOVF 25,W0B9E: MOVWF 2F0B9F: MOVLW 020BA0: MOVWF 330BA1: CALL 1520BA2: MOVLW 200BA3: BTFSS 0C.40BA4: GOTO 3A30BA5: MOVWF 190BA6: MOVLW 0D0BA7: BTFSS 0C.40BA8: GOTO 3A70BA9: MOVWF 190BAA: MOVLW 0A0BAB: BTFSS 0C.40BAC: GOTO 3AB0BAD: MOVWF 19.................... i++;0BAE: INCF 2D,F0BAF: BTFSC 03.20BB0: INCF 2E,F.................... Delay_ms(100);0BB1: MOVLW 640BB2: MOVWF 3D0BB3: BCF 0A.30BB4: CALL 0780BB5: BSF 0A.3.................... }0BB6: GOTO 2DC........................................ }0BB7: SLEEPConfiguration Fuses:Word 1: 2CF5 INTRC NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUGWord 2: 3FFF NOWRT BORV40