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

📄 单管寻迹.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 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 + -