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

📄 宝贝机器人.lis

📁 基于atmel公司的mega16单片机做的机器人控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01BE                   .dbline 172
 01BE 85B3              in R24,0x15
 01C0 877F              andi R24,247
 01C2 85BB              out 0x15,R24
 01C4                   .dbline 172
 01C4 05E0              ldi R16,5
 01C6 10E0              ldi R17,0
 01C8 1BDF              xcall _delay_us
 01CA                   .dbline 173
 01CA 862F              mov R24,R22
 01CC 8170              andi R24,1
 01CE 880F              lsl R24
 01D0 880F              lsl R24
 01D2 880F              lsl R24
 01D4 25B2              in R2,0x15
 01D6 282A              or R2,R24
 01D8 25BA              out 0x15,R2
 01DA                   .dbline 173
 01DA 05E0              ldi R16,5
 01DC 10E0              ldi R17,0
 01DE 10DF              xcall _delay_us
 01E0                   .dbline 174
 01E0 85B3              in R24,0x15
 01E2 8F7E              andi R24,239
 01E4 85BB              out 0x15,R24
 01E6                   .dbline 174
 01E6 05E0              ldi R16,5
 01E8 10E0              ldi R17,0
 01EA 0ADF              xcall _delay_us
 01EC                   .dbline 175
 01EC 6695              lsr R22
 01EE                   .dbline 176
 01EE           L44:
 01EE                   .dbline 169
 01EE 4395              inc R20
 01F0           L46:
 01F0                   .dbline 169
 01F0 4830              cpi R20,8
 01F2 08F3              brlo L43
 01F4                   .dbline 177
 01F4           ;     {
 01F4           ;      PORTC|=0x10;delay_us(5);
 01F4           ;      PORTC&=0xf7;delay_us(5);
 01F4           ;      PORTC|=((display&0x01)<<3);delay_us(5);
 01F4           ;      PORTC&=0xef;delay_us(5);
 01F4           ;       display>>=1;
 01F4           ;    }
 01F4           ;   display=number[minute%10];
 01F4 2AE0              ldi R18,10
 01F6 30E0              ldi R19,0
 01F8 0E2D              mov R16,R14
 01FA 1127              clr R17
 01FC 0E940000          xcall mod16s
 0200 F801              movw R30,R16
 0202 80E0              ldi R24,<_number
 0204 90E0              ldi R25,>_number
 0206 E80F              add R30,R24
 0208 F91F              adc R31,R25
 020A 6081              ldd R22,z+0
 020C                   .dbline 178
 020C           ;   if(point)  //显示路程时米与厘米之加小数点
 020C CC20              tst R12
 020E 09F0              breq L47
 0210                   .dbline 179
 0210           ;   display&=0x7f;
 0210 6F77              andi R22,127
 0212           L47:
 0212                   .dbline 180
 0212           ;    for(j=0;j<8;j++)
 0212 4427              clr R20
 0214 1DC0              xjmp L52
 0216           L49:
 0216                   .dbline 181
 0216                   .dbline 182
 0216 AC9A              sbi 0x15,4
 0218                   .dbline 182
 0218 05E0              ldi R16,5
 021A 10E0              ldi R17,0
 021C F1DE              xcall _delay_us
 021E                   .dbline 183
 021E 85B3              in R24,0x15
 0220 877F              andi R24,247
 0222 85BB              out 0x15,R24
 0224                   .dbline 183
 0224 05E0              ldi R16,5
 0226 10E0              ldi R17,0
 0228 EBDE              xcall _delay_us
 022A                   .dbline 184
 022A 862F              mov R24,R22
 022C 8170              andi R24,1
 022E 880F              lsl R24
 0230 880F              lsl R24
 0232 880F              lsl R24
 0234 25B2              in R2,0x15
 0236 282A              or R2,R24
 0238 25BA              out 0x15,R2
 023A                   .dbline 184
 023A 05E0              ldi R16,5
 023C 10E0              ldi R17,0
 023E E0DE              xcall _delay_us
 0240                   .dbline 185
 0240 85B3              in R24,0x15
 0242 8F7E              andi R24,239
 0244 85BB              out 0x15,R24
 0246                   .dbline 185
 0246 05E0              ldi R16,5
 0248 10E0              ldi R17,0
 024A DADE              xcall _delay_us
 024C                   .dbline 186
 024C 6695              lsr R22
 024E                   .dbline 187
 024E           L50:
 024E                   .dbline 180
 024E 4395              inc R20
 0250           L52:
 0250                   .dbline 180
 0250 4830              cpi R20,8
 0252 08F3              brlo L49
 0254                   .dbline 188
 0254           ;    {
 0254           ;      PORTC|=0x10;delay_us(5);
 0254           ;      PORTC&=0xf7;delay_us(5);
 0254           ;      PORTC|=((display&0x01)<<3);delay_us(5);
 0254           ;      PORTC&=0xef;delay_us(5);
 0254           ;     display>>=1;
 0254           ;   }
 0254           ;   display=number[second/10];
 0254 2AE0              ldi R18,10
 0256 30E0              ldi R19,0
 0258 0A2D              mov R16,R10
 025A 1127              clr R17
 025C 0E940000          xcall div16s
 0260 F801              movw R30,R16
 0262 80E0              ldi R24,<_number
 0264 90E0              ldi R25,>_number
 0266 E80F              add R30,R24
 0268 F91F              adc R31,R25
 026A 6081              ldd R22,z+0
 026C                   .dbline 189
 026C           ;   for(j=0;j<8;j++)
 026C 4427              clr R20
 026E 1DC0              xjmp L56
 0270           L53:
 0270                   .dbline 190
 0270                   .dbline 191
 0270 AC9A              sbi 0x15,4
 0272                   .dbline 191
 0272 05E0              ldi R16,5
 0274 10E0              ldi R17,0
 0276 C4DE              xcall _delay_us
 0278                   .dbline 192
 0278 85B3              in R24,0x15
 027A 877F              andi R24,247
 027C 85BB              out 0x15,R24
 027E                   .dbline 192
 027E 05E0              ldi R16,5
 0280 10E0              ldi R17,0
 0282 BEDE              xcall _delay_us
 0284                   .dbline 193
 0284 862F              mov R24,R22
 0286 8170              andi R24,1
 0288 880F              lsl R24
 028A 880F              lsl R24
 028C 880F              lsl R24
 028E 25B2              in R2,0x15
 0290 282A              or R2,R24
 0292 25BA              out 0x15,R2
 0294                   .dbline 193
 0294 05E0              ldi R16,5
 0296 10E0              ldi R17,0
 0298 B3DE              xcall _delay_us
 029A                   .dbline 194
 029A 85B3              in R24,0x15
 029C 8F7E              andi R24,239
 029E 85BB              out 0x15,R24
 02A0                   .dbline 194
 02A0 05E0              ldi R16,5
 02A2 10E0              ldi R17,0
 02A4 ADDE              xcall _delay_us
 02A6                   .dbline 195
 02A6 6695              lsr R22
 02A8                   .dbline 196
 02A8           L54:
 02A8                   .dbline 189
 02A8 4395              inc R20
 02AA           L56:
 02AA                   .dbline 189
 02AA 4830              cpi R20,8
 02AC 08F3              brlo L53
 02AE                   .dbline 197
 02AE           ;   {
 02AE           ;    PORTC|=0x10;delay_us(5);
 02AE           ;    PORTC&=0xf7;delay_us(5);
 02AE           ;    PORTC|=((display&0x01)<<3);delay_us(5);
 02AE           ;    PORTC&=0xef;delay_us(5);
 02AE           ;    display>>=1;
 02AE           ;   }
 02AE           ;   display=number[second%10];
 02AE 2AE0              ldi R18,10
 02B0 30E0              ldi R19,0
 02B2 0A2D              mov R16,R10
 02B4 1127              clr R17
 02B6 0E940000          xcall mod16s
 02BA F801              movw R30,R16
 02BC 80E0              ldi R24,<_number
 02BE 90E0              ldi R25,>_number
 02C0 E80F              add R30,R24
 02C2 F91F              adc R31,R25
 02C4 6081              ldd R22,z+0
 02C6                   .dbline 198
 02C6           ;   for(j=0;j<8;j++)
 02C6 4427              clr R20
 02C8 1DC0              xjmp L60
 02CA           L57:
 02CA                   .dbline 199
 02CA                   .dbline 200
 02CA AC9A              sbi 0x15,4
 02CC                   .dbline 200
 02CC 05E0              ldi R16,5
 02CE 10E0              ldi R17,0
 02D0 97DE              xcall _delay_us
 02D2                   .dbline 201
 02D2 85B3              in R24,0x15
 02D4 877F              andi R24,247
 02D6 85BB              out 0x15,R24
 02D8                   .dbline 201
 02D8 05E0              ldi R16,5
 02DA 10E0              ldi R17,0
 02DC 91DE              xcall _delay_us
 02DE                   .dbline 202
 02DE 862F              mov R24,R22
 02E0 8170              andi R24,1
 02E2 880F              lsl R24
 02E4 880F              lsl R24
 02E6 880F              lsl R24
 02E8 25B2              in R2,0x15
 02EA 282A              or R2,R24
 02EC 25BA              out 0x15,R2
 02EE                   .dbline 202
 02EE 05E0              ldi R16,5
 02F0 10E0              ldi R17,0
 02F2 86DE              xcall _delay_us
 02F4                   .dbline 203
 02F4 85B3              in R24,0x15
 02F6 8F7E              andi R24,239
 02F8 85BB              out 0x15,R24
 02FA                   .dbline 203
 02FA 05E0              ldi R16,5
 02FC 10E0              ldi R17,0
 02FE 80DE              xcall _delay_us
 0300                   .dbline 204
 0300 6695              lsr R22
 0302                   .dbline 205
 0302           L58:
 0302                   .dbline 198
 0302 4395              inc R20
 0304           L60:
 0304                   .dbline 198
 0304 4830              cpi R20,8
 0306 08F3              brlo L57
 0308                   .dbline -2
 0308           L38:
 0308 0E940000          xcall pop_gset5
 030C                   .dbline 0 ; func end
 030C 0895              ret
 030E                   .dbsym r j 20 c
 030E                   .dbsym r display 22 c
 030E                   .dbsym r point 12 c
 030E                   .dbsym r second 10 c
 030E                   .dbsym r minute 14 c
 030E                   .dbsym r n1 20 c
 030E                   .dbend
 030E                   .dbfunc e trace_road _trace_road fV
 030E           ;           pinc -> <dead>
                        .even
 030E           _trace_road::
 030E                   .dbline -1
 030E                   .dbline 213
 030E           ;   {
 030E           ;    PORTC|=0x10;delay_us(5);
 030E           ;    PORTC&=0xf7;delay_us(5);
 030E           ;    PORTC|=((display&0x01)<<3);delay_us(5);
 030E           ;    PORTC&=0xef;delay_us(5);
 030E           ;    display>>=1;
 030E           ;   }
 030E           ; } 
 030E           ; /////////////液晶屏显示函数/////////////////////////////////////
 030E           ; 
 030E           ; 
 030E           ; 
 030E           ; /////////////////寻找黑线////////////////////////////////////////
 030E           ; void trace_road(void) //黑线寻迹函数
 030E           ; {
 030E                   .dbline 215
 030E           ;    unsigned char pinc;
 030E           ;     PINC=PINC&0x07;  //PC0~PC2信号送给变量pinc
 030E 83B3              in R24,0x13
 0310 8770              andi R24,7
 0312 83BB              out 0x13,R24
 0314                   .dbline 216
 0314           ;   if((PINC==0x02)||(PINC==0x07))//只有中间传感器有信号,
 0314 83B3              in R24,0x13
 0316 8230              cpi R24,2
 0318 19F0              breq L64
 031A 83B3              in R24,0x13
 031C 8730              cpi R24,7
 031E 39F4              brne L62
 0320           L64:
 0320                   .dbline 217
 0320           ;       { run();turn_state0=0;  turn_state1=0;}//或三个均有信号,则直走
 0320                   .dbline 217
 0320 DDDE              xcall _run
 0322                   .dbline 217
 0322 2224              clr R2
 0324 20920000          sts _turn_state0,R2
 0328                   .dbline 217
 0328 20920100          sts _turn_state1,R2
 032C                   .dbline 217
 032C 33C0              xjmp L63
 032E           L62:
 032E                   .dbline 218
 032E           ;       else if(PINC==0x06)//若右边无信号
 032E 83B3              in R24,0x13
 0330 8630              cpi R24,6
 0332 29F4              brne L65
 0334                   .dbline 219
 0334           ;         {turn_left();turn_state0=1;}     //左转
 0334                   .dbline 219
 0334 F3DE              xcall _turn_left
 0336                   .dbline 219
 0336 81E0              ldi R24,1
 0338 80930000          sts _turn_state0,R24
 033C                   .dbline 219
 033C 2BC0              xjmp L66
 033E           L65:
 033E                   .dbline 220
 033E           ;         else if(PINC==0x03)//若左边无信号
 033E 83B3              in R24,0x13
 0340 8330              cpi R24,3
 0342 29F4              brne L67
 0344                   .dbline 221
 0344           ;           {turn_right(); turn_state1=1;}   //右转
 0344                   .dbline 221
 0344 F5DE              xcall _turn_right
 0346                   .dbline 221
 0346 81E0              ldi R24,1
 0348 80930100          sts _turn_state1,R24

⌨️ 快捷键说明

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