⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 双管寻迹.lis

📁 AVR单片机应用开发指南及实例,包含许多实例,挺不错
💻 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 19
 0000           ; /********************************************************************************/
 0000           ; /*
 0000           ;                      广州双龙电子
 0000           ;                      WWW.SL.COM.CN
 0000           ;        接线方法:
 0000           ;           两个光电管并排在小车前方中间,即PC.7,PC.5控制信号线
 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 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;       //直行,点亮前进指示灯
 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;       //转左,点亮左转指示灯
 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;       //转右,点亮右转指示灯
 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -