Rev 199 | Blame | Last modification | View Log | Download
CCS PCM C Compiler, Version 3.245, 27853 22-IV-07 16:12
Filename: D:\KAKLIK\projekty\programy\PIC_C\PICcam\873\camerus.lst
ROM used: 194 words (5%)
Largest free fragment is 2048
RAM used: 6 (3%) at main() level
7 (4%) worst case
Stack: 1 locations
*
0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 029
0003: NOP
.................... #include ".\camerus.h"
.................... #include <16F873.h>
.................... //////// Standard Header file for the PIC16F873 device ////////////////
.................... #device PIC16F873
.................... #list
....................
.................... #device adc=8
....................
.................... #FUSES NOWDT //No Watch Dog Timer
.................... #FUSES XT //Crystal osc <= 4mhz
.................... #FUSES NOPUT //No Power Up Timer
.................... #FUSES NOPROTECT //Code not protected from reading
.................... #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
.................... #FUSES NODEBUG //No Debug mode for ICD
....................
.................... #use delay(clock=4000000)
0004: MOVLW 26
0005: MOVWF 04
0006: MOVF 00,W
0007: BTFSC 03.2
0008: GOTO 018
0009: MOVLW 01
000A: MOVWF 21
000B: CLRF 20
000C: DECFSZ 20,F
000D: GOTO 00C
000E: DECFSZ 21,F
000F: GOTO 00B
0010: MOVLW 4A
0011: MOVWF 20
0012: DECFSZ 20,F
0013: GOTO 012
0014: NOP
0015: NOP
0016: DECFSZ 00,F
0017: GOTO 009
0018: RETLW 00
.................... #use i2c(Master,Fast,sda=PIN_C4,scl=PIN_C3,force_HW)
0019: BCF 14.7
001A: BCF 0C.3
001B: MOVF 26,W
001C: MOVWF 13
001D: MOVLW 02
001E: BTFSC 14.7
001F: GOTO 027
0020: BTFSS 0C.3
0021: GOTO 020
0022: MOVLW 00
0023: BSF 03.5
0024: BTFSC 11.6
0025: MOVLW 01
0026: BCF 03.5
0027: MOVWF 21
0028: RETLW 00
*
0041: MOVLW FF
0042: BCF 03.5
0043: MOVWF 25
....................
....................
....................
.................... #define CAMERA_ADR 0xC4
....................
....................
.................... void main()
.................... {
*
0029: CLRF 04
002A: MOVLW 1F
002B: ANDWF 03,F
002C: BSF 25.3
002D: MOVF 25,W
002E: BSF 03.5
002F: MOVWF 07
0030: BCF 03.5
0031: BSF 25.4
0032: MOVF 25,W
0033: BSF 03.5
0034: MOVWF 07
0035: MOVLW 01
0036: MOVWF 13
0037: MOVLW 28
0038: BCF 03.5
0039: MOVWF 14
003A: BSF 03.5
003B: BCF 14.7
003C: BCF 14.6
003D: BSF 1F.0
003E: BSF 1F.1
003F: BSF 1F.2
0040: BCF 1F.3
.................... setup_adc_ports(NO_ANALOGS);
*
0044: BSF 03.5
0045: BSF 1F.0
0046: BSF 1F.1
0047: BSF 1F.2
0048: BCF 1F.3
.................... setup_adc(ADC_OFF);
0049: BCF 03.5
004A: BCF 1F.0
.................... setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
004B: BSF 03.5
004C: MOVF 01,W
004D: ANDLW C7
004E: IORLW 08
004F: MOVWF 01
.................... setup_timer_1(T1_DISABLED);
0050: BCF 03.5
0051: CLRF 10
.................... setup_timer_2(T2_DISABLED,0,1);
0052: MOVLW 00
0053: MOVWF 21
0054: MOVWF 12
0055: MOVLW 00
0056: BSF 03.5
0057: MOVWF 12
....................
.................... output_high(PIN_C0);
0058: BCF 03.5
0059: BCF 25.0
005A: MOVF 25,W
005B: BSF 03.5
005C: MOVWF 07
005D: BCF 03.5
005E: BSF 07.0
.................... output_low(PIN_C6);
005F: BCF 25.6
0060: MOVF 25,W
0061: BSF 03.5
0062: MOVWF 07
0063: BCF 03.5
0064: BCF 07.6
....................
.................... Delay_ms(200);
0065: MOVLW C8
0066: MOVWF 26
0067: CALL 004
.................... output_low(PIN_C0);
0068: BCF 25.0
0069: MOVF 25,W
006A: BSF 03.5
006B: MOVWF 07
006C: BCF 03.5
006D: BCF 07.0
.................... Delay_ms(200);
006E: MOVLW C8
006F: MOVWF 26
0070: CALL 004
.................... output_high(PIN_C0);
0071: BCF 25.0
0072: MOVF 25,W
0073: BSF 03.5
0074: MOVWF 07
0075: BCF 03.5
0076: BSF 07.0
....................
.................... i2c_start(); // Reset
0077: BSF 03.5
0078: BSF 11.0
0079: BTFSC 11.0
007A: GOTO 079
.................... i2c_write(CAMERA_ADR);
007B: MOVLW C4
007C: BCF 03.5
007D: MOVWF 26
007E: CALL 019
.................... i2c_write(0x12);
007F: MOVLW 12
0080: MOVWF 26
0081: CALL 019
.................... i2c_write(0x80 | 0x24);
0082: MOVLW A4
0083: MOVWF 26
0084: CALL 019
.................... i2c_stop();
0085: BSF 03.5
0086: BSF 11.2
0087: BTFSC 11.2
0088: GOTO 087
....................
.................... // **** Write data => Adr($13) = 0x05 ****
.................... // This will tri-state the Y and UV busses on the OV6620, which
.................... // will allow re-programming of the atmega8 to proceed at startup
.................... // if needed.
....................
.................... i2c_start();
0089: BSF 11.0
008A: BTFSC 11.0
008B: GOTO 08A
.................... i2c_write(CAMERA_ADR);
008C: MOVLW C4
008D: BCF 03.5
008E: MOVWF 26
008F: CALL 019
.................... i2c_write(0x13);
0090: MOVLW 13
0091: MOVWF 26
0092: CALL 019
.................... i2c_write(0x05);
0093: MOVLW 05
0094: MOVWF 26
0095: CALL 019
.................... i2c_stop();
0096: BSF 03.5
0097: BSF 11.2
0098: BTFSC 11.2
0099: GOTO 098
....................
.................... Delay_ms(250);
009A: MOVLW FA
009B: BCF 03.5
009C: MOVWF 26
009D: CALL 004
....................
.................... //**** Write data => Adr($3F) = 0x42 ****
.................... // This will turn on the external clock for the atmega8 to use.
....................
.................... i2c_start();
009E: BSF 03.5
009F: BSF 11.0
00A0: BTFSC 11.0
00A1: GOTO 0A0
.................... i2c_write(CAMERA_ADR);
00A2: MOVLW C4
00A3: BCF 03.5
00A4: MOVWF 26
00A5: CALL 019
.................... i2c_write(0x3F);
00A6: MOVLW 3F
00A7: MOVWF 26
00A8: CALL 019
.................... i2c_write(0x42);
00A9: MOVLW 42
00AA: MOVWF 26
00AB: CALL 019
.................... i2c_stop();
00AC: BSF 03.5
00AD: BSF 11.2
00AE: BTFSC 11.2
00AF: GOTO 0AE
....................
.................... // Wait for a short amount of time for the external clock
.................... // to stabilize
....................
.................... Delay_ms(250);
00B0: MOVLW FA
00B1: BCF 03.5
00B2: MOVWF 26
00B3: CALL 004
....................
....................
.................... output_low(PIN_C0);
00B4: BCF 25.0
00B5: MOVF 25,W
00B6: BSF 03.5
00B7: MOVWF 07
00B8: BCF 03.5
00B9: BCF 07.0
....................
.................... // turn on the mega8 by releasing the reset line
.................... output_high(PIN_C6);
00BA: BCF 25.6
00BB: MOVF 25,W
00BC: BSF 03.5
00BD: MOVWF 07
00BE: BCF 03.5
00BF: BSF 07.6
....................
.................... while(true);
00C0: GOTO 0C0
.................... }
00C1: SLEEP
Configuration Fuses:
Word 1: 3F39 XT NOWDT NOPUT NOPROTECT NOBROWNOUT NOLVP NOCPD NOWRT NODEBUG