CCS PCM C Compiler, Version 3.245, 27853 11-V-08 12:42
Filename: D:\MLAB_E\projekty\rotacni_display\SW\infra\infra.lst
ROM used: 526 words (6%)
Largest free fragment is 2048
RAM used: 28 (16%) at main() level
37 (21%) worst case
Stack: 3 worst case (2 in main + 1 for interrupts)
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 181
0003: NOP
0004: MOVWF 7F
0005: SWAPF 03,W
0006: CLRF 03
0007: MOVWF 21
0008: MOVF 0A,W
0009: MOVWF 20
000A: CLRF 0A
000B: MOVF 04,W
000C: MOVWF 22
000D: MOVF 77,W
000E: MOVWF 23
000F: MOVF 78,W
0010: MOVWF 24
0011: MOVF 79,W
0012: MOVWF 25
0013: MOVF 7A,W
0014: MOVWF 26
0015: MOVF 7B,W
0016: MOVWF 27
0017: BCF 03.7
0018: BCF 03.5
0019: MOVLW 8C
001A: MOVWF 04
001B: BTFSS 00.5
001C: GOTO 01F
001D: BTFSC 0C.5
001E: GOTO 032
001F: MOVF 22,W
0020: MOVWF 04
0021: MOVF 23,W
0022: MOVWF 77
0023: MOVF 24,W
0024: MOVWF 78
0025: MOVF 25,W
0026: MOVWF 79
0027: MOVF 26,W
0028: MOVWF 7A
0029: MOVF 27,W
002A: MOVWF 7B
002B: MOVF 20,W
002C: MOVWF 0A
002D: SWAPF 21,W
002E: MOVWF 03
002F: SWAPF 7F,F
0030: SWAPF 7F,W
0031: RETFIE
0032: BCF 0A.3
0033: BCF 0A.4
0034: GOTO 0ED
.................... #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)
*
0104: MOVLW 39
0105: MOVWF 04
0106: MOVF 00,W
0107: BTFSC 03.2
0108: GOTO 11A
0109: MOVLW 01
010A: MOVWF 78
010B: MOVLW BF
010C: MOVWF 77
010D: CLRWDT
010E: DECFSZ 77,F
010F: GOTO 10D
0110: DECFSZ 78,F
0111: GOTO 10B
0112: MOVLW 4A
0113: MOVWF 77
0114: DECFSZ 77,F
0115: GOTO 114
0116: NOP
0117: CLRWDT
0118: DECFSZ 00,F
0119: GOTO 109
011A: BCF 0A.3
011B: BCF 0A.4
011C: GOTO 14E (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]={'[','^','_','_',']',96,'^','_','_','a',0}; // [blesk] E4A [blesk]
.................... const int8 rok[MAX_SLOVO+1]={'[','[',92,'[','E',']','A','[',92,'[',0}; // 2004-2008
....................
.................... #int_RDA
.................... void RDA_isr(void)
.................... {
.................... int n;
.................... output_B(0x55);
*
00ED: BSF 03.5
00EE: CLRF 06
00EF: MOVLW 55
00F0: BCF 03.5
00F1: MOVWF 06
.................... for(n=0;n<MAX_SLOVO;n++)
00F2: CLRF 3E
00F3: MOVF 3E,W
00F4: SUBLW 09
00F5: BTFSS 03.0
00F6: GOTO 100
.................... {
.................... napis[n]=getc();
00F7: MOVLW 28
00F8: ADDWF 3E,W
00F9: MOVWF 04
00FA: BTFSS 0C.5
00FB: GOTO 0FA
00FC: MOVF 1A,W
00FD: MOVWF 00
.................... }
00FE: INCF 3E,F
00FF: GOTO 0F3
.................... }
....................
0100: BCF 0C.5
0101: BCF 0A.3
0102: BCF 0A.4
0103: GOTO 01F
.................... void LED_print()
.................... {
.................... unsigned int slovo,pismeno,sloupec,j;
....................
.................... const int8 pis[33*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
.................... 0b00010111,0b00110011,0b01010101,0b11100110,0b11110111, //blesk
.................... 0b11110000,0b11110111,0b11110111,0b00000001,0b11110111, //4
.................... 0b00111101,0b01011110,0b01101110,0b01110110,0b01111001, //2
.................... 0b00000000,0b01111110,0b01111110,0b01111110,0b00000000, //0
.................... 0b11110111,0b11110111,0b11110111,0b11110111,0b11110111, //pomlka
.................... 0b10001001,0b01110110,0b01110110,0b01110110,0b10001001, //8
.................... };
.................... while(read_adc()<9); // Cekani na magnet
*
0144: BSF 1F.2
0145: BTFSC 1F.2
0146: GOTO 145
0147: MOVF 1E,W
0148: SUBLW 08
0149: BTFSC 03.0
014A: GOTO 144
.................... delay_ms(10);
014B: MOVLW 0A
014C: MOVWF 39
014D: GOTO 104
....................
.................... for(pismeno=0;pismeno<MAX_SLOVO;pismeno++)
014E: CLRF 36
014F: MOVF 36,W
0150: SUBLW 09
0151: BTFSS 03.0
0152: GOTO 17E
.................... {
.................... for(sloupec=0;sloupec<5;sloupec++)
0153: CLRF 37
0154: MOVF 37,W
0155: SUBLW 04
0156: BTFSS 03.0
0157: GOTO 172
.................... {
.................... output_B(pis[(napis[pismeno]-0x41)*5+sloupec]);
0158: MOVLW 28
0159: ADDWF 36,W
015A: MOVWF 04
015B: MOVLW 41
015C: SUBWF 00,W
015D: MOVWF 3B
015E: MOVWF 3C
015F: MOVLW 05
0160: MOVWF 3D
0161: GOTO 11D
0162: MOVF 37,W
0163: ADDWF 78,W
0164: CALL 044
0165: MOVWF 39
0166: BSF 03.5
0167: CLRF 06
0168: BCF 03.5
0169: MOVF 39,W
016A: MOVWF 06
.................... delay_us(500);
016B: CLRWDT
016C: MOVLW A6
016D: MOVWF 77
016E: DECFSZ 77,F
016F: GOTO 16E
.................... }
0170: INCF 37,F
0171: GOTO 154
.................... output_B(0xFF);
0172: BSF 03.5
0173: CLRF 06
0174: MOVLW FF
0175: BCF 03.5
0176: MOVWF 06
.................... delay_us(500);
0177: CLRWDT
0178: MOVLW A6
0179: MOVWF 77
017A: DECFSZ 77,F
017B: GOTO 17A
.................... }
017C: INCF 36,F
017D: GOTO 14F
.................... }
017E: BCF 0A.3
017F: BCF 0A.4
0180: GOTO 1FC (RETURN)
....................
.................... void main()
.................... {
0181: CLRF 04
0182: MOVLW 1F
0183: ANDWF 03,F
0184: MOVLW 67
0185: BSF 03.5
0186: MOVWF 19
0187: MOVLW 22
0188: MOVWF 18
0189: MOVLW 90
018A: BCF 03.5
018B: MOVWF 18
018C: BSF 03.5
018D: BSF 1F.0
018E: BSF 1F.1
018F: BSF 1F.2
0190: BCF 1F.3
0191: MOVLW 07
0192: MOVWF 1C
....................
....................
.................... setup_adc_ports(AN0);
*
0196: BSF 03.5
0197: BCF 1F.0
0198: BSF 1F.1
0199: BSF 1F.2
019A: BSF 1F.3
.................... setup_adc(ADC_CLOCK_INTERNAL);
019B: BCF 1F.6
019C: BCF 03.5
019D: BSF 1F.6
019E: BSF 1F.7
019F: BSF 03.5
01A0: BCF 1F.7
01A1: BCF 03.5
01A2: BSF 1F.0
.................... setup_psp(PSP_DISABLED);
01A3: BSF 03.5
01A4: BCF 09.4
.................... setup_spi(SPI_SS_DISABLED);
*
0193: MOVLW FF
0194: BCF 03.5
0195: MOVWF 34
*
01A5: BCF 03.5
01A6: BCF 14.5
01A7: BCF 34.5
01A8: MOVF 34,W
01A9: BSF 03.5
01AA: MOVWF 07
01AB: BCF 03.5
01AC: BSF 34.4
01AD: MOVF 34,W
01AE: BSF 03.5
01AF: MOVWF 07
01B0: BCF 03.5
01B1: BCF 34.3
01B2: MOVF 34,W
01B3: BSF 03.5
01B4: MOVWF 07
01B5: MOVLW 01
01B6: BCF 03.5
01B7: MOVWF 14
01B8: MOVLW 00
01B9: BSF 03.5
01BA: MOVWF 14
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
01BB: MOVF 01,W
01BC: ANDLW C7
01BD: IORLW 08
01BE: MOVWF 01
.................... setup_wdt(WDT_2304MS);
01BF: MOVLW 0F
01C0: MOVWF 77
01C1: MOVLW 07
01C2: BCF 03.5
01C3: CLRF 01
01C4: MOVLW 81
01C5: MOVWF 04
01C6: MOVF 00,W
01C7: ANDLW F0
01C8: IORLW 07
01C9: MOVWF 00
01CA: CLRWDT
01CB: MOVF 00,W
01CC: ANDLW F7
01CD: BTFSC 77.3
01CE: ANDLW F0
01CF: IORWF 77,W
01D0: MOVWF 00
.................... setup_timer_1(T1_DISABLED);
01D1: CLRF 10
.................... setup_timer_2(T2_DISABLED,0,1);
01D2: MOVLW 00
01D3: MOVWF 78
01D4: MOVWF 12
01D5: MOVLW 00
01D6: BSF 03.5
01D7: MOVWF 12
.................... setup_comparator(NC_NC_NC_NC);
01D8: MOVLW 07
01D9: MOVWF 1C
01DA: MOVF 05,W
01DB: CLRWDT
01DC: MOVLW 02
01DD: MOVWF 77
01DE: DECFSZ 77,F
01DF: GOTO 1DE
01E0: NOP
01E1: NOP
01E2: MOVF 1C,W
01E3: BCF 03.5
01E4: BCF 0D.6
.................... setup_vref(FALSE);
01E5: BSF 03.5
01E6: CLRF 1D
....................
.................... enable_interrupts(INT_RDA);
01E7: BSF 0C.5
.................... enable_interrupts(GLOBAL);
01E8: MOVLW C0
01E9: BCF 03.5
01EA: IORWF 0B,F
....................
.................... set_adc_channel(0); // Prevodnik pro Hall
01EB: MOVLW 00
01EC: MOVWF 78
01ED: MOVF 1F,W
01EE: ANDLW C7
01EF: IORWF 78,W
01F0: MOVWF 1F
.................... output_B(0xFF); // Zhasneme
01F1: BSF 03.5
01F2: CLRF 06
01F3: MOVLW FF
01F4: BCF 03.5
01F5: MOVWF 06
....................
.................... otacky=0;
01F6: CLRF 33
.................... napis[0]=0;
01F7: CLRF 28
....................
.................... while(TRUE)
.................... {
.................... if (napis[0]!=0)
01F8: MOVF 28,F
01F9: BTFSC 03.2
01FA: GOTO 1FD
.................... {
.................... LED_print();
01FB: GOTO 144
.................... }
.................... else
01FC: GOTO 20C
.................... {
.................... strcpy(napis,logo);
01FD: CLRF 35
01FE: CLRF 36
01FF: MOVLW 28
0200: MOVWF 04
0201: MOVF 35,W
0202: ADDWF 04,F
0203: MOVF 36,W
0204: CALL 035
0205: MOVWF 00
0206: IORLW 00
0207: BTFSC 03.2
0208: GOTO 20C
0209: INCF 36,F
020A: INCF 35,F
020B: GOTO 1FF
.................... }
.................... }
020C: GOTO 1F8
.................... }
020D: SLEEP
Configuration Fuses:
Word 1: 3F3D XT WDT NOPUT NODEBUG NOPROTECT NOBROWNOUT NOLVP NOCPD NOWRT