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

📄 motor.lis

📁 设计大赛寻迹小车题目程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 008C                   .dbline 0 ; func end
 008C 0895              ret
 008E                   .dbend
 008E                   .dbfunc e motor_right_quick_stop _motor_right_quick_stop fV
                        .even
 008E           _motor_right_quick_stop::
 008E                   .dbline -1
 008E                   .dbline 96
 008E           ; }
 008E           ; 
 008E           ; //右电机急停
 008E           ; void motor_right_quick_stop(void)
 008E           ; {
 008E                   .dbline 97
 008E           ;  motor_en1;
 008E C19A              sbi 0x18,1
 0090                   .dbline 98
 0090           ;  motor_en2;
 0090 C29A              sbi 0x18,2
 0092                   .dbline 99
 0092           ;  T2_UEN;
 0092 89B7              in R24,0x39
 0094 8F77              andi R24,127
 0096 89BF              out 0x39,R24
 0098                   .dbline -2
 0098           L31:
 0098                   .dbline 0 ; func end
 0098 0895              ret
 009A                   .dbend
 009A                   .dbfunc e straight _straight fV
                        .even
 009A           _straight::
 009A                   .dbline -1
 009A                   .dbline 105
 009A           ; }
 009A           ; 
 009A           ; /**********************小车动作*****************************/
 009A           ; 
 009A           ; void straight(void) //直行
 009A           ; {
 009A                   .dbline 106
 009A           ;  motor_left_forward(0xfe);
 009A 0EEF              ldi R16,254
 009C B1DF              xcall _motor_left_forward
 009E                   .dbline 107
 009E           ;  motor_right_forward(0xfe);
 009E 0EEF              ldi R16,254
 00A0 D1DF              xcall _motor_right_forward
 00A2                   .dbline -2
 00A2           L32:
 00A2                   .dbline 0 ; func end
 00A2 0895              ret
 00A4                   .dbend
 00A4                   .dbfunc e turn_left _turn_left fV
                        .even
 00A4           _turn_left::
 00A4                   .dbline -1
 00A4                   .dbline 111
 00A4           ; }
 00A4           ; 
 00A4           ; void turn_left(void) //左转
 00A4           ; {
 00A4                   .dbline 112
 00A4           ;  motor_left_forward(0xfe);
 00A4 0EEF              ldi R16,254
 00A6 ACDF              xcall _motor_left_forward
 00A8                   .dbline 113
 00A8           ;  motor_right_forward(0x50);
 00A8 00E5              ldi R16,80
 00AA CCDF              xcall _motor_right_forward
 00AC                   .dbline -2
 00AC           L33:
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbend
 00AE                   .dbfunc e turn_right _turn_right fV
                        .even
 00AE           _turn_right::
 00AE                   .dbline -1
 00AE                   .dbline 117
 00AE           ; }
 00AE           ; 
 00AE           ; void turn_right(void) //右转
 00AE           ; {
 00AE                   .dbline 118
 00AE           ;  motor_left_forward(0x50);
 00AE 00E5              ldi R16,80
 00B0 A7DF              xcall _motor_left_forward
 00B2                   .dbline 119
 00B2           ;  motor_right_forward(0xfe);
 00B2 0EEF              ldi R16,254
 00B4 C7DF              xcall _motor_right_forward
 00B6                   .dbline -2
 00B6           L34:
 00B6                   .dbline 0 ; func end
 00B6 0895              ret
 00B8                   .dbend
 00B8                   .dbfunc e straight_back _straight_back fV
                        .even
 00B8           _straight_back::
 00B8                   .dbline -1
 00B8                   .dbline 123
 00B8           ; }
 00B8           ; 
 00B8           ; void straight_back(void) //直回
 00B8           ; {
 00B8                   .dbline 124
 00B8           ;  motor_left_backward(0xfe);
 00B8 0EEF              ldi R16,254
 00BA ABDF              xcall _motor_left_backward
 00BC                   .dbline 125
 00BC           ;  motor_right_backward(0xfe);
 00BC 0EEF              ldi R16,254
 00BE CEDF              xcall _motor_right_backward
 00C0                   .dbline -2
 00C0           L35:
 00C0                   .dbline 0 ; func end
 00C0 0895              ret
 00C2                   .dbend
 00C2                   .dbfunc e stop _stop fV
                        .even
 00C2           _stop::
 00C2                   .dbline -1
 00C2                   .dbline 129
 00C2           ; }
 00C2           ; 
 00C2           ; void stop(void)       //急停
 00C2           ; {
 00C2                   .dbline 130
 00C2           ;  motor_left_quick_stop();
 00C2 BADF              xcall _motor_left_quick_stop
 00C4                   .dbline 131
 00C4           ;  motor_right_quick_stop();
 00C4 E4DF              xcall _motor_right_quick_stop
 00C6                   .dbline -2
 00C6           L36:
 00C6                   .dbline 0 ; func end
 00C6 0895              ret
 00C8                   .dbend
 00C8                   .dbfunc e mic_turn_right _mic_turn_right fV
                        .even
 00C8           _mic_turn_right::
 00C8                   .dbline -1
 00C8                   .dbline 135
 00C8           ; }
 00C8           ; 
 00C8           ; void mic_turn_right(void) //向右微调
 00C8           ; {
 00C8                   .dbline 136
 00C8           ;  motor_left_forward(0xa0);
 00C8 00EA              ldi R16,160
 00CA 9ADF              xcall _motor_left_forward
 00CC                   .dbline 137
 00CC           ;  motor_right_forward(0xfe);
 00CC 0EEF              ldi R16,254
 00CE BADF              xcall _motor_right_forward
 00D0                   .dbline -2
 00D0           L37:
 00D0                   .dbline 0 ; func end
 00D0 0895              ret
 00D2                   .dbend
 00D2                   .dbfunc e mic_turn_left _mic_turn_left fV
                        .even
 00D2           _mic_turn_left::
 00D2                   .dbline -1
 00D2                   .dbline 141
 00D2           ; }
 00D2           ; 
 00D2           ; void mic_turn_left(void) //向左微调
 00D2           ; {
 00D2                   .dbline 142
 00D2           ;  motor_left_forward(0xFE);
 00D2 0EEF              ldi R16,254
 00D4 95DF              xcall _motor_left_forward
 00D6                   .dbline 143
 00D6           ;  motor_right_forward(0xa0);
 00D6 00EA              ldi R16,160
 00D8 B5DF              xcall _motor_right_forward
 00DA                   .dbline -2
 00DA           L38:
 00DA                   .dbline 0 ; func end
 00DA 0895              ret
 00DC                   .dbend
 00DC                   .dbfunc e flag_test _flag_test fV
                        .area func_lit(rom, con, rel)
 0000           L49:
 0000 9E00              .word `L48
 0002 8E00              .word `L44
 0004 9200              .word `L45
 0006 9A00              .word `L47
 0008 9200              .word `L45
 000A 9200              .word `L45
 000C 8E00              .word `L44
 000E 8E00              .word `L44
 0010 8E00              .word `L44
 0012 9200              .word `L45
 0014 8E00              .word `L44
 0016 9200              .word `L45
 0018 9600              .word `L46
 001A 9200              .word `L45
 001C 8E00              .word `L44
 001E 8A00              .word `L43
                        .area text(rom, con, rel)
 00DC                   .dbfile D:\桌面\avr程序设计\循迹小车\motor.c
 00DC           ;           temp -> R20
                        .even
 00DC           _flag_test::
 00DC 0E940000          xcall push_gset1
 00E0                   .dbline -1
 00E0                   .dbline 147
 00E0           ; }
 00E0           ; 
 00E0           ; void flag_test(void)  //测试小车状态
 00E0           ; {
 00E0                   .dbline 149
 00E0           ;  uint8 temp;
 00E0           ;  temp = PINA&0x0f; //PINA的低四位
 00E0 49B3              in R20,0x19
 00E2 4F70              andi R20,15
 00E4                   .dbline 150
 00E4           ;  switch(temp)
 00E4 5527              clr R21
 00E6 4030              cpi R20,0
 00E8 E0E0              ldi R30,0
 00EA 5E07              cpc R21,R30
 00EC 54F1              brlt L41
 00EE 8FE0              ldi R24,15
 00F0 90E0              ldi R25,0
 00F2 8417              cp R24,R20
 00F4 9507              cpc R25,R21
 00F6 2CF1              brlt L41
 00F8 02E0              ldi R16,2
 00FA 10E0              ldi R17,0
 00FC 9A01              movw R18,R20
 00FE 0E940000          xcall empy16s
 0102 F801              movw R30,R16
 0104 80E0              ldi R24,<L49
 0106 90E0              ldi R25,>L49
 0108 E80F              add R30,R24
 010A F91F              adc R31,R25
 010C 0590              lpm R0,Z+
 010E 1490              lpm R1,Z
 0110 F001              movw R30,R0
 0112 0994              ijmp
 0114           X0:
 0114                   .dbline 151
 0114           ;   {
 0114           L43:
 0114                   .dbline 153
 0114           ;    case 0x0f:
 0114           ;        flag = 0;  //未偏
 0114 2224              clr R2
 0116 20920000          sts _flag,R2
 011A                   .dbline 154
 011A           ;          break;
 011A 13C0              xjmp L41
 011C           L44:
 011C                   .dbline 161
 011C           ;    case 0x01:
 011C           ;    case 0x06:
 011C           ;    case 0x07:
 011C           ;    case 0x08:
 011C           ;    case 0x0a:
 011C           ;    case 0x0e:
 011C           ;        flag = 1;  //左偏
 011C 81E0              ldi R24,1
 011E 80930000          sts _flag,R24
 0122                   .dbline 162
 0122           ;          break;
 0122 0FC0              xjmp L41
 0124           L45:
 0124                   .dbline 169
 0124           ;    case 0x02:
 0124           ;    case 0x04:
 0124           ;    case 0x05:
 0124           ;    case 0x09:
 0124           ;    case 0x0b:
 0124           ;    case 0x0d:
 0124           ;        flag = 2;  //右偏
 0124 82E0              ldi R24,2
 0126 80930000          sts _flag,R24
 012A                   .dbline 170
 012A           ;          break;
 012A 0BC0              xjmp L41
 012C           L46:
 012C                   .dbline 172
 012C           ;    case 0x0c:
 012C           ;        flag = 3;  //前两出线
 012C 83E0              ldi R24,3
 012E 80930000          sts _flag,R24
 0132                   .dbline 173
 0132           ;          break;
 0132 07C0              xjmp L41
 0134           L47:
 0134                   .dbline 175
 0134           ;    case 0x03:
 0134           ;        flag = 4; //后两出线
 0134 84E0              ldi R24,4
 0136 80930000          sts _flag,R24
 013A                   .dbline 176
 013A           ;          break;
 013A 03C0              xjmp L41
 013C           L48:
 013C                   .dbline 178
 013C 85E0              ldi R24,5
 013E 80930000          sts _flag,R24
 0142                   .dbline 179
 0142                   .dbline 181
 0142           L41:
 0142                   .dbline -2
 0142           L39:
 0142 0E940000          xcall pop_gset1
 0146                   .dbline 0 ; func end
 0146 0895              ret
 0148                   .dbsym r temp 20 c
 0148                   .dbend

⌨️ 快捷键说明

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