Version 4.0 HI-TECH Software Intermediate Code "2968 C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2968: extern volatile __bit TRISC3 __attribute__((address(0x43B))); [v _TRISC3 `Vb ~T0 @X0 0 e@1083 ] "2971 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2971: extern volatile __bit TRISC4 __attribute__((address(0x43C))); [v _TRISC4 `Vb ~T0 @X0 0 e@1084 ] "815 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 815: extern volatile unsigned char SSPCON __attribute__((address(0x014))); [v _SSPCON `Vuc ~T0 @X0 0 e@20 ] "1754 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1754: extern volatile unsigned char SSPCON2 __attribute__((address(0x091))); [v _SSPCON2 `Vuc ~T0 @X0 0 e@145 ] "1823 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1823: extern volatile unsigned char SSPADD __attribute__((address(0x093))); [v _SSPADD `Vuc ~T0 @X0 0 e@147 ] "1830 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1830: extern volatile unsigned char SSPSTAT __attribute__((address(0x094))); [v _SSPSTAT `Vuc ~T0 @X0 0 e@148 ] "2806 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2806: extern volatile __bit SEN __attribute__((address(0x488))); [v _SEN `Vb ~T0 @X0 0 e@1160 ] "2791 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2791: extern volatile __bit RSEN __attribute__((address(0x489))); [v _RSEN `Vb ~T0 @X0 0 e@1161 ] "2632 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2632: extern volatile __bit PEN __attribute__((address(0x48A))); [v _PEN `Vb ~T0 @X0 0 e@1162 ] "808 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 808: extern volatile unsigned char SSPBUF __attribute__((address(0x013))); [v _SSPBUF `Vuc ~T0 @X0 0 e@19 ] "2737 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2737: extern volatile __bit RCEN __attribute__((address(0x48B))); [v _RCEN `Vb ~T0 @X0 0 e@1163 ] "2374 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2374: extern volatile __bit ACKDT __attribute__((address(0x48D))); [v _ACKDT `Vb ~T0 @X0 0 e@1165 ] "2377 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2377: extern volatile __bit ACKEN __attribute__((address(0x48C))); [v _ACKEN `Vb ~T0 @X0 0 e@1164 ] "54 C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 54: __asm("INDF equ 00h"); [; <" INDF equ 00h ;# "> "61 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 61: __asm("TMR0 equ 01h"); [; <" TMR0 equ 01h ;# "> "68 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 68: __asm("PCL equ 02h"); [; <" PCL equ 02h ;# "> "75 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 75: __asm("STATUS equ 03h"); [; <" STATUS equ 03h ;# "> "161 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 161: __asm("FSR equ 04h"); [; <" FSR equ 04h ;# "> "168 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 168: __asm("PORTA equ 05h"); [; <" PORTA equ 05h ;# "> "218 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 218: __asm("PORTB equ 06h"); [; <" PORTB equ 06h ;# "> "280 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 280: __asm("PORTC equ 07h"); [; <" PORTC equ 07h ;# "> "342 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 342: __asm("PORTD equ 08h"); [; <" PORTD equ 08h ;# "> "404 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 404: __asm("PORTE equ 09h"); [; <" PORTE equ 09h ;# "> "436 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 436: __asm("PCLATH equ 0Ah"); [; <" PCLATH equ 0Ah ;# "> "456 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 456: __asm("INTCON equ 0Bh"); [; <" INTCON equ 0Bh ;# "> "534 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 534: __asm("PIR1 equ 0Ch"); [; <" PIR1 equ 0Ch ;# "> "596 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 596: __asm("PIR2 equ 0Dh"); [; <" PIR2 equ 0Dh ;# "> "636 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 636: __asm("TMR1 equ 0Eh"); [; <" TMR1 equ 0Eh ;# "> "643 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 643: __asm("TMR1L equ 0Eh"); [; <" TMR1L equ 0Eh ;# "> "650 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 650: __asm("TMR1H equ 0Fh"); [; <" TMR1H equ 0Fh ;# "> "657 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 657: __asm("T1CON equ 010h"); [; <" T1CON equ 010h ;# "> "732 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 732: __asm("TMR2 equ 011h"); [; <" TMR2 equ 011h ;# "> "739 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 739: __asm("T2CON equ 012h"); [; <" T2CON equ 012h ;# "> "810 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 810: __asm("SSPBUF equ 013h"); [; <" SSPBUF equ 013h ;# "> "817 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 817: __asm("SSPCON equ 014h"); [; <" SSPCON equ 014h ;# "> "887 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 887: __asm("CCPR1 equ 015h"); [; <" CCPR1 equ 015h ;# "> "894 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 894: __asm("CCPR1L equ 015h"); [; <" CCPR1L equ 015h ;# "> "901 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 901: __asm("CCPR1H equ 016h"); [; <" CCPR1H equ 016h ;# "> "908 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 908: __asm("CCP1CON equ 017h"); [; <" CCP1CON equ 017h ;# "> "966 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 966: __asm("RCSTA equ 018h"); [; <" RCSTA equ 018h ;# "> "1061 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1061: __asm("TXREG equ 019h"); [; <" TXREG equ 019h ;# "> "1068 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1068: __asm("RCREG equ 01Ah"); [; <" RCREG equ 01Ah ;# "> "1075 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1075: __asm("CCPR2 equ 01Bh"); [; <" CCPR2 equ 01Bh ;# "> "1082 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1082: __asm("CCPR2L equ 01Bh"); [; <" CCPR2L equ 01Bh ;# "> "1089 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1089: __asm("CCPR2H equ 01Ch"); [; <" CCPR2H equ 01Ch ;# "> "1096 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1096: __asm("CCP2CON equ 01Dh"); [; <" CCP2CON equ 01Dh ;# "> "1154 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1154: __asm("ADRESH equ 01Eh"); [; <" ADRESH equ 01Eh ;# "> "1161 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1161: __asm("ADCON0 equ 01Fh"); [; <" ADCON0 equ 01Fh ;# "> "1257 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1257: __asm("OPTION_REG equ 081h"); [; <" OPTION_REG equ 081h ;# "> "1327 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1327: __asm("TRISA equ 085h"); [; <" TRISA equ 085h ;# "> "1377 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1377: __asm("TRISB equ 086h"); [; <" TRISB equ 086h ;# "> "1439 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1439: __asm("TRISC equ 087h"); [; <" TRISC equ 087h ;# "> "1501 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1501: __asm("TRISD equ 088h"); [; <" TRISD equ 088h ;# "> "1563 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1563: __asm("TRISE equ 089h"); [; <" TRISE equ 089h ;# "> "1620 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1620: __asm("PIE1 equ 08Ch"); [; <" PIE1 equ 08Ch ;# "> "1682 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1682: __asm("PIE2 equ 08Dh"); [; <" PIE2 equ 08Dh ;# "> "1722 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1722: __asm("PCON equ 08Eh"); [; <" PCON equ 08Eh ;# "> "1756 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1756: __asm("SSPCON2 equ 091h"); [; <" SSPCON2 equ 091h ;# "> "1818 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1818: __asm("PR2 equ 092h"); [; <" PR2 equ 092h ;# "> "1825 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1825: __asm("SSPADD equ 093h"); [; <" SSPADD equ 093h ;# "> "1832 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 1832: __asm("SSPSTAT equ 094h"); [; <" SSPSTAT equ 094h ;# "> "2001 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2001: __asm("TXSTA equ 098h"); [; <" TXSTA equ 098h ;# "> "2082 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2082: __asm("SPBRG equ 099h"); [; <" SPBRG equ 099h ;# "> "2089 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2089: __asm("CMCON equ 09Ch"); [; <" CMCON equ 09Ch ;# "> "2159 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2159: __asm("CVRCON equ 09Dh"); [; <" CVRCON equ 09Dh ;# "> "2224 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2224: __asm("ADRESL equ 09Eh"); [; <" ADRESL equ 09Eh ;# "> "2231 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2231: __asm("ADCON1 equ 09Fh"); [; <" ADCON1 equ 09Fh ;# "> "2290 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2290: __asm("EEDATA equ 010Ch"); [; <" EEDATA equ 010Ch ;# "> "2297 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2297: __asm("EEADR equ 010Dh"); [; <" EEADR equ 010Dh ;# "> "2304 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2304: __asm("EEDATH equ 010Eh"); [; <" EEDATH equ 010Eh ;# "> "2311 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2311: __asm("EEADRH equ 010Fh"); [; <" EEADRH equ 010Fh ;# "> "2318 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2318: __asm("EECON1 equ 018Ch"); [; <" EECON1 equ 018Ch ;# "> "2363 [; ;C:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\pic16f877a.h: 2363: __asm("EECON2 equ 018Dh"); [; <" EECON2 equ 018Dh ;# "> "4 ./conf.h [p x FOSC = HS ] "5 [p x WDTE = OFF ] "6 [p x PWRTE = ON ] "7 [p x BOREN = ON ] "8 [p x LVP = OFF ] "9 [p x CPD = OFF ] "10 [p x WRT = OFF ] "11 [p x CP = OFF ] "8 i2c.c [; ;i2c.c: 8: void I2C_Master_Init(const unsigned long freq_K) [v _I2C_Master_Init `(v ~T0 @X0 1 ef1`Cul ] "9 [; ;i2c.c: 9: { { [e :U _I2C_Master_Init ] "8 [; ;i2c.c: 8: void I2C_Master_Init(const unsigned long freq_K) [v _freq_K `Cul ~T0 @X0 1 r1 ] "9 [; ;i2c.c: 9: { [f ] "10 [; ;i2c.c: 10: TRISC3 = 1; TRISC4 = 1; [e = _TRISC3 -> -> 1 `i `b ] [e = _TRISC4 -> -> 1 `i `b ] "12 [; ;i2c.c: 12: SSPCON = 0b00101000; [e = _SSPCON -> -> 40 `i `uc ] "13 [; ;i2c.c: 13: SSPCON2 = 0b00000000; [e = _SSPCON2 -> -> 0 `i `uc ] "15 [; ;i2c.c: 15: SSPADD = (20000000/(4*freq_K*100))-1; [e = _SSPADD -> - / -> -> 20000000 `l `ul * * -> -> -> 4 `i `l `ul _freq_K -> -> -> 100 `i `l `ul -> -> -> 1 `i `l `ul `uc ] "16 [; ;i2c.c: 16: SSPSTAT = 0b00000000; [e = _SSPSTAT -> -> 0 `i `uc ] "17 [; ;i2c.c: 17: } [e :UE 95 ] } "19 [; ;i2c.c: 19: void I2C_Master_Wait() [v _I2C_Master_Wait `(v ~T0 @X0 1 ef ] "20 [; ;i2c.c: 20: { { [e :U _I2C_Master_Wait ] [f ] "21 [; ;i2c.c: 21: while ( (SSPCON2 & 0b00011111) || (SSPSTAT & 0b00000100) ) ; [e $U 97 ] [e :U 98 ] [e :U 97 ] [e $ || != & -> _SSPCON2 `i -> 31 `i -> 0 `i != & -> _SSPSTAT `i -> 4 `i -> 0 `i 98 ] [e :U 99 ] "22 [; ;i2c.c: 22: } [e :UE 96 ] } "24 [; ;i2c.c: 24: void I2C_Master_Start() [v _I2C_Master_Start `(v ~T0 @X0 1 ef ] "25 [; ;i2c.c: 25: { { [e :U _I2C_Master_Start ] [f ] "26 [; ;i2c.c: 26: I2C_Master_Wait(); [e ( _I2C_Master_Wait .. ] "27 [; ;i2c.c: 27: SEN = 1; [e = _SEN -> -> 1 `i `b ] "28 [; ;i2c.c: 28: } [e :UE 100 ] } "30 [; ;i2c.c: 30: void I2C_Master_Repeated_Start() [v _I2C_Master_Repeated_Start `(v ~T0 @X0 1 ef ] "31 [; ;i2c.c: 31: { { [e :U _I2C_Master_Repeated_Start ] [f ] "32 [; ;i2c.c: 32: I2C_Master_Wait(); [e ( _I2C_Master_Wait .. ] "33 [; ;i2c.c: 33: RSEN = 1; [e = _RSEN -> -> 1 `i `b ] "34 [; ;i2c.c: 34: } [e :UE 101 ] } "36 [; ;i2c.c: 36: void I2C_Master_Stop() [v _I2C_Master_Stop `(v ~T0 @X0 1 ef ] "37 [; ;i2c.c: 37: { { [e :U _I2C_Master_Stop ] [f ] "38 [; ;i2c.c: 38: I2C_Master_Wait(); [e ( _I2C_Master_Wait .. ] "39 [; ;i2c.c: 39: PEN = 1; [e = _PEN -> -> 1 `i `b ] "40 [; ;i2c.c: 40: } [e :UE 102 ] } "42 [; ;i2c.c: 42: void I2C_Master_Write(unsigned data) [v _I2C_Master_Write `(v ~T0 @X0 1 ef1`ui ] "43 [; ;i2c.c: 43: { { [e :U _I2C_Master_Write ] "42 [; ;i2c.c: 42: void I2C_Master_Write(unsigned data) [v _data `ui ~T0 @X0 1 r1 ] "43 [; ;i2c.c: 43: { [f ] "44 [; ;i2c.c: 44: I2C_Master_Wait(); [e ( _I2C_Master_Wait .. ] "45 [; ;i2c.c: 45: SSPBUF = data; [e = _SSPBUF -> _data `uc ] "46 [; ;i2c.c: 46: } [e :UE 103 ] } "48 [; ;i2c.c: 48: unsigned short I2C_Master_Read(unsigned short ack) [v _I2C_Master_Read `(us ~T0 @X0 1 ef1`us ] "49 [; ;i2c.c: 49: { { [e :U _I2C_Master_Read ] "48 [; ;i2c.c: 48: unsigned short I2C_Master_Read(unsigned short ack) [v _ack `us ~T0 @X0 1 r1 ] "49 [; ;i2c.c: 49: { [f ] "50 [; ;i2c.c: 50: unsigned short incoming; [v _incoming `us ~T0 @X0 1 a ] "51 [; ;i2c.c: 51: I2C_Master_Wait(); [e ( _I2C_Master_Wait .. ] "52 [; ;i2c.c: 52: RCEN = 1; [e = _RCEN -> -> 1 `i `b ] "54 [; ;i2c.c: 54: I2C_Master_Wait(); [e ( _I2C_Master_Wait .. ] "55 [; ;i2c.c: 55: incoming = SSPBUF; [e = _incoming -> _SSPBUF `us ] "57 [; ;i2c.c: 57: I2C_Master_Wait(); [e ( _I2C_Master_Wait .. ] "58 [; ;i2c.c: 58: ACKDT = (ack)?0:1; [e = _ACKDT -> ? != -> _ack `ui -> -> 0 `i `ui : -> 0 `i -> 1 `i `b ] "59 [; ;i2c.c: 59: ACKEN = 1; [e = _ACKEN -> -> 1 `i `b ] "61 [; ;i2c.c: 61: return incoming; [e ) _incoming ] [e $UE 104 ] "62 [; ;i2c.c: 62: } [e :UE 104 ] }