CCS PCM C Compiler, Version 3.245, 27853 11-V-08 14:54Filename: D:\MLAB_E\projekty\rotacni_display\SW\infra\infra.lstROM used: 637 words (8%)Largest free fragment is 2048RAM used: 28 (16%) at main() level38 (22%) worst caseStack: 3 worst case (2 in main + 1 for interrupts)*0000: MOVLW 000001: MOVWF 0A0002: GOTO 1D70003: NOP0004: MOVWF 7F0005: SWAPF 03,W0006: CLRF 030007: MOVWF 210008: MOVF 0A,W0009: MOVWF 20000A: CLRF 0A000B: MOVF 04,W000C: MOVWF 22000D: MOVF 77,W000E: MOVWF 23000F: MOVF 78,W0010: MOVWF 240011: MOVF 79,W0012: MOVWF 250013: MOVF 7A,W0014: MOVWF 260015: MOVF 7B,W0016: MOVWF 270017: BCF 03.70018: BCF 03.50019: MOVLW 8C001A: MOVWF 04001B: BTFSS 00.5001C: GOTO 01F001D: BTFSC 0C.5001E: GOTO 032001F: MOVF 22,W0020: MOVWF 040021: MOVF 23,W0022: MOVWF 770023: MOVF 24,W0024: MOVWF 780025: MOVF 25,W0026: MOVWF 790027: MOVF 26,W0028: MOVWF 7A0029: MOVF 27,W002A: MOVWF 7B002B: MOVF 20,W002C: MOVWF 0A002D: SWAPF 21,W002E: MOVWF 03002F: SWAPF 7F,F0030: SWAPF 7F,W0031: RETFIE0032: BCF 0A.30033: BCF 0A.40034: GOTO 13B.................... #include ".\infra.h".................... #include <16F877A.h>.................... //////// Standard Header file for the PIC16F877A device ////////////////.................... #device PIC16F877A.................... #list........................................ #device adc=8........................................ #FUSES WDT //Watch Dog Timer.................... #FUSES XT //Crystal osc <= 4mhz.................... #FUSES NOPUT //No Power Up Timer.................... #FUSES NOPROTECT //Code not protected from reading.................... #FUSES NODEBUG //No Debug mode for ICD.................... #FUSES NOBROWNOUT //No brownout reset.................... #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O.................... #FUSES NOCPD //No EE protection.................... #FUSES NOWRT //Program memory not write protected........................................ #use delay(clock=4000000,RESTART_WDT)*0153: MOVLW 3A0154: MOVWF 040155: MOVF 00,W0156: BTFSC 03.20157: GOTO 1690158: MOVLW 010159: MOVWF 78015A: MOVLW BF015B: MOVWF 77015C: CLRWDT015D: DECFSZ 77,F015E: GOTO 15C015F: DECFSZ 78,F0160: GOTO 15A0161: MOVLW 4A0162: MOVWF 770163: DECFSZ 77,F0164: GOTO 1630165: NOP0166: CLRWDT0167: DECFSZ 00,F0168: GOTO 1580169: BCF 0A.3016A: BCF 0A.4016B: GOTO 1A4 (RETURN).................... #use rs232(baud=600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8).................................................................................................... #define MAX_SLOVO 10 // Maximalni pocet znaku ve slovu........................................ int8 napis[MAX_SLOVO+1];.................... int8 otacky;........................................ const int8 logo[MAX_SLOVO+1]={'[','[',92,'[','E','e','A','[',92,'[',0}; // [blesk] E4A [blesk].................... const int8 rok[MAX_SLOVO+1]={'[','c','a','a','e',']','c','a','a','i',0}; // 2004-2008........................................ #int_RDA.................... void RDA_isr(void).................... {.................... int n;.................... output_B(0x55);*013B: BSF 03.5013C: CLRF 06013D: MOVLW 55013E: BCF 03.5013F: MOVWF 06.................... for(n=0;n<MAX_SLOVO;n++)0140: CLRF 3F0141: MOVF 3F,W0142: SUBLW 090143: BTFSS 03.00144: GOTO 14E.................... {.................... napis[n]=getc();0145: MOVLW 280146: ADDWF 3F,W0147: MOVWF 040148: BTFSS 0C.50149: GOTO 148014A: MOVF 1A,W014B: MOVWF 00.................... }014C: INCF 3F,F014D: GOTO 141.................... otacky=0;014E: CLRF 33.................... }....................014F: BCF 0C.50150: BCF 0A.30151: BCF 0A.40152: GOTO 01F.................... void LED_print().................... {.................... unsigned int slovo,pismeno,sloupec,j;........................................ const int8 pis[45*5]={0b00000001,0b11110110,0b11110110,0b11110110,0b00000001, // A.................... 0b00000000,0b01110110,0b01110110,0b01110110,0b10001001, // B.................... 0b10000001,0b01111110,0b01111110,0b01111110,0b10111101, // C.................... 0b00000000,0b01111110,0b01111110,0b01111110,0b10000001, // D.................... 0b00000000,0b01110110,0b01110110,0b01111110,0b01111110, // E.................... 0b00000000,0b11110110,0b11110110,0b11111110,0b11111110, // F.................... 0b10000001,0b01111110,0b01110110,0b01110110,0b10000101, // G.................... 0b00000000,0b11110111,0b11110111,0b11110111,0b00000000, // H.................... 0b01111110,0b01111110,0b00000000,0b01111110,0b01111110, // I.................... 0b10111110,0b01111110,0b01111110,0b01111110,0b10000000, // J.................... 0b00000000,0b11110111,0b11110111,0b11101011,0b00011100, // K.................... 0b00000000,0b01111111,0b01111111,0b01111111,0b01111111, // L.................... 0b00000000,0b11111110,0b11110000,0b11111110,0b00000000, // M.................... 0b00000000,0b11101111,0b11011111,0b10111111,0b00000000, // N.................... 0b10000001,0b01111110,0b01111110,0b01111110,0b10000001, // O.................... 0b00000000,0b11110110,0b11110110,0b11110110,0b11111001, // P.................... 0b10000001,0b01111110,0b01111110,0b01111110,0b00000001, // Q.................... 0b00000000,0b11110110,0b11110110,0b11110110,0b00001001, // R.................... 0b10111001,0b01110110,0b01110110,0b01110110,0b10001101, // S.................... 0b11111110,0b11111110,0b00000000,0b11111110,0b11111110, // T.................... 0b10000000,0b01111111,0b01111111,0b01111111,0b10000000, // U.................... 0b11000000,0b10111111,0b01111111,0b10111111,0b11000000, // V.................... 0b10000000,0b01111111,0b10000000,0b01111111,0b10000000, // W.................... 0b00011100,0b11101011,0b11110111,0b11101011,0b00011100, // X.................... 0b11111000,0b11110111,0b00000111,0b11110111,0b11111000, // Y.................... 0b00011110,0b01101110,0b01110110,0b01111010,0b01111100, // Z.................... 0b11111111,0b11111111,0b11111111,0b11111111,0b11111111, // mezera [ 91.................... 0b00010111,0b00110011,0b01010101,0b11100110,0b11110111, // blesk \ 92.................... 0b11110111,0b11110111,0b11110111,0b11110111,0b11110111, // - ] 93.................... 0b11111111,0b11111111,0b01111111,0b11111111,0b11111111, // . ^ 94.................... 0b11111100,0b11110000,0b01000000,0b11110000,0b11111100, // ! _ 95.................... 0b11111101,0b11111110,0b01001110,0b11110110,0b11111001, // ? ` 96.................... 0b00000000,0b01111110,0b01111110,0b01111110,0b00000000, // 0 a.................... 0b01111011,0b01111101,0b00000000,0b01111111,0b01111111, // 1 b.................... 0b00111101,0b01011110,0b01101110,0b01110110,0b01111001, // 2 c.................... 0b10111101,0b01111110,0b01110110,0b01110110,0b10001001, // 3 d.................... 0b11110000,0b11110111,0b11110111,0b00000001,0b11110111, // 4 e.................... 0b10111000,0b01110110,0b01110110,0b01110110,0b10001110, // 5 f.................... 0b10000001,0b01110110,0b01110110,0b01110110,0b10001101, // 6 g.................... 0b11111110,0b11111110,0b00001110,0b11110110,0b11111000, // 7 h.................... 0b10001001,0b01110110,0b01110110,0b01110110,0b10001001, // 8 i.................... 0b10111001,0b01110110,0b01110110,0b01110110,0b10000001, // 9 j.................... 0b11111111,0b01111110,0b10111101,0b11000011,0b11111111, // ) k.................... 0b11111111,0b11000011,0b10111101,0b01111110,0b11111111, // ( l.................... 0b11111111,0b11111111,0b11111111,0b11011011,0b11111111, // : m.................... };........................................ while(read_adc()<9); // Cekani na magnet*0193: BSF 1F.20194: BTFSC 1F.20195: GOTO 1940196: MOVF 1E,W0197: SUBLW 080198: BTFSC 03.00199: GOTO 193.................... while(read_adc()>50); // Cekani na opusteni magnetu019A: BSF 1F.2019B: BTFSC 1F.2019C: GOTO 19B019D: MOVF 1E,W019E: SUBLW 32019F: BTFSS 03.001A0: GOTO 19A.................... delay_ms(7); //cekani, na dostatecni odstup od magnetu, pred zacatkem psani textu01A1: MOVLW 0701A2: MOVWF 3A01A3: GOTO 153........................................ for(pismeno=0;pismeno<MAX_SLOVO;pismeno++)01A4: CLRF 3701A5: MOVF 37,W01A6: SUBLW 0901A7: BTFSS 03.001A8: GOTO 1D4.................... {.................... for(sloupec=0;sloupec<5;sloupec++)01A9: CLRF 3801AA: MOVF 38,W01AB: SUBLW 0401AC: BTFSS 03.001AD: GOTO 1C8.................... {.................... output_B(pis[(napis[pismeno]-0x41)*5+sloupec]);01AE: MOVLW 2801AF: ADDWF 37,W01B0: MOVWF 0401B1: MOVLW 4101B2: SUBWF 00,W01B3: MOVWF 3C01B4: MOVWF 3D01B5: MOVLW 0501B6: MOVWF 3E01B7: GOTO 16C01B8: MOVF 38,W01B9: ADDWF 78,W01BA: CALL 05301BB: MOVWF 3A01BC: BSF 03.501BD: CLRF 0601BE: BCF 03.501BF: MOVF 3A,W01C0: MOVWF 06.................... delay_us(500);01C1: CLRWDT01C2: MOVLW A601C3: MOVWF 7701C4: DECFSZ 77,F01C5: GOTO 1C4.................... }01C6: INCF 38,F01C7: GOTO 1AA.................... output_B(0xFF);01C8: BSF 03.501C9: CLRF 0601CA: MOVLW FF01CB: BCF 03.501CC: MOVWF 06.................... delay_us(500);01CD: CLRWDT01CE: MOVLW A601CF: MOVWF 7701D0: DECFSZ 77,F01D1: GOTO 1D0.................... }01D2: INCF 37,F01D3: GOTO 1A5.................... }01D4: BCF 0A.301D5: BCF 0A.401D6: GOTO 257 (RETURN)........................................ void main().................... {01D7: CLRF 0401D8: MOVLW 1F01D9: ANDWF 03,F01DA: MOVLW 6701DB: BSF 03.501DC: MOVWF 1901DD: MOVLW 2201DE: MOVWF 1801DF: MOVLW 9001E0: BCF 03.501E1: MOVWF 1801E2: BSF 03.501E3: BSF 1F.001E4: BSF 1F.101E5: BSF 1F.201E6: BCF 1F.301E7: MOVLW 0701E8: MOVWF 1C............................................................ setup_adc_ports(AN0);*01EC: BSF 03.501ED: BCF 1F.001EE: BSF 1F.101EF: BSF 1F.201F0: BSF 1F.3.................... setup_adc(ADC_CLOCK_INTERNAL);01F1: BCF 1F.601F2: BCF 03.501F3: BSF 1F.601F4: BSF 1F.701F5: BSF 03.501F6: BCF 1F.701F7: BCF 03.501F8: BSF 1F.0.................... setup_psp(PSP_DISABLED);01F9: BSF 03.501FA: BCF 09.4.................... setup_spi(SPI_SS_DISABLED);*01E9: MOVLW FF01EA: BCF 03.501EB: MOVWF 34*01FB: BCF 03.501FC: BCF 14.501FD: BCF 34.501FE: MOVF 34,W01FF: BSF 03.50200: MOVWF 070201: BCF 03.50202: BSF 34.40203: MOVF 34,W0204: BSF 03.50205: MOVWF 070206: BCF 03.50207: BCF 34.30208: MOVF 34,W0209: BSF 03.5020A: MOVWF 07020B: MOVLW 01020C: BCF 03.5020D: MOVWF 14020E: MOVLW 00020F: BSF 03.50210: MOVWF 14.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);0211: MOVF 01,W0212: ANDLW C70213: IORLW 080214: MOVWF 01.................... setup_wdt(WDT_2304MS);0215: MOVLW 0F0216: MOVWF 770217: MOVLW 070218: BCF 03.50219: CLRF 01021A: MOVLW 81021B: MOVWF 04021C: MOVF 00,W021D: ANDLW F0021E: IORLW 07021F: MOVWF 000220: CLRWDT0221: MOVF 00,W0222: ANDLW F70223: BTFSC 77.30224: ANDLW F00225: IORWF 77,W0226: MOVWF 00.................... setup_timer_1(T1_DISABLED);0227: CLRF 10.................... setup_timer_2(T2_DISABLED,0,1);0228: MOVLW 000229: MOVWF 78022A: MOVWF 12022B: MOVLW 00022C: BSF 03.5022D: MOVWF 12.................... setup_comparator(NC_NC_NC_NC);022E: MOVLW 07022F: MOVWF 1C0230: MOVF 05,W0231: CLRWDT0232: MOVLW 020233: MOVWF 770234: DECFSZ 77,F0235: GOTO 2340236: NOP0237: NOP0238: MOVF 1C,W0239: BCF 03.5023A: BCF 0D.6.................... setup_vref(FALSE);023B: BSF 03.5023C: CLRF 1D........................................ enable_interrupts(INT_RDA);023D: BSF 0C.5.................... enable_interrupts(GLOBAL);023E: MOVLW C0023F: BCF 03.50240: IORWF 0B,F........................................ set_adc_channel(0); // Prevodnik pro Hall0241: MOVLW 000242: MOVWF 780243: MOVF 1F,W0244: ANDLW C70245: IORWF 78,W0246: MOVWF 1F.................... output_B(0xFF); // Zhasneme0247: BSF 03.50248: CLRF 060249: MOVLW FF024A: BCF 03.5024B: MOVWF 06........................................ otacky=0;024C: CLRF 33.................... napis[0]=0;024D: CLRF 28........................................ while(TRUE).................... {.................... int1 vyber;........................................ otacky++;024E: INCF 33,F........................................ if (napis[0]!=0 && otacky <= 30)024F: MOVF 28,F0250: BTFSC 03.20251: GOTO 2580252: MOVF 33,W0253: SUBLW 1E0254: BTFSS 03.00255: GOTO 258.................... {.................... LED_print();0256: GOTO 193.................... }.................... else0257: GOTO 27B.................... {.................... if (vyber == 0) strcpy(napis,logo);0258: BTFSC 35.00259: GOTO 26A025A: CLRF 36025B: CLRF 37025C: MOVLW 28025D: MOVWF 04025E: MOVF 36,W025F: ADDWF 04,F0260: MOVF 37,W0261: CALL 0350262: MOVWF 000263: IORLW 000264: BTFSC 03.20265: GOTO 2690266: INCF 37,F0267: INCF 36,F0268: GOTO 25C.................... else strcpy(napis,rok);0269: GOTO 279026A: CLRF 36026B: CLRF 37026C: MOVLW 28026D: MOVWF 04026E: MOVF 36,W026F: ADDWF 04,F0270: MOVF 37,W0271: CALL 0440272: MOVWF 000273: IORLW 000274: BTFSC 03.20275: GOTO 2790276: INCF 37,F0277: INCF 36,F0278: GOTO 26C.................... vyber++;0279: MOVLW 01027A: XORWF 35,F.................... }.................... }027B: GOTO 24E.................... }027C: SLEEPConfiguration Fuses:Word 1: 3F3D XT WDT NOPUT NODEBUG NOPROTECT NOBROWNOUT NOLVP NOCPD NOWRT