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

📄 双足机器人.lis

📁 这段源代码是基于atmel公司mega16单片机做的双足机器人控制程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module _双足机器人.c
                        .area data(ram, con, rel)
 0000           _turn_state0::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
 0001                   .dbsym e turn_state0 _turn_state0 c
 0001           _turn_state1::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
 0002                   .dbsym e turn_state1 _turn_state1 c
 0002           _minute::
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
 0003                   .dbsym e minute _minute c
 0003           _number::
 0003                   .blkb 2
                        .area idata
 0003 88BB              .byte 136,187
                        .area data(ram, con, rel)
 0005                   .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
 0005                   .blkb 2
                        .area idata
 0005 C191              .byte 193,145
                        .area data(ram, con, rel)
 0007                   .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
 0007                   .blkb 2
                        .area idata
 0007 B294              .byte 178,148
                        .area data(ram, con, rel)
 0009                   .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
 0009                   .blkb 2
                        .area idata
 0009 84B9              .byte 132,185
                        .area data(ram, con, rel)
 000B                   .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
 000B                   .blkb 2
                        .area idata
 000B 8090              .byte 128,144
                        .area data(ram, con, rel)
 000D                   .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
 000D                   .blkb 2
                        .area idata
 000D 00FF              .byte 0,255
                        .area data(ram, con, rel)
 000F                   .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
 000F                   .dbsym e number _number A[12:12]c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\eda\桌面\双足机器人.c
 0000                   .dbfunc e delay_us _delay_us fV
 0000           ;           time -> R16,R17
                        .even
 0000           _delay_us::
 0000                   .dbline -1
 0000                   .dbline 13
 0000           ; //电机在第一次使用之前,都得先调零,即调用stop()子程序旋转调整螺丝直到其转速为零
 0000           ; //PD6\7分别控制左、右电机为白线。红黑先分别接电源和地
 0000           ; //电机转速通过脉冲信号控制,
 0000           ; //1.5ms停转、1.3ms正转、1.7ms为反转(都为高电平)中间插入20ms的低电平
 0000           ; //PC3,4控制显示,PC3传送数据,PC4为时钟信号线
 0000           ; // PC0 1分别为探测光源的左 右端口,
 0000           ; //创建时间:2005年7月28日19:44~8。10
 0000           ; #include "iom16v.h"
 0000           ; #include "macros.h"
 0000           ; unsigned char  turn_state0=0,turn_state1=0,sec,second,mini,minute=0,minisecond,number[12]={0x88,0xbb,0xc1,0x91,0xb2,0x94,0x84,0xb9,0x80,0x90,0x00,0xff};
 0000           ; unsigned int left,right,zhong,interval;
 0000           ; void delay_us(unsigned int  time)
 0000           ; {//微秒级延时程序     
 0000           L2:
 0000                   .dbline 15
 0000           ;  do
 0000           ;  {
 0000                   .dbline 16
 0000           ;   time--;
 0000 0150              subi R16,1
 0002 1040              sbci R17,0
 0004                   .dbline 17
 0004           ;  }    
 0004           L3:
 0004                   .dbline 18
 0004           ;   while (time>1);
 0004 81E0              ldi R24,1
 0006 90E0              ldi R25,0
 0008 8017              cp R24,R16
 000A 9107              cpc R25,R17
 000C C8F3              brlo L2
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbsym r time 16 i
 0010                   .dbend
 0010                   .dbfunc e delay_ms _delay_ms fV
 0010           ;           time -> R20,R21
                        .even
 0010           _delay_ms::
 0010 0E940000          xcall push_gset1
 0014 A801              movw R20,R16
 0016                   .dbline -1
 0016                   .dbline 22
 0016           ; }     
 0016           ; 
 0016           ; void delay_ms(unsigned int time)
 0016           ; {//毫秒级延时程序
 0016 05C0              xjmp L7
 0018           L6:
 0018                   .dbline 24
 0018                   .dbline 25
 0018 08EE              ldi R16,1000
 001A 13E0              ldi R17,3
 001C F1DF              xcall _delay_us
 001E                   .dbline 26
 001E 4150              subi R20,1
 0020 5040              sbci R21,0
 0022                   .dbline 27
 0022           L7:
 0022                   .dbline 23
 0022           ;  while(time!=0)
 0022 4030              cpi R20,0
 0024 4507              cpc R20,R21
 0026 C1F7              brne L6
 0028           X0:
 0028                   .dbline -2
 0028           L5:
 0028 0E940000          xcall pop_gset1
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbsym r time 20 i
 002E                   .dbend
 002E                   .dbfunc e delay_20ms _delay_20ms fV
 002E           ;           time -> R20
                        .even
 002E           _delay_20ms::
 002E 0E940000          xcall push_gset1
 0032                   .dbline -1
 0032                   .dbline 33
 0032           ;    {          
 0032           ;     delay_us(1000);
 0032           ;       time--;
 0032           ;    }
 0032           ;  }  
 0032           ; 
 0032           ; 
 0032           ; /////////////////小车运动////////////////////////////////////////
 0032           ; void delay_20ms()//延时20ms,用于插入低电平
 0032           ; {//毫秒级延时程序
 0032                   .dbline 34
 0032           ; unsigned char time=20;
 0032 44E1              ldi R20,20
 0034 04C0              xjmp L11
 0036           L10:
 0036                   .dbline 36
 0036                   .dbline 37
 0036 0EE7              ldi R16,126
 0038 10E0              ldi R17,0
 003A E2DF              xcall _delay_us
 003C                   .dbline 38
 003C 4A95              dec R20
 003E                   .dbline 39
 003E           L11:
 003E                   .dbline 35
 003E           ;  while(time!=0)
 003E 4423              tst R20
 0040 D1F7              brne L10
 0042                   .dbline -2
 0042           L9:
 0042 0E940000          xcall pop_gset1
 0046                   .dbline 0 ; func end
 0046 0895              ret
 0048                   .dbsym r time 20 c
 0048                   .dbend
 0048                   .dbfunc e delay_stop _delay_stop fV
 0048           ;           time -> R20
                        .even
 0048           _delay_stop::
 0048 0E940000          xcall push_gset1
 004C                   .dbline -1
 004C                   .dbline 42
 004C           ;  {            
 004C           ;   delay_us(126);
 004C           ;   time--;
 004C           ;  }
 004C           ;  }
 004C           ;  void delay_stop()//延时1.5m,用于停转
 004C           ; {//毫秒级延时程序
 004C                   .dbline 43
 004C           ; unsigned char time=1;
 004C 41E0              ldi R20,1
 004E 04C0              xjmp L15
 0050           L14:
 0050                   .dbline 45
 0050                   .dbline 47
 0050 00EA              ldi R16,160
 0052 10E0              ldi R17,0
 0054 D5DF              xcall _delay_us
 0056                   .dbline 48
 0056 4A95              dec R20
 0058                   .dbline 49
 0058           L15:
 0058                   .dbline 44
 0058           ;  while(time!=0)
 0058 4423              tst R20
 005A D1F7              brne L14
 005C                   .dbline -2
 005C           L13:
 005C 0E940000          xcall pop_gset1
 0060                   .dbline 0 ; func end
 0060 0895              ret
 0062                   .dbsym r time 20 c
 0062                   .dbend
 0062                   .dbfunc e delay_conver _delay_conver fV
 0062           ;           time -> R20
                        .even
 0062           _delay_conver::
 0062 0E940000          xcall push_gset1
 0066                   .dbline -1
 0066                   .dbline 52
 0066           ;  {            
 0066           ; //  delay_us(183);
 0066           ;   delay_us(160);
 0066           ;   time--;
 0066           ;  }
 0066           ;  }
 0066           ;  void delay_conver()//延时0.4ms,用于正反转变换
 0066           ; {//毫秒级延时程序
 0066                   .dbline 53
 0066           ; unsigned char time=1;
 0066 41E0              ldi R20,1
 0068 04C0              xjmp L19
 006A           L18:
 006A                   .dbline 55
 006A                   .dbline 56
 006A 0BE2              ldi R16,43
 006C 10E0              ldi R17,0
 006E C8DF              xcall _delay_us
 0070                   .dbline 57
 0070 4A95              dec R20
 0072                   .dbline 58
 0072           L19:
 0072                   .dbline 54
 0072           ;  while(time!=0)
 0072 4423              tst R20
 0074 D1F7              brne L18
 0076                   .dbline -2
 0076           L17:
 0076 0E940000          xcall pop_gset1
 007A                   .dbline 0 ; func end
 007A 0895              ret
 007C                   .dbsym r time 20 c
 007C                   .dbend
 007C                   .dbfunc e delay_turn _delay_turn fV
 007C           ;           time -> R20
                        .even
 007C           _delay_turn::
 007C 0E940000          xcall push_gset1
 0080                   .dbline -1
 0080                   .dbline 61
 0080           ;  {            
 0080           ;   delay_us(43);
 0080           ;   time--;
 0080           ;  }
 0080           ;  }
 0080           ;  void delay_turn()//延时0.2ms,用于转向
 0080           ; {//毫秒级延时程序
 0080                   .dbline 62
 0080           ; unsigned char time=1;
 0080 41E0              ldi R20,1
 0082 04C0              xjmp L23
 0084           L22:
 0084                   .dbline 64
 0084                   .dbline 65
 0084 04E1              ldi R16,20
 0086 10E0              ldi R17,0
 0088 BBDF              xcall _delay_us
 008A                   .dbline 66
 008A 4A95              dec R20
 008C                   .dbline 67
 008C           L23:
 008C                   .dbline 63
 008C           ;  while(time!=0)
 008C 4423              tst R20
 008E D1F7              brne L22
 0090                   .dbline -2
 0090           L21:
 0090 0E940000          xcall pop_gset1
 0094                   .dbline 0 ; func end
 0094 0895              ret
 0096                   .dbsym r time 20 c
 0096                   .dbend
 0096                   .dbfunc e delay_run _delay_run fV
 0096           ;           time -> R20
                        .even
 0096           _delay_run::
 0096 0E940000          xcall push_gset1
 009A                   .dbline -1
 009A                   .dbline 70
 009A           ;  {            
 009A           ;   delay_us(20);
 009A           ;   time--;
 009A           ;  }
 009A           ;  }
 009A           ;  void delay_run()//延时1.3m,用于正转
 009A           ; {//毫秒级延时程序
 009A                   .dbline 71
 009A           ; unsigned char time=1;
 009A 41E0              ldi R20,1
 009C 04C0              xjmp L27
 009E           L26:
 009E                   .dbline 73
 009E                   .dbline 74
 009E 0CE8              ldi R16,140
 00A0 10E0              ldi R17,0
 00A2 AEDF              xcall _delay_us
 00A4                   .dbline 75
 00A4 4A95              dec R20
 00A6                   .dbline 76
 00A6           L27:
 00A6                   .dbline 72
 00A6           ;  while(time!=0)
 00A6 4423              tst R20
 00A8 D1F7              brne L26
 00AA                   .dbline -2
 00AA           L25:
 00AA 0E940000          xcall pop_gset1
 00AE                   .dbline 0 ; func end
 00AE 0895              ret
 00B0                   .dbsym r time 20 c
 00B0                   .dbend
 00B0                   .dbfunc e delay_back _delay_back fV
 00B0           ;           time -> R20
                        .even
 00B0           _delay_back::
 00B0 0E940000          xcall push_gset1
 00B4                   .dbline -1
 00B4                   .dbline 79
 00B4           ;  {            
 00B4           ;   delay_us(140);
 00B4           ;   time--;
 00B4           ;  }
 00B4           ;  }
 00B4           ;  void delay_back()//延时1.7m,用于反转
 00B4           ; {//毫秒级延时程序
 00B4                   .dbline 80
 00B4           ;  unsigned char time=1;
 00B4 41E0              ldi R20,1

⌨️ 快捷键说明

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