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

📄 sl3010.lis

📁 单片机开发资料光盘-双龙-686M.zip
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .even
 0074           _backward::
 0074                   .dbline -1
 0074                   .dbline 130
 0074           ; 
 0074           ; void backward()//后退
 0074           ;     {
 0074                   .dbline 131
 0074           ;                PORTD = 0x50;   //后退//0101 0000   
 0074 80E5              ldi R24,80
 0076 82BB              out 0x12,R24
 0078                   .dbline 132
 0078           ;                PORTA = 0x3C;     //0011,1100 指示灯
 0078 8CE3              ldi R24,60
 007A 8BBB              out 0x1b,R24
 007C                   .dbline -2
 007C                   .dbline 133
 007C           ;     }
 007C           L14:
 007C                   .dbline 0 ; func end
 007C 0895              ret
 007E                   .dbend
 007E                   .dbfunc e forward _forward fV
                        .even
 007E           _forward::
 007E                   .dbline -1
 007E                   .dbline 136
 007E           ; 
 007E           ; void forward()//前行
 007E           ;     {
 007E                   .dbline 137
 007E           ;                PORTD = 0xA0;   //前行//1010 0000   
 007E 80EA              ldi R24,160
 0080 82BB              out 0x12,R24
 0082                   .dbline 138
 0082           ;                PORTA = 0xC3;     //1100,0011
 0082 83EC              ldi R24,195
 0084 8BBB              out 0x1b,R24
 0086                   .dbline -2
 0086                   .dbline 139
 0086           ;     }
 0086           L15:
 0086                   .dbline 0 ; func end
 0086 0895              ret
 0088                   .dbend
 0088                   .dbfunc e stop _stop fV
                        .even
 0088           _stop::
 0088                   .dbline -1
 0088                   .dbline 142
 0088           ;       
 0088           ; void stop()//停止运动
 0088           ;     {
 0088                   .dbline 143
 0088           ;                PORTD = 0xff;   //停止   
 0088 8FEF              ldi R24,255
 008A 82BB              out 0x12,R24
 008C                   .dbline 144
 008C           ;                PORTA = 0xff;     //
 008C 8BBB              out 0x1b,R24
 008E                   .dbline -2
 008E                   .dbline 145
 008E           ;       }
 008E           L16:
 008E                   .dbline 0 ; func end
 008E 0895              ret
 0090                   .dbend
 0090                   .dbfunc e sw_touch _sw_touch fV
 0090           ;      remote_in -> R22
 0090           ;          sw_in -> R20
                        .even
 0090           _sw_touch::
 0090 00D0              rcall push_gset2
 0092                   .dbline -1
 0092                   .dbline 161
 0092           ; 
 0092           ; //左边       X PC4 X       右边
 0092           ; //        X X X X X X X
 0092           ; //       8 7 6 5 4 3 2 1
 0092           ; //     PB4  X X X X X  PB6 
 0092           ; //         | X  X  X | 
 0092           ; //         | X  X  X | 
 0092           ; //         | X  X  X |   
 0092           ; //     |$||- X  X  X -||$|
 0092           ; //     |$|| XXXXXXXXX ||$|
 0092           ; //    #|$||XXXXXXXXXXX||$|#
 0092           ; //     |$||XXX     XXX||$|
 0092           ; //     |$||___ PB5 ___||$|
 0092           ; 
 0092           ; void sw_touch()
 0092           ; {
 0092                   .dbline 163
 0092           ;  unsigned char sw_in,remote_in;
 0092           ;  DDRC = 0x01;PORTC = 0xFF;//PC4
 0092 81E0              ldi R24,1
 0094 84BB              out 0x14,R24
 0096                   .dbline 163
 0096 8FEF              ldi R24,255
 0098 85BB              out 0x15,R24
 009A                   .dbline 164
 009A           ;  DDRB = 0x80;PORTB = 0xFF;//PB4,PB5,PB6
 009A 80E8              ldi R24,128
 009C 87BB              out 0x17,R24
 009E                   .dbline 164
 009E 8FEF              ldi R24,255
 00A0 88BB              out 0x18,R24
 00A2                   .dbline 166
 00A2           ;  
 00A2           ;  sw_in = PINC & 0x10;
 00A2 43B3              in R20,0x13
 00A4 4071              andi R20,16
 00A6                   .dbline 167
 00A6           ;  if(sw_in == 0x00)
 00A6 C9F4              brne L18
 00A8                   .dbline 168
 00A8           ;    {//后退,左转                   首部开关接触
 00A8                   .dbline 169
 00A8           ;        backward();          //后退
 00A8 E5DF              rcall _backward
 00AA                   .dbline 170
 00AA           ;        delay_ms(touch_time);
 00AA 0AEF              ldi R16,250
 00AC 10E0              ldi R17,0
 00AE C0DF              rcall _delay_ms
 00B0                   .dbline 172
 00B0           ;          
 00B0           ;          if(work_status == 0x70)
 00B0 80910400          lds R24,_work_status
 00B4 8037              cpi R24,112
 00B6 69F4              brne L20
 00B8                   .dbline 173
 00B8           ;            {//追光机器人,首部开关接触,停止运动,PA 口led 流动闪烁
 00B8                   .dbline 174
 00B8           ;                 stop();
 00B8 E7DF              rcall _stop
 00BA 0AC0              rjmp L23
 00BC           L22:
 00BC                   .dbline 176
 00BC                   .dbline 177
 00BC 85E5              ldi R24,85
 00BE 8BBB              out 0x1b,R24
 00C0                   .dbline 178
 00C0 0AEF              ldi R16,250
 00C2 10E0              ldi R17,0
 00C4 B5DF              rcall _delay_ms
 00C6                   .dbline 179
 00C6 8AEA              ldi R24,170
 00C8 8BBB              out 0x1b,R24
 00CA                   .dbline 180
 00CA 0AEF              ldi R16,250
 00CC 10E0              ldi R17,0
 00CE B0DF              rcall _delay_ms
 00D0                   .dbline 181
 00D0           L23:
 00D0                   .dbline 175
 00D0           ;                 while(1)
 00D0 F5CF              rjmp L22
 00D2           X1:
 00D2                   .dbline 182
 00D2           ;                   {
 00D2           ;                        PORTA = 0x55;
 00D2           ;                    delay_ms(250);
 00D2           ;                    PORTA = 0xAA;
 00D2           ;                    delay_ms(250);
 00D2           ;                       }
 00D2           ;                }
 00D2           L20:
 00D2                   .dbline 184
 00D2           ;          
 00D2           ;        turn_left();         //左转
 00D2 C1DF              rcall _turn_left
 00D4                   .dbline 185
 00D4           ;        delay_ms(touch_time);
 00D4 0AEF              ldi R16,250
 00D6 10E0              ldi R17,0
 00D8 ABDF              rcall _delay_ms
 00DA                   .dbline 186
 00DA           ;    }
 00DA           L18:
 00DA                   .dbline 188
 00DA           ;  
 00DA           ;  sw_in = PINB & 0x70;
 00DA 46B3              in R20,0x16
 00DC 4077              andi R20,112
 00DE                   .dbline 189
 00DE           ;  if(sw_in == 0x50)// 0b 0101,0000  尾部开关接触 
 00DE 4035              cpi R20,80
 00E0 41F4              brne L25
 00E2                   .dbline 190
 00E2           ;    {//前行,左转
 00E2                   .dbline 191
 00E2           ;          forward();           //前行
 00E2 CDDF              rcall _forward
 00E4                   .dbline 192
 00E4           ;        delay_ms(touch_time);
 00E4 0AEF              ldi R16,250
 00E6 10E0              ldi R17,0
 00E8 A3DF              rcall _delay_ms
 00EA                   .dbline 194
 00EA           ;        
 00EA           ;          turn_left();         //左转
 00EA B5DF              rcall _turn_left
 00EC                   .dbline 195
 00EC           ;        delay_ms(touch_time);
 00EC 0AEF              ldi R16,250
 00EE 10E0              ldi R17,0
 00F0 9FDF              rcall _delay_ms
 00F2                   .dbline 196
 00F2           ;    }
 00F2           L25:
 00F2                   .dbline 197
 00F2           ;  if(sw_in == 0x30)// 0b 0011,0000  右侧开关接触
 00F2 4033              cpi R20,48
 00F4 41F4              brne L27
 00F6                   .dbline 198
 00F6           ;    {//后退,左转
 00F6                   .dbline 199
 00F6           ;        backward();          //后退
 00F6 BEDF              rcall _backward
 00F8                   .dbline 200
 00F8           ;        delay_ms(touch_time);
 00F8 0AEF              ldi R16,250
 00FA 10E0              ldi R17,0
 00FC 99DF              rcall _delay_ms
 00FE                   .dbline 202
 00FE           ;        
 00FE           ;          turn_left();         //左转
 00FE ABDF              rcall _turn_left
 0100                   .dbline 203
 0100           ;        delay_ms(touch_time);
 0100 0AEF              ldi R16,250
 0102 10E0              ldi R17,0
 0104 95DF              rcall _delay_ms
 0106                   .dbline 204
 0106           ;    }  
 0106           L27:
 0106                   .dbline 205
 0106           ;  if(sw_in == 0x60)// 0b 0110,0000  左侧开关接触
 0106 4036              cpi R20,96
 0108 41F4              brne L29
 010A                   .dbline 206
 010A           ;    {//后退,左转
 010A                   .dbline 207
 010A           ;        backward();          //后退
 010A B4DF              rcall _backward
 010C                   .dbline 208
 010C           ;        delay_ms(touch_time);
 010C 0AEF              ldi R16,250
 010E 10E0              ldi R17,0
 0110 8FDF              rcall _delay_ms
 0112                   .dbline 210
 0112           ;        
 0112           ;          turn_left();         //左转
 0112 A1DF              rcall _turn_left
 0114                   .dbline 211
 0114           ;        delay_ms(touch_time);
 0114 0AEF              ldi R16,250
 0116 10E0              ldi R17,0
 0118 8BDF              rcall _delay_ms
 011A                   .dbline 212
 011A           ;    }
 011A           L29:
 011A                   .dbline 213
 011A           ;  if(sw_in == 0x20)// 0b 0010,0000  两侧开关同时接触,停止运动
 011A 4032              cpi R20,32
 011C C1F4              brne L31
 011E                   .dbline 214
 011E           ;    {
 011E                   .dbline 215
 011E           ;       stop();       //停止运动,熄灭指示灯
 011E B4DF              rcall _stop
 0120                   .dbline 216
 0120           ;     delay_ms(touch_time*4);
 0120 08EE              ldi R16,1000
 0122 13E0              ldi R17,3
 0124 85DF              rcall _delay_ms
 0126 12C0              rjmp L34
 0128           L33:
 0128                   .dbline 218
 0128           ;       while(1)
 0128           ;            {
 0128                   .dbline 219
 0128           ;                 sw_in = PINC & 0x10;
 0128 43B3              in R20,0x13
 012A 4071              andi R20,16
 012C                   .dbline 220
 012C           ;                 if(sw_in == 0x00)
 012C 09F4              brne L36
 012E                   .dbline 221
 012E           ;                   {break;}
 012E                   .dbline 221
 012E 0FC0              rjmp L35
 0130           L36:

⌨️ 快捷键说明

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