CCS PCM C Compiler, Version 4.106, 47914 14-V-13 19:16Filename: Z:\home\kaklik\svnMLAB\Modules\CommSerial\I2CHUB02A\SW\PIC16F887\main.lstROM used: 468 words (6%)Largest free fragment is 2048RAM used: 7 (2%) at main() level11 (3%) worst caseStack: 3 locations*0000: MOVLW 010001: MOVWF 0A0002: GOTO 1550003: NOP.................... #include "main.h".................... #include <16F887.h>.................... //////// Standard Header file for the PIC16F887 device ////////////////.................... #device PIC16F887.................... #list........................................ #device adc=8........................................ #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)*013F: MOVLW 220140: MOVWF 040141: BCF 03.70142: MOVF 00,W0143: BTFSC 03.20144: GOTO 1520145: MOVLW 020146: MOVWF 780147: CLRF 770148: DECFSZ 77,F0149: GOTO 148014A: DECFSZ 78,F014B: GOTO 147014C: MOVLW 97014D: MOVWF 77014E: DECFSZ 77,F014F: GOTO 14E0150: DECFSZ 00,F0151: GOTO 1450152: BCF 0A.30153: BCF 0A.40154: GOTO 1D0 (RETURN)............................................................ //I2CHUB.................... //ADRESA pro èteni 0xE1.................... //pro zápis 0xE0........................................ #use i2c(master, sda=PIN_C4, scl=PIN_C3)*0083: MOVLW 080084: MOVWF 780085: NOP0086: BCF 07.30087: BCF 20.30088: MOVF 20,W0089: BSF 03.5008A: MOVWF 07008B: NOP008C: BCF 03.5008D: RLF 22,F008E: BCF 07.4008F: BTFSS 03.00090: GOTO 0970091: BSF 20.40092: MOVF 20,W0093: BSF 03.50094: MOVWF 070095: GOTO 09B0096: BCF 03.50097: BCF 20.40098: MOVF 20,W0099: BSF 03.5009A: MOVWF 07009B: NOP009C: BCF 03.5009D: BSF 20.3009E: MOVF 20,W009F: BSF 03.500A0: MOVWF 0700A1: BCF 03.500A2: BTFSS 07.300A3: GOTO 0A200A4: DECFSZ 78,F00A5: GOTO 08500A6: NOP00A7: BCF 07.300A8: BCF 20.300A9: MOVF 20,W00AA: BSF 03.500AB: MOVWF 0700AC: NOP00AD: BCF 03.500AE: BSF 20.400AF: MOVF 20,W00B0: BSF 03.500B1: MOVWF 0700B2: NOP00B3: NOP00B4: BCF 03.500B5: BSF 20.300B6: MOVF 20,W00B7: BSF 03.500B8: MOVWF 0700B9: BCF 03.500BA: BTFSS 07.300BB: GOTO 0BA00BC: CLRF 7800BD: NOP00BE: BTFSC 07.400BF: BSF 78.000C0: BCF 07.300C1: BCF 20.300C2: MOVF 20,W00C3: BSF 03.500C4: MOVWF 0700C5: BCF 03.500C6: BCF 07.400C7: BCF 20.400C8: MOVF 20,W00C9: BSF 03.500CA: MOVWF 0700CB: BCF 03.500CC: RETURN.................... #use rs232(baud=9600,parity=N,xmit=PIN_C7,rcv=PIN_C6,bits=8) //rcv TXD xmit RXD*0019: BCF 20.7001A: MOVF 20,W001B: BSF 03.5001C: MOVWF 07001D: BCF 03.5001E: BCF 07.7001F: MOVLW 080020: MOVWF 780021: GOTO 0220022: NOP0023: BSF 78.70024: GOTO 0330025: BCF 78.70026: RRF 25,F0027: BTFSC 03.00028: BSF 07.70029: BTFSS 03.0002A: BCF 07.7002B: BSF 78.6002C: GOTO 033002D: BCF 78.6002E: DECFSZ 78,F002F: GOTO 0260030: GOTO 0310031: NOP0032: BSF 07.70033: MOVLW 3F0034: MOVWF 040035: DECFSZ 04,F0036: GOTO 0350037: NOP0038: BTFSC 78.70039: GOTO 025003A: BTFSC 78.6003B: GOTO 02D003C: RETURN........................................ void setHUB(int d) //vstupuje 1-8.................... //hodnota udava jaky port bude pripojen na master I2C.................... //zde je nastaveno propojeni jen jedne brany, je mozne propojit i vice bran naraz.................... {.................... switch (d) {*00CD: MOVF 21,W00CE: XORLW 0100CF: BTFSC 03.200D0: GOTO 0E700D1: XORLW 0300D2: BTFSC 03.200D3: GOTO 0EA00D4: XORLW 0100D5: BTFSC 03.200D6: GOTO 0ED00D7: XORLW 0700D8: BTFSC 03.200D9: GOTO 0F000DA: XORLW 0100DB: BTFSC 03.200DC: GOTO 0F300DD: XORLW 0300DE: BTFSC 03.200DF: GOTO 0F600E0: XORLW 0100E1: BTFSC 03.200E2: GOTO 0F900E3: XORLW 0F00E4: BTFSC 03.200E5: GOTO 0FC00E6: GOTO 0FF........................................ case 1: d=0x01;00E7: MOVLW 0100E8: MOVWF 21........................................ break;00E9: GOTO 107........................................ case 2: d=0x02;00EA: MOVLW 0200EB: MOVWF 21........................................ break;00EC: GOTO 107........................................ case 3: d=0x04;00ED: MOVLW 0400EE: MOVWF 21........................................ break;00EF: GOTO 107........................................ case 4: d=0x08;00F0: MOVLW 0800F1: MOVWF 21........................................ break;00F2: GOTO 107.................... case 5: d=0x10;00F3: MOVLW 1000F4: MOVWF 21........................................ break;00F5: GOTO 107........................................ case 6: d=0x20;00F6: MOVLW 2000F7: MOVWF 21........................................ break;00F8: GOTO 107.................... case 7: d=0x40;00F9: MOVLW 4000FA: MOVWF 21........................................ break;00FB: GOTO 107........................................ case 8: d=0x80;00FC: MOVLW 8000FD: MOVWF 21........................................ break;00FE: GOTO 107........................................ default:printf("chyba");00FF: MOVLW 040100: BSF 03.60101: MOVWF 0D0102: MOVLW 000103: MOVWF 0F0104: BCF 03.60105: CALL 03D........................................ break; }0106: GOTO 107........................................ i2c_start();0107: BSF 20.40108: MOVF 20,W0109: BSF 03.5010A: MOVWF 07010B: NOP010C: BCF 03.5010D: BSF 20.3010E: MOVF 20,W010F: BSF 03.50110: MOVWF 070111: NOP0112: BCF 03.50113: BCF 07.40114: BCF 20.40115: MOVF 20,W0116: BSF 03.50117: MOVWF 070118: NOP0119: BCF 03.5011A: BCF 07.3011B: BCF 20.3011C: MOVF 20,W011D: BSF 03.5011E: MOVWF 07.................... I2C_Write(0xE0);011F: MOVLW E00120: BCF 03.50121: MOVWF 220122: CALL 083........................................ I2C_write(d);0123: MOVF 21,W0124: MOVWF 220125: CALL 083.................... i2c_stop();0126: BCF 20.40127: MOVF 20,W0128: BSF 03.50129: MOVWF 07012A: NOP012B: BCF 03.5012C: BSF 20.3012D: MOVF 20,W012E: BSF 03.5012F: MOVWF 070130: BCF 03.50131: BTFSS 07.30132: GOTO 1310133: NOP0134: GOTO 1350135: NOP0136: BSF 20.40137: MOVF 20,W0138: BSF 03.50139: MOVWF 07013A: NOP........................................ }013B: BCF 03.5013C: BCF 0A.3013D: BCF 0A.4013E: GOTO 1CB (RETURN)............................................................ void main().................... {*0018: DATA 00,00*0155: CLRF 040156: BCF 03.70157: MOVLW 1F0158: ANDWF 03,F0159: MOVLW 71015A: BSF 03.5015B: MOVWF 0F015C: MOVF 0F,W015D: BCF 03.5015E: BCF 20.7015F: MOVF 20,W0160: BSF 03.50161: MOVWF 070162: BCF 03.50163: BSF 07.70164: BSF 03.50165: BSF 03.60166: MOVF 09,W0167: ANDLW C00168: MOVWF 090169: BCF 03.6016A: BCF 1F.4016B: BCF 1F.5016C: MOVLW 00016D: BSF 03.6016E: MOVWF 08016F: BCF 03.50170: CLRF 070171: CLRF 080172: CLRF 09........................................ setup_adc_ports(NO_ANALOGS|VSS_VDD);*0176: BSF 03.50177: BSF 03.60178: MOVF 09,W0179: ANDLW C0017A: MOVWF 09017B: BCF 03.6017C: BCF 1F.4017D: BCF 1F.5017E: MOVLW 00017F: BSF 03.60180: MOVWF 08.................... setup_adc(ADC_CLOCK_DIV_2);0181: BCF 03.50182: BCF 03.60183: BCF 1F.60184: BCF 1F.70185: BSF 03.50186: BCF 1F.70187: BCF 03.50188: BSF 1F.0.................... setup_spi(SPI_SS_DISABLED);0189: BCF 14.5018A: BCF 20.5018B: MOVF 20,W018C: BSF 03.5018D: MOVWF 07018E: BCF 03.5018F: BSF 20.40190: MOVF 20,W0191: BSF 03.50192: MOVWF 070193: BCF 03.50194: BCF 20.30195: MOVF 20,W0196: BSF 03.50197: MOVWF 070198: MOVLW 010199: BCF 03.5019A: MOVWF 14019B: MOVLW 00019C: BSF 03.5019D: MOVWF 14.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);019E: MOVF 01,W019F: ANDLW C701A0: IORLW 0801A1: MOVWF 01.................... setup_timer_1(T1_DISABLED);01A2: BCF 03.501A3: CLRF 10.................... setup_timer_2(T2_DISABLED,0,1);01A4: MOVLW 0001A5: MOVWF 7801A6: MOVWF 1201A7: MOVLW 0001A8: BSF 03.501A9: MOVWF 12.................... setup_ccp1(CCP_OFF);01AA: BCF 03.501AB: BSF 20.201AC: MOVF 20,W01AD: BSF 03.501AE: MOVWF 0701AF: BCF 03.501B0: CLRF 1701B1: BSF 03.501B2: CLRF 1B01B3: CLRF 1C01B4: MOVLW 0101B5: MOVWF 1D.................... setup_comparator(NC_NC_NC_NC);// This device COMP currently not supported by the PICWizard01B6: BCF 03.501B7: BSF 03.601B8: CLRF 0701B9: CLRF 0801BA: CLRF 09........................................ printf("I2CHUB \r\n",);01BB: MOVLW 0701BC: MOVWF 0D01BD: MOVLW 0001BE: MOVWF 0F01BF: BCF 03.601C0: CALL 03D.................... printf("(c)MLAB 2013 JACHO \r\n",);01C1: MOVLW 0D01C2: BSF 03.601C3: MOVWF 0D01C4: MOVLW 0001C5: MOVWF 0F01C6: BCF 03.601C7: CALL 03D........................................ while(TRUE).................... {.................... setHUB(3); //pripoji prislusnou branu01C8: MOVLW 0301C9: MOVWF 2101CA: GOTO 0CD.................... delay_ms(1000);01CB: MOVLW 0401CC: MOVWF 2101CD: MOVLW FA01CE: MOVWF 2201CF: GOTO 13F01D0: DECFSZ 21,F01D1: GOTO 1CD.................... }01D2: GOTO 1C8.................... }....................01D3: SLEEPConfiguration Fuses:Word 1: 2CF5 INTRC NOWDT NOPUT MCLR NOPROTECT NOCPD NOBROWNOUT IESO FCMEN NOLVP NODEBUGWord 2: 3FFF NOWRT BORV40