CCS PCH C Compiler, Version 5.048, 26145               27-Mar-23 14:38

               Filename:   C:\Users\soac-gj2\Desktop\signals and systems\i2c\proteus\PIC18F2525_1\Debug.lst

               ROM used:   776 bytes (2%)
                           Largest free fragment is 48376
               RAM used:   11 (0%) at main() level
                           16 (0%) worst case
               Stack used: 1 locations
               Stack size: 31

*
0000:  GOTO   0296
.................... #import(file="main.o") 
....................  
.................... #include <main.h> 
.................... #include <18F2525.h> 
.................... //////////// Standard Header file for the PIC18F2525 device //////////////// 
.................... /////////////////////////////////////////////////////////////////////////// 
.................... ////        (C) Copyright 1996, 2014 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.                               //// 
.................... /////////////////////////////////////////////////////////////////////////// 
.................... #device PIC18F2525 
....................  
.................... #list 
....................  
.................... #device ADC=10 
....................  
.................... #FUSES FCMEN                 	//Fail-safe clock monitor enabled 
.................... #FUSES IESO                  	//Internal External Switch Over mode enabled 
.................... #FUSES PUT                   	//Power Up Timer 
.................... #FUSES BROWNOUT              	//Reset when brownout detected 
.................... #FUSES BORV27                	//Brownout reset at 2.7V 
.................... #FUSES NOPBADEN              	//PORTB pins are configured as digital I/O on RESET 
.................... #FUSES NOLPT1OSC             	//Timer1 configured for higher power operation 
.................... #FUSES NOMCLR                	//Master Clear pin used for I/O 
.................... #FUSES STVREN                	//Stack full/underflow will cause reset 
.................... #FUSES NOLVP                 	//No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O 
.................... #FUSES NOXINST               	//Extended set extension and Indexed Addressing mode disabled (Legacy mode) 
.................... #FUSES NOPROTECT             	//Code not protected from reading 
.................... #FUSES NOCPB                 	//No Boot Block code protection 
.................... #FUSES NOCPD                 	//No EE protection 
.................... #FUSES NOWRT                 	//Program memory not write protected 
.................... #FUSES NOWRTC                	//Configuration registers not write protected 
.................... #FUSES NOWRTB                	//Boot block not write protected 
.................... #FUSES NOWRTD                	//Data EEPROM not write protected 
.................... #FUSES NOEBTR                	//Memory not protected from table reads 
.................... #FUSES NOEBTRB               	//Boot block not protected from table reads 
....................  
.................... #use delay(internal=8MHz) 
*
00C0:  CLRF   FEA
00C2:  MOVLW  0F
00C4:  MOVWF  FE9
00C6:  MOVF   FEF,W
00C8:  BZ    00E4
00CA:  MOVLW  02
00CC:  MOVWF  01
00CE:  CLRF   00
00D0:  DECFSZ 00,F
00D2:  BRA    00D0
00D4:  DECFSZ 01,F
00D6:  BRA    00CE
00D8:  MOVLW  97
00DA:  MOVWF  00
00DC:  DECFSZ 00,F
00DE:  BRA    00DC
00E0:  DECFSZ FEF,F
00E2:  BRA    00CA
00E4:  RETURN 0
.................... //#use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3,force_hw) 
....................  
.................... #define LED PIN_B7 
.................... #define DELAY 500 
....................  
....................  
....................  
.................... #include "C:\Users\soac-gj2\Desktop\signals and systems\i2c\proteus\PIC18F2525_1\24128.C" 
.................... /////////////////////////////////////////////////////////////////////////// 
.................... ////   Library for a 24C128 serial EEPROM                              //// 
.................... ////                                                                   //// 
.................... ////   init_ext_eeprom();    Call before the other functions are used  //// 
.................... ////                                                                   //// 
.................... ////   write_ext_eeprom(a, d);  Write the byte d to the address a      //// 
.................... ////                                                                   //// 
.................... ////   d = read_ext_eeprom(a);   Read the byte d from the address a    //// 
.................... ////                                                                   //// 
.................... ////   The main program may define eeprom_sda                          //// 
.................... ////   and eeprom_scl to override the defaults below.                  //// 
.................... ////                                                                   //// 
.................... /////////////////////////////////////////////////////////////////////////// 
.................... ////        (C) Copyright 1996,2003 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 EEPROM_SDA  PIN_C4 
.................... #define EEPROM_SCL  PIN_C3 
....................  
....................  
....................  
.................... #define hi(x)  (*((int8 *)&x+1)) 
....................  
.................... #use i2c(master, sda=Pin_c4, scl=pin_c3) 
*
0004:  MOVLW  08
0006:  MOVWF  01
0008:  BRA    000A
000A:  BCF    F8B.3
000C:  BCF    F94.3
000E:  BRA    0010
0010:  NOP   
0012:  RLCF   10,F
0014:  BCF    F8B.4
0016:  BTFSC  FD8.0
0018:  BSF    F94.4
001A:  BTFSS  FD8.0
001C:  BCF    F94.4
001E:  BSF    F94.3
0020:  BTFSS  F82.3
0022:  BRA    0020
0024:  DECFSZ 01,F
0026:  BRA    0008
0028:  BRA    002A
002A:  BCF    F8B.3
002C:  BCF    F94.3
002E:  NOP   
0030:  BSF    F94.4
0032:  BRA    0034
0034:  NOP   
0036:  BRA    0038
0038:  NOP   
003A:  BSF    F94.3
003C:  BTFSS  F82.3
003E:  BRA    003C
0040:  CLRF   01
0042:  BRA    0044
0044:  NOP   
0046:  BTFSC  F82.4
0048:  BSF    01.0
004A:  BCF    F8B.3
004C:  BCF    F94.3
004E:  BCF    F8B.4
0050:  BCF    F94.4
0052:  RETURN 0
*
0174:  MOVLW  08
0176:  MOVWF  0F
0178:  MOVFF  00,10
017C:  BSF    F94.4
017E:  BRA    0180
0180:  NOP   
0182:  BSF    F94.3
0184:  BTFSS  F82.3
0186:  BRA    0184
0188:  BTFSC  F82.4
018A:  BSF    FD8.0
018C:  BTFSS  F82.4
018E:  BCF    FD8.0
0190:  RLCF   01,F
0192:  BRA    0194
0194:  BCF    F94.3
0196:  BCF    F8B.3
0198:  DECFSZ 0F,F
019A:  BRA    017C
019C:  BSF    F94.4
019E:  BRA    01A0
01A0:  NOP   
01A2:  BCF    F8B.4
01A4:  MOVF   10,W
01A6:  BTFSS  FD8.2
01A8:  BCF    F94.4
01AA:  NOP   
01AC:  BSF    F94.3
01AE:  BTFSS  F82.3
01B0:  BRA    01AE
01B2:  BRA    01B4
01B4:  BCF    F8B.3
01B6:  BCF    F94.3
01B8:  BRA    01BA
01BA:  NOP   
01BC:  BCF    F8B.4
01BE:  BCF    F94.4
01C0:  GOTO   0276 (RETURN)
....................  
.................... #define EEPROM_ADDRESS long int 
.................... #define EEPROM_SIZE   16384 
....................  
.................... void init_ext_eeprom() 
.................... { 
....................     int i; 
....................  
....................    output_float(EEPROM_SCL); 
*
0054:  BSF    F94.3
....................    output_float(EEPROM_SDA); 
0056:  BSF    F94.4
....................    delay_us(4); 
0058:  MOVLW  02
005A:  MOVWF  00
005C:  DECFSZ 00,F
005E:  BRA    005C
0060:  NOP   
....................    for (i=0;i<3;i++) { 
0062:  CLRF   0B
0064:  MOVF   0B,W
0066:  SUBLW  02
0068:  BNC   00BC
....................      i2c_start(); 
006A:  BSF    F94.4
006C:  BRA    006E
006E:  BSF    F94.3
0070:  BRA    0072
0072:  NOP   
0074:  BCF    F8B.4
0076:  BCF    F94.4
0078:  BRA    007A
007A:  BCF    F8B.3
007C:  BCF    F94.3
....................      i2c_write(0xa0); 
007E:  MOVLW  A0
0080:  MOVWF  10
0082:  RCALL  0004
....................      i2c_write(0xff); 
0084:  SETF   10
0086:  RCALL  0004
....................      i2c_write(0xff); 
0088:  SETF   10
008A:  RCALL  0004
....................      if(i==2) 
008C:  MOVF   0B,W
008E:  SUBLW  02
0090:  BNZ   009A
....................        i2c_write(0x2); 
0092:  MOVLW  02
0094:  MOVWF  10
0096:  RCALL  0004
0098:  BRA    00A4
....................      else 
....................        i2c_write(0x2+i); 
009A:  MOVLW  02
009C:  ADDWF  0B,W
009E:  MOVWF  0C
00A0:  MOVWF  10
00A2:  RCALL  0004
....................      i2c_stop(); 
00A4:  BCF    F94.4
00A6:  NOP   
00A8:  BSF    F94.3
00AA:  BTFSS  F82.3
00AC:  BRA    00AA
00AE:  BRA    00B0
00B0:  BRA    00B2
00B2:  NOP   
00B4:  BSF    F94.4
00B6:  BRA    00B8
00B8:  INCF   0B,F
00BA:  BRA    0064
....................   } 
00BC:  GOTO   02B4 (RETURN)
.................... } 
....................  
....................  
.................... void write_ext_eeprom(long int address, BYTE data) 
.................... { 
....................    i2c_start(); 
*
00E6:  BSF    F94.4
00E8:  BRA    00EA
00EA:  BSF    F94.3
00EC:  BRA    00EE
00EE:  NOP   
00F0:  BCF    F8B.4
00F2:  BCF    F94.4
00F4:  BRA    00F6
00F6:  BCF    F8B.3
00F8:  BCF    F94.3
....................    i2c_write(((0xa0)|(hi(address)>>5))&0xfe); 
00FA:  CLRF   10
00FC:  MOVLW  0C
00FE:  MOVWF  0F
0100:  MOVLW  01
0102:  ADDWF  0F,W
0104:  MOVWF  01
0106:  MOVLW  00
0108:  ADDWFC 10,W
010A:  MOVWF  03
010C:  MOVFF  01,FE9
0110:  MOVWF  FEA
0112:  SWAPF  FEF,W
0114:  MOVWF  00
0116:  RRCF   00,F
0118:  MOVLW  07
011A:  ANDWF  00,F
011C:  MOVF   00,W
011E:  IORLW  A0
0120:  ANDLW  FE
0122:  MOVWF  0F
0124:  MOVWF  10
0126:  RCALL  0004
....................    i2c_write(hi(address)&0x3f); 
0128:  CLRF   10
012A:  MOVLW  0C
012C:  MOVWF  0F
012E:  MOVLW  01
0130:  ADDWF  0F,W
0132:  MOVWF  01
0134:  MOVLW  00
0136:  ADDWFC 10,W
0138:  MOVWF  03
013A:  MOVFF  01,FE9
013E:  MOVWF  FEA
0140:  MOVF   FEF,W
0142:  ANDLW  3F
0144:  MOVWF  0F
0146:  MOVWF  10
0148:  RCALL  0004
....................    i2c_write(address); 
014A:  MOVFF  0C,10
014E:  RCALL  0004
....................    i2c_write(data); 
0150:  MOVFF  0E,10
0154:  RCALL  0004
....................    i2c_stop(); 
0156:  BCF    F94.4
0158:  NOP   
015A:  BSF    F94.3
015C:  BTFSS  F82.3
015E:  BRA    015C
0160:  BRA    0162
0162:  BRA    0164
0164:  NOP   
0166:  BSF    F94.4
0168:  BRA    016A
....................    delay_ms(10); 
016A:  MOVLW  0A
016C:  MOVWF  0F
016E:  RCALL  00C0
0170:  GOTO   02F0 (RETURN)
.................... } 
....................  
....................  
.................... BYTE read_ext_eeprom(long int address) { 
....................    BYTE data; 
....................  
....................    i2c_start(); 
*
01C4:  BSF    F94.4
01C6:  BRA    01C8
01C8:  BSF    F94.3
01CA:  BRA    01CC
01CC:  NOP   
01CE:  BCF    F8B.4
01D0:  BCF    F94.4
01D2:  BRA    01D4
01D4:  BCF    F8B.3
01D6:  BCF    F94.3
....................    i2c_write(((0xa0)|(hi(address)>>5))&0xfe); 
01D8:  CLRF   0F
01DA:  MOVLW  0B
01DC:  MOVWF  0E
01DE:  MOVLW  01
01E0:  ADDWF  0E,W
01E2:  MOVWF  01
01E4:  MOVLW  00
01E6:  ADDWFC 0F,W
01E8:  MOVWF  03
01EA:  MOVFF  01,FE9
01EE:  MOVWF  FEA
01F0:  SWAPF  FEF,W
01F2:  MOVWF  00
01F4:  RRCF   00,F
01F6:  MOVLW  07
01F8:  ANDWF  00,F
01FA:  MOVF   00,W
01FC:  IORLW  A0
01FE:  ANDLW  FE
0200:  MOVWF  0E
0202:  MOVWF  10
0204:  RCALL  0004
....................    i2c_write(hi(address)&0x3f); 
0206:  CLRF   0F
0208:  MOVLW  0B
020A:  MOVWF  0E
020C:  MOVLW  01
020E:  ADDWF  0E,W
0210:  MOVWF  01
0212:  MOVLW  00
0214:  ADDWFC 0F,W
0216:  MOVWF  03
0218:  MOVFF  01,FE9
021C:  MOVWF  FEA
021E:  MOVF   FEF,W
0220:  ANDLW  3F
0222:  MOVWF  0E
0224:  MOVWF  10
0226:  RCALL  0004
....................    i2c_write(address); 
0228:  MOVFF  0B,10
022C:  RCALL  0004
....................    i2c_start(); 
022E:  BSF    F94.4
0230:  BRA    0232
0232:  BSF    F94.3
0234:  BRA    0236
0236:  NOP   
0238:  BTFSS  F82.3
023A:  BRA    0238
023C:  BCF    F8B.4
023E:  BCF    F94.4
0240:  BRA    0242
0242:  BCF    F8B.3
0244:  BCF    F94.3
....................    i2c_write((0xa1)|(hi(address)>>5)); 
0246:  CLRF   0F
0248:  MOVLW  0B
024A:  MOVWF  0E
024C:  MOVLW  01
024E:  ADDWF  0E,W
0250:  MOVWF  01
0252:  MOVLW  00
0254:  ADDWFC 0F,W
0256:  MOVWF  03
0258:  MOVFF  01,FE9
025C:  MOVWF  FEA
025E:  SWAPF  FEF,W
0260:  MOVWF  00
0262:  RRCF   00,F
0264:  MOVLW  07
0266:  ANDWF  00,F
0268:  MOVF   00,W
026A:  IORLW  A1
026C:  MOVWF  0E
026E:  MOVWF  10
0270:  RCALL  0004
....................    data=i2c_read(0); 
0272:  CLRF   00
0274:  BRA    0174
0276:  MOVFF  01,0D
....................    i2c_stop(); 
027A:  BCF    F94.4
027C:  NOP   
027E:  BSF    F94.3
0280:  BTFSS  F82.3
0282:  BRA    0280
0284:  BRA    0286
0286:  BRA    0288
0288:  NOP   
028A:  BSF    F94.4
028C:  BRA    028E
....................    return(data); 
028E:  MOVFF  0D,01
0292:  GOTO   02F8 (RETURN)
.................... } 
....................  
....................  
.................... //void write_ext_eeprom(long int address, BYTE data) 
....................  
.................... void main() 
0296:  CLRF   FF8
0298:  BCF    FD0.7
029A:  MOVLW  70
029C:  MOVWF  FD3
029E:  CLRF   F9B
02A0:  MOVF   FD3,W
02A2:  MOVF   FC1,W
02A4:  ANDLW  C0
02A6:  IORLW  0F
02A8:  MOVWF  FC1
02AA:  MOVLW  07
02AC:  MOVWF  FB4
02AE:  CLRF   06
02B0:  CLRF   05
.................... { 
.................... 	unsigned long int address_val = 0x0000; 
.................... 	unsigned int data_val,a,q,number; 
....................  
.................... 	init_ext_eeprom();	 
02B2:  BRA    0054
....................  
.................... 	while(TRUE) 
.................... 		{ 
....................  
.................... 			//Example blinking LED program 
.................... 			output_low(LED); 
02B4:  BCF    F93.7
02B6:  BCF    F8A.7
.................... 			delay_ms(DELAY); 
02B8:  MOVLW  02
02BA:  MOVWF  0B
02BC:  MOVLW  FA
02BE:  MOVWF  0F
02C0:  RCALL  00C0
02C2:  DECFSZ 0B,F
02C4:  BRA    02BC
.................... 			output_high(LED); 
02C6:  BCF    F93.7
02C8:  BSF    F8A.7
.................... 			delay_ms(DELAY); 
02CA:  MOVLW  02
02CC:  MOVWF  0B
02CE:  MOVLW  FA
02D0:  MOVWF  0F
02D2:  RCALL  00C0
02D4:  DECFSZ 0B,F
02D6:  BRA    02CE
....................  
.................... 			//TODO: User Code 
.................... 			for (q=0;q<=245;q++) 
02D8:  CLRF   09
02DA:  MOVF   09,W
02DC:  SUBLW  F5
02DE:  BNC   0302
.................... 				{ 
.................... 					write_ext_eeprom(q, q+5); 
02E0:  MOVLW  05
02E2:  ADDWF  09,W
02E4:  MOVWF  0B
02E6:  CLRF   0D
02E8:  MOVFF  09,0C
02EC:  MOVWF  0E
02EE:  BRA    00E6
.................... 					number = read_ext_eeprom( q ); 
02F0:  CLRF   0C
02F2:  MOVFF  09,0B
02F6:  BRA    01C4
02F8:  MOVFF  01,0A
.................... 					a++; 
02FC:  INCF   08,F
02FE:  INCF   09,F
0300:  BRA    02DA
.................... 				} 
.................... 			while(true);  
0302:  BRA    0302
0304:  BRA    02B4
.................... 		} 
....................      
.................... }  
....................    
0306:  SLEEP 
....................  

Configuration Fuses:
   Word  1: C800   INTRC_IO FCMEN IESO
   Word  2: 1E16   PUT BROWNOUT BORV27 NOWDT WDT32768
   Word  3: 0100   CCP2C1 NOPBADEN NOLPT1OSC NOMCLR
   Word  4: 0081   STVREN NOLVP NOXINST NODEBUG
   Word  5: C00F   NOPROTECT NOCPB NOCPD
   Word  6: E00F   NOWRT NOWRTC NOWRTB NOWRTD
   Word  7: 400F   NOEBTR NOEBTRB
