?? 單管尋跡.lis
字號:
.module _單管尋跡.c
.area text(rom, con, rel)
0000 .dbfile D:\afish\工作內容\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 18
0000 ; /*******************************************************************/
0000 ; /* 廣州雙龍電子
0000 ; WWW.SL.COM.CN
0000 ; 接線方法:
0000 ; 光電管安裝在小車前方中間,PC.6控制信號線
0000 ; 功能:
0000 ; 單個紅光電對管尋跡
0000 ; LED4~5是前進指示燈;LED1~3是左轉彎指示燈;LED6~8是右轉彎指示燈
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延時
0000 ; {
0000 .dbline 20
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 21
0006 L3:
0006 .dbline 20
0006 0F5F subi R16,255 ; offset = 1
0008 1F4F sbci R17,255
000A L5:
000A .dbline 20
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 24
001A ; ;
001A ; }
001A ; void delay(unsigned int n)
001A ; {
001A .dbline 26
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 27
0020 EFDF xcall _delay_1ms
0022 L8:
0022 .dbline 26
0022 4F5F subi R20,255 ; offset = 1
0024 5F4F sbci R21,255
0026 L10:
0026 .dbline 26
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 30
0032 ; delay_1ms();
0032 ; }
0032 ; void main(void)
0032 ; {
0032 .dbline 31
0032 ; DDRA=0xff; //初始化端口
0032 8FEF ldi R24,255
0034 8ABB out 0x1a,R24
0036 .dbline 32
0036 ; PORTA=0xff;
0036 8BBB out 0x1b,R24
0038 .dbline 33
0038 ; DDRD=0xf0;
0038 80EF ldi R24,240
003A 81BB out 0x11,R24
003C .dbline 34
003C ; PORTD=0x0f;
003C 8FE0 ldi R24,15
003E 82BB out 0x12,R24
0040 .dbline 35
0040 ; DDRC=0x00;
0040 2224 clr R2
0042 24BA out 0x14,R2
0044 .dbline 36
0044 ; PORTC=0xff;
0044 8FEF ldi R24,255
0046 85BB out 0x15,R24
0048 .dbline 37
0048 ; for(;;)
0048 L12:
0048 .dbline 38
0048 ; {
0048 .dbline 39
0048 ; if (PINC&=0x40)
0048 83B3 in R24,0x13
004A 8074 andi R24,64
004C 83BB out 0x13,R24
004E 8823 tst R24
0050 41F0 breq L16
0052 .dbline 40
0052 ; {
0052 .dbline 41
0052 ; PORTD=0xAF; //直行
0052 8FEA ldi R24,175
0054 82BB out 0x12,R24
0056 .dbline 42
0056 ; PORTA=0xE7; //點亮LED4,LED5
0056 87EE ldi R24,231
0058 8BBB out 0x1b,R24
005A .dbline 43
005A ; delay(1); //延時1微秒
005A 01E0 ldi R16,1
005C 10E0 ldi R17,0
005E DADF xcall _delay
0060 .dbline 44
0060 ; }
0060 07C0 xjmp L17
0062 L16:
0062 .dbline 46
0062 ; else
0062 ; {
0062 .dbline 47
0062 ; PORTD=0x60; //左轉
0062 80E6 ldi R24,96
0064 82BB out 0x12,R24
0066 .dbline 48
0066 ; PORTA=0x1F; //點亮左邊LED
0066 8FE1 ldi R24,31
0068 8BBB out 0x1b,R24
006A .dbline 49
006A ; delay(1); //延時1微秒
006A 01E0 ldi R16,1
006C 10E0 ldi R17,0
006E D2DF xcall _delay
0070 .dbline 50
0070 ; }
0070 L17:
0070 .dbline 51
0070 ; if (PINC&=0x40)
0070 83B3 in R24,0x13
0072 8074 andi R24,64
0074 83BB out 0x13,R24
0076 8823 tst R24
0078 41F0 breq L18
007A .dbline 52
007A ; {
007A .dbline 53
007A ; PORTD=0xAF; //直行
007A 8FEA ldi R24,175
007C 82BB out 0x12,R24
007E .dbline 54
007E ; PORTA=0x00; //點亮LED4,LED5
007E 2224 clr R2
0080 2BBA out 0x1b,R2
0082 .dbline 55
0082 ; delay(1); //延時1微秒
0082 01E0 ldi R16,1
0084 10E0 ldi R17,0
0086 C6DF xcall _delay
0088 .dbline 56
0088 ; }
0088 DFCF xjmp L12
008A L18:
008A .dbline 58
008A .dbline 59
008A 80E9 ldi R24,144
008C 82BB out 0x12,R24
008E .dbline 60
008E 88EF ldi R24,248
0090 8BBB out 0x1b,R24
0092 .dbline 61
0092 02E0 ldi R16,2
0094 10E0 ldi R17,0
0096 BEDF xcall _delay
0098 .dbline 62
0098 .dbline 63
0098 .dbline 37
0098 .dbline 37
0098 D7CF xjmp L12
009A X0:
009A .dbline -2
009A L11:
009A .dbline 0 ; func end
009A 0895 ret
009C .dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -