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

📄 sl3010.lis

📁 单片机开发资料光盘-双龙-686M.zip
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0072 0895              ret
 0074                   .dbend
 0074                   .dbfunc e backward _backward fV
                        .even
 0074           _backward::
 0074                   .dbline -1
 0074                   .dbline 129
 0074           ; 
 0074           ; void backward()//后退
 0074           ;     {
 0074                   .dbline 130
 0074           ;                PORTD = 0x50;   //后退//0101 0000   
 0074 80E5              ldi R24,80
 0076 82BB              out 0x12,R24
 0078                   .dbline 131
 0078           ;                PORTA = 0x3C;     //0011,1100 指示灯
 0078 8CE3              ldi R24,60
 007A 8BBB              out 0x1b,R24
 007C                   .dbline -2
 007C                   .dbline 132
 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 135
 007E           ; 
 007E           ; void forward()//前行
 007E           ;     {
 007E                   .dbline 136
 007E           ;                PORTD = 0xA0;   //前行//1010 0000   
 007E 80EA              ldi R24,160
 0080 82BB              out 0x12,R24
 0082                   .dbline 137
 0082           ;                PORTA = 0xC3;     //1100,0011
 0082 83EC              ldi R24,195
 0084 8BBB              out 0x1b,R24
 0086                   .dbline -2
 0086                   .dbline 138
 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 141
 0088           ;       
 0088           ; void stop()//停止运动
 0088           ;     {
 0088                   .dbline 142
 0088           ;                PORTD = 0xff;   //停止   
 0088 8FEF              ldi R24,255
 008A 82BB              out 0x12,R24
 008C                   .dbline 143
 008C           ;                PORTA = 0xff;     //
 008C 8BBB              out 0x1b,R24
 008E                   .dbline -2
 008E                   .dbline 144
 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 160
 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           ;  
 0092           ;  sw_in = PINC & 0x10;
 0092 43B3              in R20,0x13
 0094 4071              andi R20,16
 0096                   .dbline 164
 0096           ;  if(sw_in == 0x00)
 0096 C9F4              brne L18
 0098                   .dbline 165
 0098           ;    {//后退,左转                   首部开关接触
 0098                   .dbline 166
 0098           ;        backward();          //后退
 0098 EDDF              rcall _backward
 009A                   .dbline 167
 009A           ;        delay_ms(touch_time);
 009A 0AEF              ldi R16,250
 009C 10E0              ldi R17,0
 009E C8DF              rcall _delay_ms
 00A0                   .dbline 169
 00A0           ;          
 00A0           ;          if(work_status == 0x70)
 00A0 80910400          lds R24,_work_status
 00A4 8037              cpi R24,112
 00A6 69F4              brne L20
 00A8                   .dbline 170
 00A8           ;            {//追光机器人,首部开关接触,停止运动,PA 口led 流动闪烁
 00A8                   .dbline 171
 00A8           ;                 stop();
 00A8 EFDF              rcall _stop
 00AA 0AC0              rjmp L23
 00AC           L22:
 00AC                   .dbline 173
 00AC                   .dbline 174
 00AC 85E5              ldi R24,85
 00AE 8BBB              out 0x1b,R24
 00B0                   .dbline 175
 00B0 0AEF              ldi R16,250
 00B2 10E0              ldi R17,0
 00B4 BDDF              rcall _delay_ms
 00B6                   .dbline 176
 00B6 8AEA              ldi R24,170
 00B8 8BBB              out 0x1b,R24
 00BA                   .dbline 177
 00BA 0AEF              ldi R16,250
 00BC 10E0              ldi R17,0
 00BE B8DF              rcall _delay_ms
 00C0                   .dbline 178
 00C0           L23:
 00C0                   .dbline 172
 00C0           ;                 while(1)
 00C0 F5CF              rjmp L22
 00C2           X1:
 00C2                   .dbline 179
 00C2           ;                   {
 00C2           ;                        PORTA = 0x55;
 00C2           ;                    delay_ms(250);
 00C2           ;                    PORTA = 0xAA;
 00C2           ;                    delay_ms(250);
 00C2           ;                       }
 00C2           ;                }
 00C2           L20:
 00C2                   .dbline 181
 00C2           ;          
 00C2           ;        turn_left();         //左转
 00C2 C9DF              rcall _turn_left
 00C4                   .dbline 182
 00C4           ;        delay_ms(touch_time);
 00C4 0AEF              ldi R16,250
 00C6 10E0              ldi R17,0
 00C8 B3DF              rcall _delay_ms
 00CA                   .dbline 183
 00CA           ;    }
 00CA           L18:
 00CA                   .dbline 185
 00CA           ;  
 00CA           ;  sw_in = PINB & 0x70;
 00CA 46B3              in R20,0x16
 00CC 4077              andi R20,112
 00CE                   .dbline 186
 00CE           ;  if(sw_in == 0x50)// 0b 0101,0000  尾部开关接触 
 00CE 4035              cpi R20,80
 00D0 41F4              brne L25
 00D2                   .dbline 187
 00D2           ;    {//前行,左转
 00D2                   .dbline 188
 00D2           ;          forward();           //前行
 00D2 D5DF              rcall _forward
 00D4                   .dbline 189
 00D4           ;        delay_ms(touch_time);
 00D4 0AEF              ldi R16,250
 00D6 10E0              ldi R17,0
 00D8 ABDF              rcall _delay_ms
 00DA                   .dbline 191
 00DA           ;        
 00DA           ;          turn_left();         //左转
 00DA BDDF              rcall _turn_left
 00DC                   .dbline 192
 00DC           ;        delay_ms(touch_time);
 00DC 0AEF              ldi R16,250
 00DE 10E0              ldi R17,0
 00E0 A7DF              rcall _delay_ms
 00E2                   .dbline 193
 00E2           ;    }
 00E2           L25:
 00E2                   .dbline 194
 00E2           ;  if(sw_in == 0x30)// 0b 0011,0000  右侧开关接触
 00E2 4033              cpi R20,48
 00E4 41F4              brne L27
 00E6                   .dbline 195
 00E6           ;    {//后退,左转
 00E6                   .dbline 196
 00E6           ;        backward();          //后退
 00E6 C6DF              rcall _backward
 00E8                   .dbline 197
 00E8           ;        delay_ms(touch_time);
 00E8 0AEF              ldi R16,250
 00EA 10E0              ldi R17,0
 00EC A1DF              rcall _delay_ms
 00EE                   .dbline 199
 00EE           ;        
 00EE           ;          turn_left();         //左转
 00EE B3DF              rcall _turn_left
 00F0                   .dbline 200
 00F0           ;        delay_ms(touch_time);
 00F0 0AEF              ldi R16,250
 00F2 10E0              ldi R17,0
 00F4 9DDF              rcall _delay_ms
 00F6                   .dbline 201
 00F6           ;    }  
 00F6           L27:
 00F6                   .dbline 202
 00F6           ;  if(sw_in == 0x60)// 0b 0110,0000  左侧开关接触
 00F6 4036              cpi R20,96
 00F8 41F4              brne L29
 00FA                   .dbline 203
 00FA           ;    {//后退,左转
 00FA                   .dbline 204
 00FA           ;        backward();          //后退
 00FA BCDF              rcall _backward
 00FC                   .dbline 205
 00FC           ;        delay_ms(touch_time);
 00FC 0AEF              ldi R16,250
 00FE 10E0              ldi R17,0
 0100 97DF              rcall _delay_ms
 0102                   .dbline 207
 0102           ;        
 0102           ;          turn_left();         //左转
 0102 A9DF              rcall _turn_left
 0104                   .dbline 208
 0104           ;        delay_ms(touch_time);
 0104 0AEF              ldi R16,250
 0106 10E0              ldi R17,0
 0108 93DF              rcall _delay_ms
 010A                   .dbline 209
 010A           ;    }
 010A           L29:
 010A                   .dbline 210
 010A           ;  if(sw_in == 0x20)// 0b 0010,0000  两侧开关同时接触,停止运动
 010A 4032              cpi R20,32
 010C C1F4              brne L31
 010E                   .dbline 211
 010E           ;    {
 010E                   .dbline 212
 010E           ;       stop();       //停止运动,熄灭指示灯
 010E BCDF              rcall _stop
 0110                   .dbline 213
 0110           ;     delay_ms(touch_time*4);
 0110 08EE              ldi R16,1000
 0112 13E0              ldi R17,3
 0114 8DDF              rcall _delay_ms
 0116 12C0              rjmp L34
 0118           L33:
 0118                   .dbline 215
 0118           ;       while(1)
 0118           ;            {
 0118                   .dbline 216
 0118           ;                 sw_in = PINC & 0x10;
 0118 43B3              in R20,0x13
 011A 4071              andi R20,16
 011C                   .dbline 217
 011C           ;                 if(sw_in == 0x00)
 011C 09F4              brne L36
 011E                   .dbline 218
 011E           ;                   {break;}
 011E                   .dbline 218
 011E 0FC0              rjmp L35
 0120           L36:
 0120                   .dbline 219
 0120           ;                 PORTA = 0x55;
 0120 85E5              ldi R24,85
 0122 8BBB              out 0x1b,R24
 0124                   .dbline 220
 0124           ;                 delay_ms(250);
 0124 0AEF              ldi R16,250

⌨️ 快捷键说明

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