0,0 → 1,315 |
CCS PCW C Compiler, Version 3.110, 15448 |
|
Filename: d:\@kaklik\programy\pic_c\robot\auto\main.LST |
|
ROM used: 188 (18%) |
Largest free fragment is 836 |
RAM used: 4 (11%) at main() level |
5 (14%) worst case |
Stack: 2 locations |
|
* |
0000: MOVLW 00 |
0001: MOVWF 0A |
0002: GOTO 071 |
0003: NOP |
.................... #include "D:\@Kaklik\programy\PIC_C\robot\auto\main.h" |
.................... #include <16C84.h> |
.................... //////// Standard Header file for the PIC16C84 device //////////////// |
.................... #device PIC16C84 |
.................... #list |
.................... |
.................... #use delay(clock=4000000) |
0004: MOVLW 10 |
0005: MOVWF 04 |
0006: MOVF 00,W |
0007: BTFSC 03.2 |
0008: GOTO 018 |
0009: MOVLW 01 |
000A: MOVWF 0D |
000B: CLRF 0C |
000C: DECFSZ 0C,F |
000D: GOTO 00C |
000E: DECFSZ 0D,F |
000F: GOTO 00B |
0010: MOVLW 4A |
0011: MOVWF 0C |
0012: DECFSZ 0C,F |
0013: GOTO 012 |
0014: NOP |
0015: NOP |
0016: DECFSZ 00,F |
0017: GOTO 009 |
0018: RETLW 00 |
.................... #fuses XT,NOWDT |
.................... |
.................... |
.................... |
.................... #DEFINE CIDLO1L PIN_B0 |
.................... #DEFINE CIDLO1R PIN_B1 |
.................... #DEFINE CIDLO2L PIN_B2 |
.................... #DEFINE CIDLO2R PIN_B3 |
.................... |
.................... #DEFINE RELE1 PIN_B5 |
.................... #DEFINE RELE2 PIN_B6 |
.................... #DEFINE MOTOR1 PIN_B4 |
.................... #DEFINE MOTOR2 PIN_A0 |
.................... #DEFINE MOTOR2a PIN_A1 |
.................... |
.................... #DEFINE LASER PIN_A2 |
.................... |
.................... #DEFINE L 0 |
.................... #DEFINE R 1 |
.................... |
.................... int cara; |
.................... int movement; |
.................... |
.................... void left() |
.................... { |
.................... output_high(RELE1); |
* |
0041: BSF 03.5 |
0042: BCF 06.5 |
0043: BCF 03.5 |
0044: BSF 06.5 |
.................... output_high(RELE2); |
0045: BSF 03.5 |
0046: BCF 06.6 |
0047: BCF 03.5 |
0048: BSF 06.6 |
.................... delay_ms(100); |
0049: MOVLW 64 |
004A: MOVWF 10 |
004B: CALL 004 |
.................... output_high(MOTOR1); |
004C: BSF 03.5 |
004D: BCF 06.4 |
004E: BCF 03.5 |
004F: BSF 06.4 |
.................... output_high(MOTOR2); |
0050: BSF 03.5 |
0051: BCF 05.0 |
0052: BCF 03.5 |
0053: BSF 05.0 |
.................... output_high(MOTOR2a); |
0054: BSF 03.5 |
0055: BCF 05.1 |
0056: BCF 03.5 |
0057: BSF 05.1 |
0058: GOTO 0A4 (RETURN) |
.................... } |
.................... |
.................... void right() |
.................... { |
.................... output_low(RELE1); |
0059: BSF 03.5 |
005A: BCF 06.5 |
005B: BCF 03.5 |
005C: BCF 06.5 |
.................... output_low(RELE2); |
005D: BSF 03.5 |
005E: BCF 06.6 |
005F: BCF 03.5 |
0060: BCF 06.6 |
.................... delay_ms(100); |
0061: MOVLW 64 |
0062: MOVWF 10 |
0063: CALL 004 |
.................... output_high(MOTOR1); |
0064: BSF 03.5 |
0065: BCF 06.4 |
0066: BCF 03.5 |
0067: BSF 06.4 |
.................... output_high(MOTOR2); |
0068: BSF 03.5 |
0069: BCF 05.0 |
006A: BCF 03.5 |
006B: BSF 05.0 |
.................... output_high(MOTOR2a); |
006C: BSF 03.5 |
006D: BCF 05.1 |
006E: BCF 03.5 |
006F: BSF 05.1 |
0070: GOTO 0B1 (RETURN) |
.................... } |
.................... |
.................... void rovne() |
.................... { |
.................... output_low(RELE1); // oba motory vpred |
* |
0029: BSF 03.5 |
002A: BCF 06.5 |
002B: BCF 03.5 |
002C: BCF 06.5 |
.................... output_high(RELE2); |
002D: BSF 03.5 |
002E: BCF 06.6 |
002F: BCF 03.5 |
0030: BSF 06.6 |
.................... delay_ms(100); |
0031: MOVLW 64 |
0032: MOVWF 10 |
0033: CALL 004 |
.................... output_high(MOTOR1); |
0034: BSF 03.5 |
0035: BCF 06.4 |
0036: BCF 03.5 |
0037: BSF 06.4 |
.................... output_high(MOTOR2); |
0038: BSF 03.5 |
0039: BCF 05.0 |
003A: BCF 03.5 |
003B: BSF 05.0 |
.................... output_high(MOTOR2a); |
003C: BSF 03.5 |
003D: BCF 05.1 |
003E: BCF 03.5 |
003F: BSF 05.1 |
0040: RETLW 00 |
.................... } |
.................... |
.................... void stop() |
.................... { |
.................... output_low(MOTOR1); |
* |
0019: BSF 03.5 |
001A: BCF 06.4 |
001B: BCF 03.5 |
001C: BCF 06.4 |
.................... output_low(MOTOR2); |
001D: BSF 03.5 |
001E: BCF 05.0 |
001F: BCF 03.5 |
0020: BCF 05.0 |
.................... output_low(MOTOR2a); |
0021: BSF 03.5 |
0022: BCF 05.1 |
0023: BCF 03.5 |
0024: BCF 05.1 |
.................... delay_ms(100); |
0025: MOVLW 64 |
0026: MOVWF 10 |
0027: CALL 004 |
0028: RETLW 00 |
.................... } |
.................... |
.................... |
.................... void main() |
.................... { |
* |
0071: CLRF 04 |
0072: MOVLW 1F |
0073: ANDWF 03,F |
.................... cara=L; |
0074: CLRF 0E |
.................... movement=R; |
0075: MOVLW 01 |
0076: MOVWF 0F |
.................... output_low(RELE1); // oba motory vpred |
0077: BSF 03.5 |
0078: BCF 06.5 |
0079: BCF 03.5 |
007A: BCF 06.5 |
.................... output_high(RELE2); |
007B: BSF 03.5 |
007C: BCF 06.6 |
007D: BCF 03.5 |
007E: BSF 06.6 |
.................... delay_ms(100); |
007F: MOVLW 64 |
0080: MOVWF 10 |
0081: CALL 004 |
.................... while (true) |
.................... { |
.................... if (!input(CIDLO1R)) cara=R; // cara vpravo |
0082: BSF 03.5 |
0083: BSF 06.1 |
0084: BCF 03.5 |
0085: BTFSC 06.1 |
0086: GOTO 089 |
0087: MOVLW 01 |
0088: MOVWF 0E |
.................... if (!input(CIDLO1L)) cara=L; // cara vlevo |
0089: BSF 03.5 |
008A: BSF 06.0 |
008B: BCF 03.5 |
008C: BTFSC 06.0 |
008D: GOTO 08F |
008E: CLRF 0E |
.................... |
.................... |
.................... if (cara != movement) |
008F: MOVF 0F,W |
0090: SUBWF 0E,W |
0091: BTFSC 03.2 |
0092: GOTO 0B4 |
.................... { |
.................... switch(cara) |
0093: MOVF 0E,W |
0094: ADDLW FE |
0095: BTFSC 03.0 |
0096: GOTO 0B4 |
0097: ADDLW 02 |
0098: GOTO 0B6 |
.................... { |
.................... case L: |
.................... output_high(LASER); |
0099: BSF 03.5 |
009A: BCF 05.2 |
009B: BCF 03.5 |
009C: BSF 05.2 |
.................... stop(); |
009D: CALL 019 |
.................... rovne(); |
009E: CALL 029 |
.................... delay_ms(100); |
009F: MOVLW 64 |
00A0: MOVWF 10 |
00A1: CALL 004 |
.................... stop(); |
00A2: CALL 019 |
.................... left(); |
00A3: GOTO 041 |
.................... movement=L; |
00A4: CLRF 0F |
.................... break; |
00A5: GOTO 0B4 |
.................... |
.................... case R: |
.................... stop(); |
00A6: CALL 019 |
.................... rovne(); |
00A7: CALL 029 |
.................... delay_ms(100); |
00A8: MOVLW 64 |
00A9: MOVWF 10 |
00AA: CALL 004 |
.................... output_low(LASER); |
00AB: BSF 03.5 |
00AC: BCF 05.2 |
00AD: BCF 03.5 |
00AE: BCF 05.2 |
.................... stop(); |
00AF: CALL 019 |
.................... right(); |
00B0: GOTO 059 |
.................... movement=R; |
00B1: MOVLW 01 |
00B2: MOVWF 0F |
.................... break; |
00B3: GOTO 0B4 |
.................... } |
* |
00B6: BCF 0A.0 |
00B7: BCF 0A.1 |
00B8: BCF 0A.2 |
00B9: ADDWF 02,F |
00BA: GOTO 099 |
00BB: GOTO 0A6 |
.................... } |
.................... } |
* |
00B4: GOTO 082 |
.................... } |
.................... |
00B5: SLEEP |