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

📄 motor.lis

📁 小车自动寻迹代码,可以进行电子设计,设计电动小车
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 007E 89BF              out 0x39,R24
 0080                   .dbline -2
 0080           L30:
 0080                   .dbline 0 ; func end
 0080 0895              ret
 0082                   .dbend
 0082                   .dbfunc e motor_right_quick_stop _motor_right_quick_stop fV
                        .even
 0082           _motor_right_quick_stop::
 0082                   .dbline -1
 0082                   .dbline 108
 0082           ; }
 0082           ; 
 0082           ; //右电机急停
 0082           ; void motor_right_quick_stop(void)
 0082           ; {
 0082                   .dbline 109
 0082           ;  motor_en1;
 0082 C19A              sbi 0x18,1
 0084                   .dbline 110
 0084           ;  motor_en2;
 0084 C29A              sbi 0x18,2
 0086                   .dbline 111
 0086           ;  T2_UEN;
 0086 89B7              in R24,0x39
 0088 8F77              andi R24,127
 008A 89BF              out 0x39,R24
 008C                   .dbline -2
 008C           L31:
 008C                   .dbline 0 ; func end
 008C 0895              ret
 008E                   .dbend
 008E                   .dbfunc e straight _straight fV
                        .even
 008E           _straight::
 008E                   .dbline -1
 008E                   .dbline 117
 008E           ; }
 008E           ; 
 008E           ; /**********************小车动作*****************************/
 008E           ; 
 008E           ; void straight(void) //直行
 008E           ; {motor_right_quick_stop();
 008E                   .dbline 117
 008E F9DF              xcall _motor_right_quick_stop
 0090                   .dbline 118
 0090           ;  motor_left_forward(0xfe);
 0090 0EEF              ldi R16,254
 0092 B6DF              xcall _motor_left_forward
 0094                   .dbline -2
 0094           L32:
 0094                   .dbline 0 ; func end
 0094 0895              ret
 0096                   .dbend
 0096                   .dbfunc e turn_left _turn_left fV
                        .even
 0096           _turn_left::
 0096                   .dbline -1
 0096                   .dbline 124
 0096           ; // motor_right_forward(0xfe);
 0096           ; 
 0096           ; }
 0096           ; 
 0096           ; void turn_left(void) //左转
 0096           ; {
 0096                   .dbline 125
 0096           ; motor_left_forward(0xfe);
 0096 0EEF              ldi R16,254
 0098 B3DF              xcall _motor_left_forward
 009A                   .dbline 126
 009A           ;  motor_right_forward(0x50);
 009A 00E5              ldi R16,80
 009C D3DF              xcall _motor_right_forward
 009E                   .dbline -2
 009E           L33:
 009E                   .dbline 0 ; func end
 009E 0895              ret
 00A0                   .dbend
 00A0                   .dbfunc e turn_right _turn_right fV
                        .even
 00A0           _turn_right::
 00A0                   .dbline -1
 00A0                   .dbline 130
 00A0           ; }
 00A0           ; 
 00A0           ; void turn_right(void) //右转
 00A0           ; {
 00A0                   .dbline 131
 00A0           ;  motor_left_forward(0xfe);
 00A0 0EEF              ldi R16,254
 00A2 AEDF              xcall _motor_left_forward
 00A4                   .dbline 132
 00A4           ;  motor_right_backward(0x50);
 00A4 00E5              ldi R16,80
 00A6 D7DF              xcall _motor_right_backward
 00A8                   .dbline -2
 00A8           L34:
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbend
 00AA                   .dbfunc e straight_back _straight_back fV
                        .even
 00AA           _straight_back::
 00AA                   .dbline -1
 00AA                   .dbline 136
 00AA           ; }
 00AA           ; 
 00AA           ; void straight_back(void) //直回
 00AA           ; {motor_right_quick_stop();
 00AA                   .dbline 136
 00AA EBDF              xcall _motor_right_quick_stop
 00AC                   .dbline 137
 00AC           ;  motor_left_backward(0xfe);
 00AC 0EEF              ldi R16,254
 00AE B1DF              xcall _motor_left_backward
 00B0                   .dbline -2
 00B0           L35:
 00B0                   .dbline 0 ; func end
 00B0 0895              ret
 00B2                   .dbend
 00B2                   .dbfunc e stop _stop fV
                        .even
 00B2           _stop::
 00B2                   .dbline -1
 00B2                   .dbline 142
 00B2           ; //motor_right_backward(0x77);
 00B2           ; }
 00B2           ; 
 00B2           ; void stop(void)       //急停
 00B2           ; {
 00B2                   .dbline 143
 00B2           ;  motor_left_quick_stop();
 00B2 C2DF              xcall _motor_left_quick_stop
 00B4                   .dbline 144
 00B4           ;  motor_right_quick_stop();
 00B4 E6DF              xcall _motor_right_quick_stop
 00B6                   .dbline -2
 00B6           L36:
 00B6                   .dbline 0 ; func end
 00B6 0895              ret
 00B8                   .dbend
 00B8                   .dbfunc e mic_turn_right _mic_turn_right fV
                        .even
 00B8           _mic_turn_right::
 00B8                   .dbline -1
 00B8                   .dbline 148
 00B8           ; }
 00B8           ; 
 00B8           ; void mic_turn_right(void) //向右微调
 00B8           ; {
 00B8                   .dbline 149
 00B8           ;  motor_left_forward(0xa0);
 00B8 00EA              ldi R16,160
 00BA A2DF              xcall _motor_left_forward
 00BC                   .dbline 150
 00BC           ;  motor_right_backward(0x30);
 00BC 00E3              ldi R16,48
 00BE CBDF              xcall _motor_right_backward
 00C0                   .dbline -2
 00C0           L37:
 00C0                   .dbline 0 ; func end
 00C0 0895              ret
 00C2                   .dbend
 00C2                   .dbfunc e mic_turn_left _mic_turn_left fV
                        .even
 00C2           _mic_turn_left::
 00C2                   .dbline -1
 00C2                   .dbline 154
 00C2           ; }
 00C2           ; 
 00C2           ; void mic_turn_left(void) //向左微调
 00C2           ; {
 00C2                   .dbline 155
 00C2           ; motor_left_forward(0xa0);
 00C2 00EA              ldi R16,160
 00C4 9DDF              xcall _motor_left_forward
 00C6                   .dbline 156
 00C6           ;  motor_right_forward(0x30);
 00C6 00E3              ldi R16,48
 00C8 BDDF              xcall _motor_right_forward
 00CA                   .dbline -2
 00CA           L38:
 00CA                   .dbline 0 ; func end
 00CA 0895              ret
 00CC                   .dbend
 00CC                   .dbfunc e flag_test _flag_test fV
                        .area func_lit(rom, con, rel)
 0000           L49:
 0000 9600              .word `L48
 0002 8600              .word `L44
 0004 8A00              .word `L45
 0006 9200              .word `L47
 0008 8A00              .word `L45
 000A 8A00              .word `L45
 000C 8600              .word `L44
 000E 8600              .word `L44
 0010 8600              .word `L44
 0012 8A00              .word `L45
 0014 8600              .word `L44
 0016 8A00              .word `L45
 0018 8E00              .word `L46
 001A 8A00              .word `L45
 001C 8600              .word `L44
 001E 8200              .word `L43
                        .area text(rom, con, rel)
 00CC                   .dbfile C:\DOCUME~1\Administrator.1B4135EF7FF9405\桌面\智能小车案\code\motor.c
 00CC           ;           temp -> R20
                        .even
 00CC           _flag_test::
 00CC 0E940000          xcall push_gset1
 00D0                   .dbline -1
 00D0                   .dbline 160
 00D0           ; }
 00D0           ; 
 00D0           ; void flag_test(void)  //测试小车状态
 00D0           ; {
 00D0                   .dbline 162
 00D0           ;  uint8 temp;
 00D0           ;  temp = PINA&0x0f; //PINA的低四位
 00D0 49B3              in R20,0x19
 00D2 4F70              andi R20,15
 00D4                   .dbline 163
 00D4           ;  switch(temp)
 00D4 5527              clr R21
 00D6 4030              cpi R20,0
 00D8 E0E0              ldi R30,0
 00DA 5E07              cpc R21,R30
 00DC 54F1              brlt L41
 00DE 8FE0              ldi R24,15
 00E0 90E0              ldi R25,0
 00E2 8417              cp R24,R20
 00E4 9507              cpc R25,R21
 00E6 2CF1              brlt L41
 00E8 02E0              ldi R16,2
 00EA 10E0              ldi R17,0
 00EC 9A01              movw R18,R20
 00EE 0E940000          xcall empy16s
 00F2 F801              movw R30,R16
 00F4 80E0              ldi R24,<L49
 00F6 90E0              ldi R25,>L49
 00F8 E80F              add R30,R24
 00FA F91F              adc R31,R25
 00FC 0590              lpm R0,Z+
 00FE 1490              lpm R1,Z
 0100 F001              movw R30,R0
 0102 0994              ijmp
 0104           X0:
 0104                   .dbline 164
 0104           ;   {
 0104           L43:
 0104                   .dbline 166
 0104           ;    case 0x0f:
 0104           ;        flag = 0;  //未偏
 0104 2224              clr R2
 0106 20920000          sts _flag,R2
 010A                   .dbline 167
 010A           ;          break;
 010A 13C0              xjmp L41
 010C           L44:
 010C                   .dbline 174
 010C           ;    case 0x01:
 010C           ;    case 0x06:
 010C           ;    case 0x07:
 010C           ;    case 0x08:
 010C           ;    case 0x0a:
 010C           ;    case 0x0e:
 010C           ;        flag = 1;  //左偏
 010C 81E0              ldi R24,1
 010E 80930000          sts _flag,R24
 0112                   .dbline 175
 0112           ;          break;
 0112 0FC0              xjmp L41
 0114           L45:
 0114                   .dbline 182
 0114           ;    case 0x02:
 0114           ;    case 0x04:
 0114           ;    case 0x05:
 0114           ;    case 0x09:
 0114           ;    case 0x0b:
 0114           ;    case 0x0d:
 0114           ;        flag = 2;  //右偏
 0114 82E0              ldi R24,2
 0116 80930000          sts _flag,R24
 011A                   .dbline 183
 011A           ;          break;
 011A 0BC0              xjmp L41
 011C           L46:
 011C                   .dbline 185
 011C           ;    case 0x0c:
 011C           ;        flag = 3;  //前两出线
 011C 83E0              ldi R24,3
 011E 80930000          sts _flag,R24
 0122                   .dbline 186
 0122           ;          break;
 0122 07C0              xjmp L41
 0124           L47:
 0124                   .dbline 188
 0124           ;    case 0x03:
 0124           ;        flag = 4; //后两出线
 0124 84E0              ldi R24,4
 0126 80930000          sts _flag,R24
 012A                   .dbline 189
 012A           ;          break;
 012A 03C0              xjmp L41
 012C           L48:
 012C                   .dbline 191
 012C 85E0              ldi R24,5
 012E 80930000          sts _flag,R24
 0132                   .dbline 192
 0132                   .dbline 194
 0132           L41:
 0132                   .dbline -2
 0132           L39:
 0132 0E940000          xcall pop_gset1
 0136                   .dbline 0 ; func end
 0136 0895              ret
 0138                   .dbsym r temp 20 c
 0138                   .dbend

⌨️ 快捷键说明

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