📄 宝贝机器人.lis
字号:
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 + -