Subversion Repositories svnkaklik

Rev

Blame | Last modification | View Log | Download

CCS PCM C Compiler, Version 3.245, 27853               24-IV-06 23:56

               Filename: D:\KAKLIK\programy\PIC_C\roboti\istrobot\3Orbis\cidla\cidla.lst

               ROM used: 548 words (13%)
                         Largest free fragment is 2048
               RAM used: 12 (7%) at main() level
                         17 (10%) worst case
               Stack:    2 locations

*
0000:  MOVLW  00
0001:  MOVWF  0A
0002:  GOTO   0B1
0003:  NOP
.................... #include ".\cidla.h" 
.................... #include <16F88.h> 
.................... //////// Standard Header file for the PIC16F88 device //////////////// 
.................... #device PIC16F88 
.................... #list 
....................  
.................... #device adc=8 
.................... #fuses NOWDT,INTRC_IO, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO 
.................... #use delay(clock=4000000,RESTART_WDT) 
*
002A:  MOVLW  27
002B:  MOVWF  04
002C:  MOVF   00,W
002D:  BTFSC  03.2
002E:  GOTO   040
002F:  MOVLW  01
0030:  MOVWF  78
0031:  MOVLW  BF
0032:  MOVWF  77
0033:  CLRWDT
0034:  DECFSZ 77,F
0035:  GOTO   033
0036:  DECFSZ 78,F
0037:  GOTO   031
0038:  MOVLW  4A
0039:  MOVWF  77
003A:  DECFSZ 77,F
003B:  GOTO   03A
003C:  NOP
003D:  CLRWDT
003E:  DECFSZ 00,F
003F:  GOTO   02F
0040:  RETLW  00
....................  
....................  
.................... //#include <stdlib.h> 
....................  
.................... #use rs232(baud=9600,parity=N,xmit=PIN_B3,bits=8,restart_wdt) 
0041:  BSF    03.5
0042:  BCF    06.3
0043:  BCF    03.5
0044:  BCF    06.3
0045:  MOVLW  08
0046:  MOVWF  78
0047:  NOP
0048:  NOP
0049:  NOP
004A:  BSF    78.7
004B:  GOTO   05B
004C:  BCF    78.7
004D:  RRF    29,F
004E:  BTFSC  03.0
004F:  BSF    06.3
0050:  BTFSS  03.0
0051:  BCF    06.3
0052:  BSF    78.6
0053:  GOTO   05B
0054:  BCF    78.6
0055:  DECFSZ 78,F
0056:  GOTO   04D
0057:  NOP
0058:  NOP
0059:  NOP
005A:  BSF    06.3
005B:  MOVLW  1C
005C:  MOVWF  04
005D:  DECFSZ 04,F
005E:  GOTO   05D
005F:  NOP
0060:  NOP
0061:  CLRWDT
0062:  BTFSC  78.7
0063:  GOTO   04C
0064:  BTFSC  78.6
0065:  GOTO   054
0066:  RETLW  00
....................  
.................... #define IRRX      PIN_B0 
....................  
.................... #define  TRESHOLD_MAX   70    // rozhodovaci uroven  pro cidla cerna/bila 
.................... #define  TRESHOLD_MIN   50 
.................... #define  CIHLA          10    // doba, po kterou musi byt detekovana cihla 
....................  
.................... unsigned int8 last_radius;    // rozsah 
.................... unsigned int8 last_cidla;     // co cidla videla minule 
.................... unsigned int8 shure;          // citac doby, po kterou musi byt detekovana cihla 
....................  
.................... //tuning 
.................... /*#define  PULZACE  3  // urcuje rychlost pulzovani pomoci PWM 
....................  
.................... //Vystup PWM je na PIN_B3 
.................... //////////////////////////////////////////////////////////////////////////////// 
.................... void pulzovani()  // postupne rozsvecuje a zhasina podsvetleni 
.................... { 
.................... unsigned int8 i,n; 
....................    for(n=0;n<=3;n++) 
....................    { 
....................       for(i=0;i<255;i++) {set_pwm1_duty(i); Delay_ms(PULZACE);} // rozsvecovani 
....................       for(i=255;i>0;i--) {set_pwm1_duty(i); Delay_ms(PULZACE);} // zhasinani 
....................    } 
.................... } 
.................... */ 
.................... //////////////////////////////////////////////////////////////////////////////// 
.................... void main() 
.................... { 
*
00B1:  CLRF   04
00B2:  MOVLW  1F
00B3:  ANDWF  03,F
00B4:  MOVLW  60
00B5:  BSF    03.5
00B6:  MOVWF  0F
00B7:  BCF    06.3
00B8:  BCF    03.5
00B9:  BSF    06.3
00BA:  BSF    03.5
00BB:  BCF    1F.4
00BC:  BCF    1F.5
00BD:  MOVF   1B,W
00BE:  ANDLW  80
00BF:  MOVWF  1B
00C0:  MOVLW  07
00C1:  MOVWF  1C
....................    int8 cidla; 
....................    unsigned int8 a; 
....................    unsigned int8 n; 
....................  
....................    setup_adc_ports(sAN0|sAN1|sAN2|sAN3|sAN4|sAN5|sAN6|VSS_VDD); 
00C2:  BCF    1F.4
00C3:  BCF    1F.5
00C4:  MOVF   1B,W
00C5:  ANDLW  80
00C6:  IORLW  7F
00C7:  MOVWF  1B
....................    setup_adc(ADC_CLOCK_INTERNAL); 
00C8:  BCF    1F.6
00C9:  BCF    03.5
00CA:  BSF    1F.6
00CB:  BSF    1F.7
00CC:  BSF    03.5
00CD:  BCF    1F.7
00CE:  BCF    03.5
00CF:  BSF    1F.0
....................    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 
00D0:  BSF    03.5
00D1:  MOVF   01,W
00D2:  ANDLW  C7
00D3:  IORLW  08
00D4:  MOVWF  01
....................    setup_timer_1(T1_DISABLED); 
00D5:  BCF    03.5
00D6:  CLRF   10
....................    setup_timer_2(T2_DISABLED,0,1); 
00D7:  MOVLW  00
00D8:  MOVWF  78
00D9:  MOVWF  12
00DA:  MOVLW  00
00DB:  BSF    03.5
00DC:  MOVWF  12
....................    setup_comparator(NC_NC_NC_NC); 
00DD:  MOVLW  07
00DE:  MOVWF  1C
00DF:  MOVF   05,W
00E0:  CLRWDT
00E1:  MOVLW  02
00E2:  MOVWF  77
00E3:  DECFSZ 77,F
00E4:  GOTO   0E3
00E5:  NOP
00E6:  NOP
00E7:  MOVF   1C,W
00E8:  BCF    03.5
00E9:  BCF    0D.6
....................    setup_vref(FALSE); 
00EA:  BSF    03.5
00EB:  CLRF   1D
....................  
....................    Delay_ms(500); 
00EC:  MOVLW  02
00ED:  BCF    03.5
00EE:  MOVWF  26
00EF:  MOVLW  FA
00F0:  MOVWF  27
00F1:  CALL   02A
00F2:  DECFSZ 26,F
00F3:  GOTO   0EF
....................    setup_spi(SPI_SLAVE|SPI_H_TO_L|SPI_SS_DISABLED); 
00F4:  BCF    14.5
00F5:  BSF    03.5
00F6:  BCF    06.2
00F7:  BSF    06.1
00F8:  BSF    06.4
00F9:  MOVLW  35
00FA:  BCF    03.5
00FB:  MOVWF  14
00FC:  MOVLW  40
00FD:  BSF    03.5
00FE:  MOVWF  14
....................     
....................    // diagnostika 
....................    printf("\n\r"); 
00FF:  BCF    03.5
0100:  CLRF   26
0101:  MOVF   26,W
0102:  CALL   004
0103:  IORLW  00
0104:  BTFSC  03.2
0105:  GOTO   10A
0106:  INCF   26,F
0107:  MOVWF  29
0108:  CALL   041
0109:  GOTO   101
....................    Delay_ms(100); 
010A:  MOVLW  64
010B:  MOVWF  27
010C:  CALL   02A
....................    printf("***\n\r"); 
010D:  CLRF   26
010E:  MOVF   26,W
010F:  CALL   00B
0110:  IORLW  00
0111:  BTFSC  03.2
0112:  GOTO   117
0113:  INCF   26,F
0114:  MOVWF  29
0115:  CALL   041
0116:  GOTO   10E
....................    Delay_ms(100); 
0117:  MOVLW  64
0118:  MOVWF  27
0119:  CALL   02A
....................    for (n=0; n<=6; n++) 
011A:  CLRF   25
011B:  MOVF   25,W
011C:  SUBLW  06
011D:  BTFSS  03.0
011E:  GOTO   157
....................    { 
....................       set_adc_channel(n); 
011F:  RLF    25,W
0120:  MOVWF  77
0121:  RLF    77,F
0122:  RLF    77,F
0123:  MOVLW  F8
0124:  ANDWF  77,F
0125:  MOVF   1F,W
0126:  ANDLW  C7
0127:  IORWF  77,W
0128:  MOVWF  1F
....................       Delay_ms(100); 
0129:  MOVLW  64
012A:  MOVWF  27
012B:  CALL   02A
....................       a=read_adc(); 
012C:  BSF    1F.2
012D:  BTFSC  1F.2
012E:  GOTO   12D
012F:  MOVF   1E,W
0130:  MOVWF  24
....................       printf("sensor %u - %u\n\r",n,a); 
0131:  CLRF   26
0132:  MOVF   26,W
0133:  CALL   015
0134:  INCF   26,F
0135:  MOVWF  77
0136:  MOVWF  29
0137:  CALL   041
0138:  MOVLW  07
0139:  SUBWF  26,W
013A:  BTFSS  03.2
013B:  GOTO   132
013C:  MOVF   25,W
013D:  MOVWF  27
013E:  MOVLW  1B
013F:  MOVWF  28
0140:  CALL   07C
0141:  MOVLW  20
0142:  MOVWF  29
0143:  CALL   041
0144:  MOVLW  2D
0145:  MOVWF  29
0146:  CALL   041
0147:  MOVLW  20
0148:  MOVWF  29
0149:  CALL   041
014A:  MOVF   24,W
014B:  MOVWF  27
014C:  MOVLW  1B
014D:  MOVWF  28
014E:  CALL   07C
014F:  MOVLW  0A
0150:  MOVWF  29
0151:  CALL   041
0152:  MOVLW  0D
0153:  MOVWF  29
0154:  CALL   041
....................    } 
0155:  INCF   25,F
0156:  GOTO   11B
....................  
....................    shure=0; 
0157:  CLRF   22
....................    while(true) 
....................    { 
....................       set_adc_channel(0); 
0158:  MOVLW  00
0159:  MOVWF  78
015A:  MOVF   1F,W
015B:  ANDLW  C7
015C:  IORWF  78,W
015D:  MOVWF  1F
....................       cidla=0; 
015E:  CLRF   23
....................       Delay_us(10); 
015F:  CLRWDT
0160:  MOVLW  02
0161:  MOVWF  77
0162:  DECFSZ 77,F
0163:  GOTO   162
0164:  NOP
0165:  NOP
....................       a=read_adc(); 
0166:  BSF    1F.2
0167:  BTFSC  1F.2
0168:  GOTO   167
0169:  MOVF   1E,W
016A:  MOVWF  24
....................  
....................       set_adc_channel(1); 
016B:  MOVLW  08
016C:  MOVWF  78
016D:  MOVF   1F,W
016E:  ANDLW  C7
016F:  IORWF  78,W
0170:  MOVWF  1F
....................       if(a<TRESHOLD_MAX)         //hystereze cidel 
0171:  MOVF   24,W
0172:  SUBLW  45
0173:  BTFSS  03.0
0174:  GOTO   17E
....................       { 
....................          if(a>TRESHOLD_MIN) 
0175:  MOVF   24,W
0176:  SUBLW  32
0177:  BTFSC  03.0
0178:  GOTO   17D
....................          { 
....................             cidla |= (last_cidla & 0b00000001); 
0179:  MOVF   21,W
017A:  ANDLW  01
017B:  IORWF  23,F
....................          } 
....................          else cidla |= 0b00000001; 
017C:  GOTO   17E
017D:  BSF    23.0
....................       } 
....................  
....................       a=read_adc(); 
017E:  BSF    1F.2
017F:  BTFSC  1F.2
0180:  GOTO   17F
0181:  MOVF   1E,W
0182:  MOVWF  24
....................  
....................       set_adc_channel(2); 
0183:  MOVLW  10
0184:  MOVWF  78
0185:  MOVF   1F,W
0186:  ANDLW  C7
0187:  IORWF  78,W
0188:  MOVWF  1F
....................       if(a<TRESHOLD_MAX) 
0189:  MOVF   24,W
018A:  SUBLW  45
018B:  BTFSS  03.0
018C:  GOTO   196
....................       { 
....................          if(a>TRESHOLD_MIN) 
018D:  MOVF   24,W
018E:  SUBLW  32
018F:  BTFSC  03.0
0190:  GOTO   195
....................          { 
....................             cidla |= (last_cidla & 0b00000010); 
0191:  MOVF   21,W
0192:  ANDLW  02
0193:  IORWF  23,F
....................          } 
....................          else cidla |= 0b00000010; 
0194:  GOTO   196
0195:  BSF    23.1
....................       } 
....................  
....................       a=read_adc(); 
0196:  BSF    1F.2
0197:  BTFSC  1F.2
0198:  GOTO   197
0199:  MOVF   1E,W
019A:  MOVWF  24
....................  
....................       set_adc_channel(3); 
019B:  MOVLW  18
019C:  MOVWF  78
019D:  MOVF   1F,W
019E:  ANDLW  C7
019F:  IORWF  78,W
01A0:  MOVWF  1F
....................       if(a<TRESHOLD_MAX) 
01A1:  MOVF   24,W
01A2:  SUBLW  45
01A3:  BTFSS  03.0
01A4:  GOTO   1AE
....................       { 
....................          if(a>TRESHOLD_MIN) 
01A5:  MOVF   24,W
01A6:  SUBLW  32
01A7:  BTFSC  03.0
01A8:  GOTO   1AD
....................          { 
....................             cidla |= (last_cidla & 0b00000100); 
01A9:  MOVF   21,W
01AA:  ANDLW  04
01AB:  IORWF  23,F
....................          } 
....................          else cidla |= 0b00000100; 
01AC:  GOTO   1AE
01AD:  BSF    23.2
....................       } 
....................  
....................       a=read_adc(); 
01AE:  BSF    1F.2
01AF:  BTFSC  1F.2
01B0:  GOTO   1AF
01B1:  MOVF   1E,W
01B2:  MOVWF  24
....................  
....................       set_adc_channel(4); 
01B3:  MOVLW  20
01B4:  MOVWF  78
01B5:  MOVF   1F,W
01B6:  ANDLW  C7
01B7:  IORWF  78,W
01B8:  MOVWF  1F
....................       if(a<TRESHOLD_MAX) 
01B9:  MOVF   24,W
01BA:  SUBLW  45
01BB:  BTFSS  03.0
01BC:  GOTO   1C6
....................       { 
....................          if(a>TRESHOLD_MIN) 
01BD:  MOVF   24,W
01BE:  SUBLW  32
01BF:  BTFSC  03.0
01C0:  GOTO   1C5
....................          { 
....................             cidla |= (last_cidla & 0b00001000); 
01C1:  MOVF   21,W
01C2:  ANDLW  08
01C3:  IORWF  23,F
....................          } 
....................          else cidla |= 0b00001000; 
01C4:  GOTO   1C6
01C5:  BSF    23.3
....................       } 
....................       a=read_adc(); 
01C6:  BSF    1F.2
01C7:  BTFSC  1F.2
01C8:  GOTO   1C7
01C9:  MOVF   1E,W
01CA:  MOVWF  24
....................  
....................       set_adc_channel(5); 
01CB:  MOVLW  28
01CC:  MOVWF  78
01CD:  MOVF   1F,W
01CE:  ANDLW  C7
01CF:  IORWF  78,W
01D0:  MOVWF  1F
....................  
....................       if(a<TRESHOLD_MAX) 
01D1:  MOVF   24,W
01D2:  SUBLW  45
01D3:  BTFSS  03.0
01D4:  GOTO   1DE
....................       { 
....................          if(a>TRESHOLD_MIN) 
01D5:  MOVF   24,W
01D6:  SUBLW  32
01D7:  BTFSC  03.0
01D8:  GOTO   1DD
....................          { 
....................             cidla |= (last_cidla & 0b00010000); 
01D9:  MOVF   21,W
01DA:  ANDLW  10
01DB:  IORWF  23,F
....................          } 
....................          else cidla |= 0b00010000; 
01DC:  GOTO   1DE
01DD:  BSF    23.4
....................       } 
....................       a=read_adc(); 
01DE:  BSF    1F.2
01DF:  BTFSC  1F.2
01E0:  GOTO   1DF
01E1:  MOVF   1E,W
01E2:  MOVWF  24
....................  
....................       set_adc_channel(6); 
01E3:  MOVLW  30
01E4:  MOVWF  78
01E5:  MOVF   1F,W
01E6:  ANDLW  C7
01E7:  IORWF  78,W
01E8:  MOVWF  1F
....................       if(a<TRESHOLD_MAX) 
01E9:  MOVF   24,W
01EA:  SUBLW  45
01EB:  BTFSS  03.0
01EC:  GOTO   1F6
....................       { 
....................          if(a>TRESHOLD_MIN) 
01ED:  MOVF   24,W
01EE:  SUBLW  32
01EF:  BTFSC  03.0
01F0:  GOTO   1F5
....................          { 
....................             cidla |= (last_cidla & 0b00100000); 
01F1:  MOVF   21,W
01F2:  ANDLW  20
01F3:  IORWF  23,F
....................          } 
....................          else cidla |= 0b00100000; 
01F4:  GOTO   1F6
01F5:  BSF    23.5
....................       } 
....................       a=read_adc(); 
01F6:  BSF    1F.2
01F7:  BTFSC  1F.2
01F8:  GOTO   1F7
01F9:  MOVF   1E,W
01FA:  MOVWF  24
....................  
....................       if(a<TRESHOLD_MAX) 
01FB:  MOVF   24,W
01FC:  SUBLW  45
01FD:  BTFSS  03.0
01FE:  GOTO   208
....................       { 
....................          if(a>TRESHOLD_MIN) 
01FF:  MOVF   24,W
0200:  SUBLW  32
0201:  BTFSC  03.0
0202:  GOTO   207
....................          { 
....................             cidla |=(last_cidla & 0b01000000); 
0203:  MOVF   21,W
0204:  ANDLW  40
0205:  IORWF  23,F
....................          } 
....................          else cidla |= 0b01000000; 
0206:  GOTO   208
0207:  BSF    23.6
....................       } 
....................  
....................       last_cidla=cidla; 
0208:  MOVF   23,W
0209:  MOVWF  21
....................  
....................       if (!input(IRRX)) {if (shure<255) shure++;} else {shure=0;}; 
020A:  BSF    03.5
020B:  BSF    06.0
020C:  BCF    03.5
020D:  BTFSC  06.0
020E:  GOTO   214
020F:  INCFSZ 22,W
0210:  GOTO   212
0211:  GOTO   213
0212:  INCF   22,F
0213:  GOTO   215
0214:  CLRF   22
....................       if (shure>CIHLA) cidla|=0b10000000; 
0215:  MOVF   22,W
0216:  SUBLW  0A
0217:  BTFSS  03.0
0218:  BSF    23.7
....................  
....................       cidla=~cidla; 
0219:  COMF   23,F
....................       spi_write(cidla); 
021A:  MOVF   23,W
021B:  MOVWF  13
021C:  BSF    03.5
021D:  BTFSC  14.0
021E:  GOTO   221
021F:  BCF    03.5
0220:  GOTO   21C
....................    } 
0221:  BCF    03.5
0222:  GOTO   158
.................... } 
0223:  SLEEP

Configuration Fuses:
   Word  1: 3F38   NOWDT NOPUT MCLR NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG CCPB0 NOPROTECT INTRC_IO
   Word  2: 3FFC   NOFCMEN NOIESO