CCS PCM C Compiler, Version 4.058s, 42064 06-V-08 13:28
Filename: C:\Documents and Settings\Administrator\Plocha\rotacni_display\SW\infra\infra.lst
ROM used: 553 words (7%)
Largest free fragment is 2048
RAM used: 48 (13%) at main() level
51 (14%) worst case
Stack: 2 worst case (1 in main + 1 for interrupts)
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 136
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 0DE
.................... #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)
*
00F7: MOVLW 42
00F8: MOVWF 04
00F9: BCF 03.7
00FA: MOVF 00,W
00FB: BTFSC 03.2
00FC: GOTO 10E
00FD: MOVLW 01
00FE: MOVWF 78
00FF: MOVLW BF
0100: MOVWF 77
0101: CLRWDT
0102: DECFSZ 77,F
0103: GOTO 101
0104: DECFSZ 78,F
0105: GOTO 0FF
0106: MOVLW 4A
0107: MOVWF 77
0108: DECFSZ 77,F
0109: GOTO 108
010A: NOP
010B: CLRWDT
010C: DECFSZ 00,F
010D: GOTO 0FD
010E: BCF 0A.3
010F: BCF 0A.4
0110: GOTO 1E5 (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[2*MAX_SLOVO] ={'[','[',92,'[','E',']','A','[',92,'[','[','^','_','_',']',96,'^','_','_','a'};
*
0149: MOVLW 5B
014A: BCF 03.5
014B: MOVWF 28
014C: MOVWF 29
014D: MOVLW 5C
014E: MOVWF 2A
014F: MOVLW 5B
0150: MOVWF 2B
0151: MOVLW 45
0152: MOVWF 2C
0153: MOVLW 5D
0154: MOVWF 2D
0155: MOVLW 41
0156: MOVWF 2E
0157: MOVLW 5B
0158: MOVWF 2F
0159: MOVLW 5C
015A: MOVWF 30
015B: MOVLW 5B
015C: MOVWF 31
015D: MOVWF 32
015E: MOVLW 5E
015F: MOVWF 33
0160: MOVLW 5F
0161: MOVWF 34
0162: MOVWF 35
0163: MOVLW 5D
0164: MOVWF 36
0165: MOVLW 60
0166: MOVWF 37
0167: MOVLW 5E
0168: MOVWF 38
0169: MOVLW 5F
016A: MOVWF 39
016B: MOVWF 3A
016C: MOVLW 61
016D: MOVWF 3B
.................... int8 otacky;
....................
.................... #int_RDA
.................... void RDA_isr(void)
.................... {
.................... int n;
.................... output_B(0x55);
*
00DE: BSF 03.5
00DF: CLRF 06
00E0: MOVLW 55
00E1: BCF 03.5
00E2: MOVWF 06
.................... for(n=0;n<(MAX_SLOVO*2);n++)
00E3: CLRF 4A
00E4: MOVF 4A,W
00E5: SUBLW 13
00E6: BTFSS 03.0
00E7: GOTO 0F3
.................... {
.................... napis[n]=getc();
00E8: MOVLW 28
00E9: ADDWF 4A,W
00EA: MOVWF 04
00EB: BCF 03.7
00EC: BTFSS 0C.5
00ED: GOTO 0EC
00EE: MOVF 1A,W
00EF: MOVWF 00
.................... restart_WDT();
00F0: CLRWDT
.................... }
00F1: INCF 4A,F
00F2: GOTO 0E4
.................... }
....................
00F3: BCF 0C.5
00F4: BCF 0A.3
00F5: BCF 0A.4
00F6: GOTO 01F
.................... void main()
.................... {
*
0136: CLRF 04
0137: BCF 03.7
0138: MOVLW 1F
0139: ANDWF 03,F
013A: MOVLW 67
013B: BSF 03.5
013C: MOVWF 19
013D: MOVLW A2
013E: MOVWF 18
013F: MOVLW 90
0140: BCF 03.5
0141: MOVWF 18
0142: BSF 03.5
0143: BSF 1F.0
0144: BSF 1F.1
0145: BSF 1F.2
0146: BCF 1F.3
0147: MOVLW 07
0148: MOVWF 1C
....................
.................... 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
.................... };
....................
.................... setup_adc_ports(AN0);
*
0170: BSF 03.5
0171: BCF 1F.0
0172: BSF 1F.1
0173: BSF 1F.2
0174: BSF 1F.3
.................... setup_adc(ADC_CLOCK_INTERNAL);
0175: BCF 1F.6
0176: BCF 03.5
0177: BSF 1F.6
0178: BSF 1F.7
0179: BSF 03.5
017A: BCF 1F.7
017B: BCF 03.5
017C: BSF 1F.0
.................... setup_psp(PSP_DISABLED);
017D: BSF 03.5
017E: BCF 09.4
.................... setup_spi(SPI_SS_DISABLED);
*
016E: MOVLW FF
016F: MOVWF 3D
*
017F: BCF 03.5
0180: BCF 14.5
0181: BCF 3D.5
0182: MOVF 3D,W
0183: BSF 03.5
0184: MOVWF 07
0185: BCF 03.5
0186: BSF 3D.4
0187: MOVF 3D,W
0188: BSF 03.5
0189: MOVWF 07
018A: BCF 03.5
018B: BCF 3D.3
018C: MOVF 3D,W
018D: BSF 03.5
018E: MOVWF 07
018F: MOVLW 01
0190: BCF 03.5
0191: MOVWF 14
0192: MOVLW 00
0193: BSF 03.5
0194: MOVWF 14
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
0195: MOVF 01,W
0196: ANDLW C7
0197: IORLW 08
0198: MOVWF 01
.................... setup_wdt(WDT_2304MS);
0199: MOVLW 0F
019A: MOVWF 77
019B: MOVLW 07
019C: BCF 03.5
019D: CLRF 01
019E: MOVLW 81
019F: MOVWF 04
01A0: BCF 03.7
01A1: MOVF 00,W
01A2: ANDLW F0
01A3: IORLW 07
01A4: MOVWF 00
01A5: CLRWDT
01A6: MOVF 00,W
01A7: ANDLW F7
01A8: BTFSC 77.3
01A9: ANDLW F0
01AA: IORWF 77,W
01AB: MOVWF 00
.................... setup_timer_1(T1_DISABLED);
01AC: CLRF 10
.................... setup_timer_2(T2_DISABLED,0,1);
01AD: MOVLW 00
01AE: MOVWF 78
01AF: MOVWF 12
01B0: MOVLW 00
01B1: BSF 03.5
01B2: MOVWF 12
.................... setup_comparator(NC_NC_NC_NC);
01B3: MOVLW 07
01B4: MOVWF 1C
01B5: MOVF 05,W
01B6: CLRWDT
01B7: MOVLW 02
01B8: MOVWF 77
01B9: DECFSZ 77,F
01BA: GOTO 1B9
01BB: GOTO 1BC
01BC: MOVF 1C,W
01BD: BCF 03.5
01BE: BCF 0D.6
.................... setup_vref(FALSE);
01BF: BSF 03.5
01C0: CLRF 1D
....................
.................... enable_interrupts(INT_RDA);
01C1: BSF 0C.5
.................... enable_interrupts(GLOBAL);
01C2: MOVLW C0
01C3: BCF 03.5
01C4: IORWF 0B,F
....................
.................... set_adc_channel(0); // Prevodnik pro Hall
01C5: MOVLW 00
01C6: MOVWF 78
01C7: MOVF 1F,W
01C8: ANDLW C7
01C9: IORWF 78,W
01CA: MOVWF 1F
.................... output_B(0xFF); // Zhasneme
01CB: BSF 03.5
01CC: CLRF 06
01CD: MOVLW FF
01CE: BCF 03.5
01CF: MOVWF 06
....................
.................... otacky=0;
01D0: CLRF 3C
....................
.................... while(TRUE)
.................... {
.................... for(slovo=0;slovo<2;slovo++)
01D1: CLRF 3E
01D2: MOVF 3E,W
01D3: SUBLW 01
01D4: BTFSS 03.0
01D5: GOTO 227
.................... for(j=0;j<=20;j++) // Jedno slovo se zobrazi stokrat
01D6: CLRF 41
01D7: MOVF 41,W
01D8: SUBLW 14
01D9: BTFSS 03.0
01DA: GOTO 225
.................... {
.................... while(read_adc()<9); // Cekani na magnet
01DB: BSF 1F.2
01DC: BTFSC 1F.2
01DD: GOTO 1DC
01DE: MOVF 1E,W
01DF: SUBLW 08
01E0: BTFSC 03.0
01E1: GOTO 1DB
.................... delay_ms(10);
01E2: MOVLW 0A
01E3: MOVWF 42
01E4: GOTO 0F7
....................
.................... for(pismeno=0;pismeno<MAX_SLOVO;pismeno++)
01E5: CLRF 3F
01E6: MOVF 3F,W
01E7: SUBLW 09
01E8: BTFSS 03.0
01E9: GOTO 21C
.................... {
.................... for(sloupec=0;sloupec<5;sloupec++)
01EA: CLRF 40
01EB: MOVF 40,W
01EC: SUBLW 04
01ED: BTFSS 03.0
01EE: GOTO 210
.................... {
.................... output_B(pis[(napis[slovo*MAX_SLOVO+pismeno]-0x41)*5+sloupec]);
01EF: MOVF 3E,W
01F0: MOVWF 47
01F1: MOVLW 0A
01F2: MOVWF 48
01F3: CALL 111
01F4: MOVF 3F,W
01F5: ADDWF 78,W
01F6: ADDLW 28
01F7: MOVWF 04
01F8: BCF 03.7
01F9: MOVLW 41
01FA: SUBWF 00,W
01FB: MOVWF 46
01FC: MOVWF 47
01FD: MOVLW 05
01FE: MOVWF 48
01FF: CALL 111
0200: MOVF 40,W
0201: ADDWF 78,W
0202: CALL 035
0203: MOVWF 49
0204: BSF 03.5
0205: CLRF 06
0206: BCF 03.5
0207: MOVF 49,W
0208: MOVWF 06
.................... delay_us(500);
0209: CLRWDT
020A: MOVLW A6
020B: MOVWF 77
020C: DECFSZ 77,F
020D: GOTO 20C
.................... }
020E: INCF 40,F
020F: GOTO 1EB
.................... output_B(0xFF);
0210: BSF 03.5
0211: CLRF 06
0212: MOVLW FF
0213: BCF 03.5
0214: MOVWF 06
.................... delay_us(500);
0215: CLRWDT
0216: MOVLW A6
0217: MOVWF 77
0218: DECFSZ 77,F
0219: GOTO 218
.................... }
021A: INCF 3F,F
021B: GOTO 1E6
.................... if (otacky++>120) reset_cpu();
021C: MOVF 3C,W
021D: INCF 3C,F
021E: SUBLW 78
021F: BTFSC 03.0
0220: GOTO 223
0221: CLRF 0A
0222: GOTO 000
.................... }
0223: INCF 41,F
0224: GOTO 1D7
0225: INCF 3E,F
0226: GOTO 1D2
.................... }
0227: GOTO 1D1
.................... }
0228: SLEEP
Configuration Fuses:
Word 1: 3F3D XT WDT NOPUT NODEBUG NOPROTECT NOBROWNOUT NOLVP NOCPD NOWRT