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

📄 双足机器人.lis

📁 这段源代码是基于atmel公司mega16单片机做的双足机器人控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -