?? 雙管尋跡.lis
字號:
.module _雙管尋跡.c
.area text(rom, con, rel)
0000 .dbfile D:\afish\工作內(nèi)容\DIY-08-16\M16\DIY-08-16\雙管尋跡\雙管尋跡.c
0000 .dbfunc e delay_1ms _delay_1ms fV
0000 ; i -> R16,R17
.even
0000 _delay_1ms::
0000 .dbline -1
0000 .dbline 19
0000 ; /********************************************************************************/
0000 ; /*
0000 ; 廣州雙龍電子
0000 ; WWW.SL.COM.CN
0000 ; 接線方法:
0000 ; 兩個(gè)光電管并排在小車前方中間,即PC.7,PC.5控制信號線
0000 ; 功能:
0000 ; 兩個(gè)紅光電對管尋跡
0000 ; LED4~5是前進(jìn)指示燈;LED1~3是左轉(zhuǎn)指示燈;LED6~8右轉(zhuǎn)指示燈
0000 ; Chip type : ATMEGA16
0000 ; Clock frequency : 8MHz
0000 ; */
0000 ; /*******************************************************************************/
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #define xtal 8
0000 ; void delay_1ms(void) //1ms延時(shí)
0000 ; {
0000 .dbline 21
0000 ; unsigned int i;
0000 ; for(i=1;i<(unsigned int)(xtal*143-2);i++)
0000 01E0 ldi R16,1
0002 10E0 ldi R17,0
0004 02C0 xjmp L5
0006 L2:
0006 .dbline 22
0006 L3:
0006 .dbline 21
0006 0F5F subi R16,255 ; offset = 1
0008 1F4F sbci R17,255
000A L5:
000A .dbline 21
000A 0637 cpi R16,118
000C E4E0 ldi R30,4
000E 1E07 cpc R17,R30
0010 D0F3 brlo L2
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r i 16 i
0014 .dbend
0014 .dbfunc e delay _delay fV
0014 ; i -> R20,R21
0014 ; n -> R22,R23
.even
0014 _delay::
0014 0E940000 xcall push_gset2
0018 B801 movw R22,R16
001A .dbline -1
001A .dbline 25
001A ; ;
001A ; }
001A ; void delay(unsigned int n)
001A ; {
001A .dbline 27
001A ; unsigned int i;
001A ; for(i=0;i<n;i++)
001A 4427 clr R20
001C 5527 clr R21
001E 03C0 xjmp L10
0020 L7:
0020 .dbline 28
0020 EFDF xcall _delay_1ms
0022 L8:
0022 .dbline 27
0022 4F5F subi R20,255 ; offset = 1
0024 5F4F sbci R21,255
0026 L10:
0026 .dbline 27
0026 4617 cp R20,R22
0028 5707 cpc R21,R23
002A D0F3 brlo L7
002C .dbline -2
002C L6:
002C 0E940000 xcall pop_gset2
0030 .dbline 0 ; func end
0030 0895 ret
0032 .dbsym r i 20 i
0032 .dbsym r n 22 i
0032 .dbend
0032 .dbfunc e main _main fV
.even
0032 _main::
0032 .dbline -1
0032 .dbline 31
0032 ; delay_1ms();
0032 ; }
0032 ; void main(void)
0032 ; {
0032 .dbline 32
0032 ; DDRA=0xff; //初始化端口
0032 8FEF ldi R24,255
0034 8ABB out 0x1a,R24
0036 .dbline 33
0036 ; PORTA=0xff;
0036 8BBB out 0x1b,R24
0038 .dbline 34
0038 ; DDRD=0xf0;
0038 80EF ldi R24,240
003A 81BB out 0x11,R24
003C .dbline 35
003C ; PORTD=0x0f;
003C 8FE0 ldi R24,15
003E 82BB out 0x12,R24
0040 .dbline 36
0040 ; DDRC=0x00;
0040 2224 clr R2
0042 24BA out 0x14,R2
0044 .dbline 37
0044 ; PORTC=0xff;
0044 8FEF ldi R24,255
0046 85BB out 0x15,R24
0048 .dbline 38
0048 ; for(;;)
0048 L12:
0048 .dbline 39
0048 ; {
0048 .dbline 40
0048 ; switch(PINC&0xA0)
0048 43B3 in R20,0x13
004A 5527 clr R21
004C 407A andi R20,160
004E 5070 andi R21,0
0050 4032 cpi R20,32
0052 E0E0 ldi R30,0
0054 5E07 cpc R21,R30
0056 31F1 breq L21
0058 80E2 ldi R24,32
005A 90E0 ldi R25,0
005C 8417 cp R24,R20
005E 9507 cpc R25,R21
0060 24F0 brlt L24
0062 L23:
0062 4030 cpi R20,0
0064 4507 cpc R20,R21
0066 31F1 breq L22
0068 X0:
0068 EFCF xjmp L12
006A L24:
006A 4038 cpi R20,128
006C E0E0 ldi R30,0
006E 5E07 cpc R21,R30
0070 89F0 breq L20
0072 4038 cpi R20,128
0074 E0E0 ldi R30,0
0076 5E07 cpc R21,R30
0078 3CF3 brlt L12
007A L25:
007A 403A cpi R20,160
007C E0E0 ldi R30,0
007E 5E07 cpc R21,R30
0080 09F0 breq L19
0082 E2CF xjmp L12
0084 X1:
0084 .dbline 41
0084 ; {
0084 L19:
0084 .dbline 42
0084 ; case 0xA0:PORTD=0xAF ;PORTA=0xE7; delay(1);break; //直行,點(diǎn)亮前進(jìn)指示燈
0084 8FEA ldi R24,175
0086 82BB out 0x12,R24
0088 .dbline 42
0088 87EE ldi R24,231
008A 8BBB out 0x1b,R24
008C .dbline 42
008C 01E0 ldi R16,1
008E 10E0 ldi R17,0
0090 C1DF xcall _delay
0092 .dbline 42
0092 DACF xjmp L12
0094 L20:
0094 .dbline 43
0094 ; case 0x80:PORTD=0x60 ;PORTA=0x1F; delay(1);break; //轉(zhuǎn)左,點(diǎn)亮左轉(zhuǎn)指示燈
0094 80E6 ldi R24,96
0096 82BB out 0x12,R24
0098 .dbline 43
0098 8FE1 ldi R24,31
009A 8BBB out 0x1b,R24
009C .dbline 43
009C 01E0 ldi R16,1
009E 10E0 ldi R17,0
00A0 B9DF xcall _delay
00A2 .dbline 43
00A2 D2CF xjmp L12
00A4 L21:
00A4 .dbline 44
00A4 ; case 0x20:PORTD=0x90 ;PORTA=0xF8; delay(1);break; //轉(zhuǎn)右,點(diǎn)亮右轉(zhuǎn)指示燈
00A4 80E9 ldi R24,144
00A6 82BB out 0x12,R24
00A8 .dbline 44
00A8 88EF ldi R24,248
00AA 8BBB out 0x1b,R24
00AC .dbline 44
00AC 01E0 ldi R16,1
00AE 10E0 ldi R17,0
00B0 B1DF xcall _delay
00B2 .dbline 44
00B2 CACF xjmp L12
00B4 L22:
00B4 .dbline 45
00B4 8FEA ldi R24,175
00B6 82BB out 0x12,R24
00B8 .dbline 45
00B8 8FEF ldi R24,255
00BA 8BBB out 0x1b,R24
00BC .dbline 45
00BC 01E0 ldi R16,1
00BE 10E0 ldi R17,0
00C0 A9DF xcall _delay
00C2 .dbline 45
00C2 .dbline 47
00C2 .dbline 38
00C2 .dbline 38
00C2 C2CF xjmp L12
00C4 X2:
00C4 .dbline -2
00C4 L11:
00C4 .dbline 0 ; func end
00C4 0895 ret
00C6 .dbend
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -