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

📄 三管.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.7,PC.6,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 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           ;   switch(PINC&0xe0)
 0048 43B3              in R20,0x13
 004A 5527              clr R21
 004C 407E              andi R20,224
 004E 5070              andi R21,0
 0050 4036              cpi R20,96
 0052 E0E0              ldi R30,0
 0054 5E07              cpc R21,R30
 0056 09F4              brne X3
 0058 51C0              xjmp L22
 005A           X3:
 005A 80E6              ldi R24,96
 005C 90E0              ldi R25,0
 005E 8417              cp R24,R20
 0060 9507              cpc R25,R21
 0062 A4F0              brlt L28
 0064           L27:
 0064 4032              cpi R20,32
 0066 E0E0              ldi R30,0
 0068 5E07              cpc R21,R30
 006A 09F4              brne X4
 006C 37C0              xjmp L20
 006E           X4:
 006E 80E2              ldi R24,32
 0070 90E0              ldi R25,0
 0072 8417              cp R24,R20
 0074 9507              cpc R25,R21
 0076 24F0              brlt L30
 0078           L29:
 0078 4030              cpi R20,0
 007A 4507              cpc R20,R21
 007C 39F1              breq L19
 007E           X0:
 007E E4CF              xjmp L12
 0080           L30:
 0080 4034              cpi R20,64
 0082 E0E0              ldi R30,0
 0084 5E07              cpc R21,R30
 0086 09F4              brne X5
 0088 31C0              xjmp L21
 008A           X5:
 008A DECF              xjmp L12
 008C           L28:
 008C 403A              cpi R20,160
 008E E0E0              ldi R30,0
 0090 5E07              cpc R21,R30
 0092 09F4              brne X6
 0094 43C0              xjmp L24
 0096           X6:
 0096 80EA              ldi R24,160
 0098 90E0              ldi R25,0
 009A 8417              cp R24,R20
 009C 9507              cpc R25,R21
 009E 34F0              brlt L32
 00A0           L31:
 00A0 4038              cpi R20,128
 00A2 E0E0              ldi R30,0
 00A4 5E07              cpc R21,R30
 00A6 09F4              brne X7
 00A8 31C0              xjmp L23
 00AA           X7:
 00AA CECF              xjmp L12
 00AC           L32:
 00AC 403C              cpi R20,192
 00AE E0E0              ldi R30,0
 00B0 5E07              cpc R21,R30
 00B2 09F4              brne X8
 00B4 3BC0              xjmp L25
 00B6           X8:
 00B6 403C              cpi R20,192
 00B8 E0E0              ldi R30,0
 00BA 5E07              cpc R21,R30
 00BC 0CF4              brge X9
 00BE C4CF              xjmp L12
 00C0           X9:
 00C0           L33:
 00C0 403E              cpi R20,224
 00C2 E0E0              ldi R30,0
 00C4 5E07              cpc R21,R30
 00C6 09F4              brne X10
 00C8 39C0              xjmp L26
 00CA           X10:
 00CA BECF              xjmp L12
 00CC           X1:
 00CC                   .dbline 40
 00CC           ;     {
 00CC           L19:
 00CC                   .dbline 41
 00CC           ;       case 0x00:PORTD=0x5F ;PORTA=0xff; delay(1);break;      //出界,后退探测,熄灭全部LED
 00CC 8FE5              ldi R24,95
 00CE 82BB              out 0x12,R24
 00D0                   .dbline 41
 00D0 8FEF              ldi R24,255
 00D2 8BBB              out 0x1b,R24
 00D4                   .dbline 41
 00D4 01E0              ldi R16,1
 00D6 10E0              ldi R17,0
 00D8 9DDF              xcall _delay
 00DA                   .dbline 41
 00DA B6CF              xjmp L12
 00DC           L20:
 00DC                   .dbline 42
 00DC           ;       case 0x20:PORTD=0x90 ;PORTA=0xf8; delay(1);break;        //转右,点亮右转指示灯
 00DC 80E9              ldi R24,144
 00DE 82BB              out 0x12,R24
 00E0                   .dbline 42
 00E0 88EF              ldi R24,248
 00E2 8BBB              out 0x1b,R24
 00E4                   .dbline 42
 00E4 01E0              ldi R16,1
 00E6 10E0              ldi R17,0
 00E8 95DF              xcall _delay
 00EA                   .dbline 42
 00EA AECF              xjmp L12
 00EC           L21:
 00EC                   .dbline 43
 00EC           ;       case 0x40:PORTD=0xaf ;PORTA=0xe7; delay(1);break;       // 前进,点亮前进指示灯
 00EC 8FEA              ldi R24,175
 00EE 82BB              out 0x12,R24
 00F0                   .dbline 43
 00F0 87EE              ldi R24,231
 00F2 8BBB              out 0x1b,R24
 00F4                   .dbline 43
 00F4 01E0              ldi R16,1
 00F6 10E0              ldi R17,0
 00F8 8DDF              xcall _delay
 00FA                   .dbline 43
 00FA A6CF              xjmp L12
 00FC           L22:
 00FC                   .dbline 44
 00FC           ;       case 0x60:PORTD=0xaf ;PORTA=0xe7; delay(1);break;        //前进,点亮前进指示灯
 00FC 8FEA              ldi R24,175
 00FE 82BB              out 0x12,R24
 0100                   .dbline 44
 0100 87EE              ldi R24,231
 0102 8BBB              out 0x1b,R24
 0104                   .dbline 44
 0104 01E0              ldi R16,1
 0106 10E0              ldi R17,0
 0108 85DF              xcall _delay
 010A                   .dbline 44
 010A 9ECF              xjmp L12
 010C           L23:
 010C                   .dbline 45
 010C           ;       case 0x80:PORTD=0x60 ;PORTA=0x1f; delay(1);break;       //转左,点亮左转指示灯
 010C 80E6              ldi R24,96
 010E 82BB              out 0x12,R24
 0110                   .dbline 45
 0110 8FE1              ldi R24,31
 0112 8BBB              out 0x1b,R24
 0114                   .dbline 45
 0114 01E0              ldi R16,1
 0116 10E0              ldi R17,0
 0118 7DDF              xcall _delay
 011A                   .dbline 45
 011A 96CF              xjmp L12
 011C           L24:
 011C                   .dbline 46
 011C           ;       case 0xa0:PORTD=0xaf ;PORTA=0xe7; delay(1);break;       //直行,点亮前进指示灯
 011C 8FEA              ldi R24,175
 011E 82BB              out 0x12,R24
 0120                   .dbline 46
 0120 87EE              ldi R24,231
 0122 8BBB              out 0x1b,R24
 0124                   .dbline 46
 0124 01E0              ldi R16,1
 0126 10E0              ldi R17,0
 0128 75DF              xcall _delay
 012A                   .dbline 46
 012A 8ECF              xjmp L12
 012C           L25:
 012C                   .dbline 47
 012C           ;       case 0xc0:PORTD=0xaf ;PORTA=0x0e7; delay(1);break;        //前进,点亮前进指示灯
 012C 8FEA              ldi R24,175
 012E 82BB              out 0x12,R24
 0130                   .dbline 47
 0130 87EE              ldi R24,231
 0132 8BBB              out 0x1b,R24
 0134                   .dbline 47
 0134 01E0              ldi R16,1
 0136 10E0              ldi R17,0
 0138 6DDF              xcall _delay
 013A                   .dbline 47
 013A 86CF              xjmp L12
 013C           L26:
 013C                   .dbline 48
 013C 80E9              ldi R24,144
 013E 82BB              out 0x12,R24
 0140                   .dbline 48
 0140 8FE1              ldi R24,31
 0142 8BBB              out 0x1b,R24
 0144                   .dbline 48
 0144 01E0              ldi R16,1
 0146 10E0              ldi R17,0
 0148 65DF              xcall _delay
 014A                   .dbline 48
 014A                   .dbline 50
 014A                   .dbline 37
 014A                   .dbline 37
 014A 7ECF              xjmp L12
 014C           X2:
 014C                   .dbline -2
 014C           L11:
 014C                   .dbline 0 ; func end
 014C 0895              ret
 014E                   .dbend

⌨️ 快捷键说明

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