📄 双足机器人.lis
字号:
019A ; }
019A ;
019A ; void RightUp(unsigned char time)//抬右脚
019A ; {
019A 0AC0 xjmp L48
019C L47:
019C .dbline 192
019C .dbline 193
019C 4A95 dec R20
019E .dbline 195
019E 82B3 in R24,0x12
01A0 8F73 andi R24,63
01A2 82BB out 0x12,R24
01A4 .dbline 196
01A4 44DF xcall _delay_20ms
01A6 .dbline 199
01A6 979A sbi 0x12,7
01A8 .dbline 200
01A8 83DF xcall _delay_back
01AA .dbline 201
01AA 82B3 in R24,0x12
01AC 8F73 andi R24,63
01AE 82BB out 0x12,R24
01B0 .dbline 203
01B0 L48:
01B0 .dbline 191
01B0 ; while(time>1)
01B0 81E0 ldi R24,1
01B2 8417 cp R24,R20
01B4 98F3 brlo L47
01B6 .dbline -2
01B6 L46:
01B6 0E940000 xcall pop_gset1
01BA .dbline 0 ; func end
01BA 0895 ret
01BC .dbsym r time 20 c
01BC .dbend
01BC .dbfunc e RightFwd _RightFwd fV
01BC ; time -> R20
.even
01BC _RightFwd::
01BC 0E940000 xcall push_gset1
01C0 402F mov R20,R16
01C2 .dbline -1
01C2 .dbline 207
01C2 ; {
01C2 ; time--;
01C2 ;
01C2 ; PORTD&=0x3f;
01C2 ; delay_20ms();
01C2 ;
01C2 ;
01C2 ; PORTD|=0x80;
01C2 ; delay_back();
01C2 ; PORTD&=0x3f;
01C2 ;
01C2 ; }
01C2 ; }
01C2 ;
01C2 ; void RightFwd(unsigned char time)//迈右脚
01C2 ; {
01C2 0AC0 xjmp L52
01C4 L51:
01C4 .dbline 209
01C4 .dbline 210
01C4 4A95 dec R20
01C6 .dbline 212
01C6 82B3 in R24,0x12
01C8 8F73 andi R24,63
01CA 82BB out 0x12,R24
01CC .dbline 213
01CC 30DF xcall _delay_20ms
01CE .dbline 216
01CE 969A sbi 0x12,6
01D0 .dbline 217
01D0 6FDF xcall _delay_back
01D2 .dbline 218
01D2 82B3 in R24,0x12
01D4 8F73 andi R24,63
01D6 82BB out 0x12,R24
01D8 .dbline 219
01D8 L52:
01D8 .dbline 208
01D8 ; while(time>1)
01D8 81E0 ldi R24,1
01DA 8417 cp R24,R20
01DC 98F3 brlo L51
01DE .dbline -2
01DE L50:
01DE 0E940000 xcall pop_gset1
01E2 .dbline 0 ; func end
01E2 0895 ret
01E4 .dbsym r time 20 c
01E4 .dbend
01E4 .dbfunc e display_time _display_time fV
01E4 ; j -> R20
01E4 ; display -> R22
01E4 ; point -> R12
01E4 ; second -> R10
01E4 ; minute -> R14
01E4 ; n1 -> R20
.even
01E4 _display_time::
01E4 0E940000 xcall push_gset5
01E8 E22E mov R14,R18
01EA 402F mov R20,R16
01EC AA84 ldd R10,y+10
01EE CC84 ldd R12,y+12
01F0 .dbline -1
01F0 .dbline 234
01F0 ; {
01F0 ; time--;
01F0 ;
01F0 ; PORTD&=0x3f;
01F0 ; delay_20ms();
01F0 ;
01F0 ;
01F0 ; PORTD|=0x40;
01F0 ; delay_back();
01F0 ; PORTD&=0x3f;
01F0 ; }
01F0 ;
01F0 ; }
01F0 ;
01F0 ;
01F0 ; /////////////////小车运动////////////////////////////////////////
01F0 ;
01F0 ;
01F0 ; /////////////液晶屏显示函数/////////////////////////////////////
01F0 ;
01F0 ;
01F0 ; void display_time(unsigned char n1,unsigned char minute,unsigned char second,unsigned char point)
01F0 ; //参数n1为控制是否显示冒号,11为不显示,10为显示.
01F0 ; //minute\second为两个最大为99的整数
01F0 ; //point为控制是否显示小数点,0为不显示,1为显示.
01F0 ; {
01F0 .dbline 236
01F0 ; unsigned char j,display;
01F0 ; display=number[n1];
01F0 80E0 ldi R24,<_number
01F2 90E0 ldi R25,>_number
01F4 E42F mov R30,R20
01F6 FF27 clr R31
01F8 E80F add R30,R24
01FA F91F adc R31,R25
01FC 6081 ldd R22,z+0
01FE .dbline 237
01FE ; for(j=0;j<8;j++)
01FE 4427 clr R20
0200 1AC0 xjmp L58
0202 L55:
0202 .dbline 238
0202 .dbline 239
0202 AC9A sbi 0x15,4
0204 .dbline 240
0204 85B3 in R24,0x15
0206 877F andi R24,247
0208 85BB out 0x15,R24
020A .dbline 240
020A 05E0 ldi R16,5
020C 10E0 ldi R17,0
020E F8DE xcall _delay_us
0210 .dbline 241
0210 862F mov R24,R22
0212 8170 andi R24,1
0214 880F lsl R24
0216 880F lsl R24
0218 880F lsl R24
021A 25B2 in R2,0x15
021C 282A or R2,R24
021E 25BA out 0x15,R2
0220 .dbline 241
0220 05E0 ldi R16,5
0222 10E0 ldi R17,0
0224 EDDE xcall _delay_us
0226 .dbline 242
0226 85B3 in R24,0x15
0228 8F7E andi R24,239
022A 85BB out 0x15,R24
022C .dbline 242
022C 05E0 ldi R16,5
022E 10E0 ldi R17,0
0230 E7DE xcall _delay_us
0232 .dbline 243
0232 6695 lsr R22
0234 .dbline 244
0234 L56:
0234 .dbline 237
0234 4395 inc R20
0236 L58:
0236 .dbline 237
0236 4830 cpi R20,8
0238 20F3 brlo L55
023A .dbline 245
023A ; {
023A ; PORTC|=0x10;
023A ; PORTC&=0xf7;delay_us(5);
023A ; PORTC|=((display&0x01)<<3);delay_us(5);
023A ; PORTC&=0xef;delay_us(5);
023A ; display>>=1;
023A ; }
023A ; display=number[minute/10];
023A 2AE0 ldi R18,10
023C 30E0 ldi R19,0
023E 0E2D mov R16,R14
0240 1127 clr R17
0242 0E940000 xcall div16s
0246 F801 movw R30,R16
0248 80E0 ldi R24,<_number
024A 90E0 ldi R25,>_number
024C E80F add R30,R24
024E F91F adc R31,R25
0250 6081 ldd R22,z+0
0252 .dbline 246
0252 ; for(j=0;j<8;j++)
0252 4427 clr R20
0254 1DC0 xjmp L62
0256 L59:
0256 .dbline 247
0256 .dbline 248
0256 AC9A sbi 0x15,4
0258 .dbline 248
0258 05E0 ldi R16,5
025A 10E0 ldi R17,0
025C D1DE xcall _delay_us
025E .dbline 249
025E 85B3 in R24,0x15
0260 877F andi R24,247
0262 85BB out 0x15,R24
0264 .dbline 249
0264 05E0 ldi R16,5
0266 10E0 ldi R17,0
0268 CBDE xcall _delay_us
026A .dbline 250
026A 862F mov R24,R22
026C 8170 andi R24,1
026E 880F lsl R24
0270 880F lsl R24
0272 880F lsl R24
0274 25B2 in R2,0x15
0276 282A or R2,R24
0278 25BA out 0x15,R2
027A .dbline 250
027A 05E0 ldi R16,5
027C 10E0 ldi R17,0
027E C0DE xcall _delay_us
0280 .dbline 251
0280 85B3 in R24,0x15
0282 8F7E andi R24,239
0284 85BB out 0x15,R24
0286 .dbline 251
0286 05E0 ldi R16,5
0288 10E0 ldi R17,0
028A BADE xcall _delay_us
028C .dbline 252
028C 6695 lsr R22
028E .dbline 253
028E L60:
028E .dbline 246
028E 4395 inc R20
0290 L62:
0290 .dbline 246
0290 4830 cpi R20,8
0292 08F3 brlo L59
0294 .dbline 254
0294 ; {
0294 ; PORTC|=0x10;delay_us(5);
0294 ; PORTC&=0xf7;delay_us(5);
0294 ; PORTC|=((display&0x01)<<3);delay_us(5);
0294 ; PORTC&=0xef;delay_us(5);
0294 ; display>>=1;
0294 ; }
0294 ; display=number[minute%10];
0294 2AE0 ldi R18,10
0296 30E0 ldi R19,0
0298 0E2D mov R16,R14
029A 1127 clr R17
029C 0E940000 xcall mod16s
02A0 F801 movw R30,R16
02A2 80E0 ldi R24,<_number
02A4 90E0 ldi R25,>_number
02A6 E80F add R30,R24
02A8 F91F adc R31,R25
02AA 6081 ldd R22,z+0
02AC .dbline 255
02AC ; if(point) //显示路程时米与厘米之加小数点
02AC CC20 tst R12
02AE 09F0 breq L63
02B0 .dbline 256
02B0 ; display&=0x7f;
02B0 6F77 andi R22,127
02B2 L63:
02B2 .dbline 257
02B2 ; for(j=0;j<8;j++)
02B2 4427 clr R20
02B4 1DC0 xjmp L68
02B6 L65:
02B6 .dbline 258
02B6 .dbline 259
02B6 AC9A sbi 0x15,4
02B8 .dbline 259
02B8 05E0 ldi R16,5
02BA 10E0 ldi R17,0
02BC A1DE xcall _delay_us
02BE .dbline 260
02BE 85B3 in R24,0x15
02C0 877F andi R24,247
02C2 85BB out 0x15,R24
02C4 .dbline 260
02C4 05E0 ldi R16,5
02C6 10E0 ldi R17,0
02C8 9BDE xcall _delay_us
02CA .dbline 261
02CA 862F mov R24,R22
02CC 8170 andi R24,1
02CE 880F lsl R24
02D0 880F lsl R24
02D2 880F lsl R24
02D4 25B2 in R2,0x15
02D6 282A or R2,R24
02D8 25BA out 0x15,R2
02DA .dbline 261
02DA 05E0 ldi R16,5
02DC 10E0 ldi R17,0
02DE 90DE xcall _delay_us
02E0 .dbline 262
02E0 85B3 in R24,0x15
02E2 8F7E andi R24,239
02E4 85BB out 0x15,R24
02E6 .dbline 262
02E6 05E0 ldi R16,5
02E8 10E0 ldi R17,0
02EA 8ADE xcall _delay_us
02EC .dbline 263
02EC 6695 lsr R22
02EE .dbline 264
02EE L66:
02EE .dbline 257
02EE 4395 inc R20
02F0 L68:
02F0 .dbline 257
02F0 4830 cpi R20,8
02F2 08F3 brlo L65
02F4 .dbline 265
02F4 ; {
02F4 ; PORTC|=0x10;delay_us(5);
02F4 ; PORTC&=0xf7;delay_us(5);
02F4 ; PORTC|=((display&0x01)<<3);delay_us(5);
02F4 ; PORTC&=0xef;delay_us(5);
02F4 ; display>>=1;
02F4 ; }
02F4 ; display=number[second/10];
02F4 2AE0 ldi R18,10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -