www.pudn.com > xunjijiqiren.rar > Motor.lis


                        .module Motor.c 
                        .area data(ram, con, rel) 
 0000           _Ek:: 
 0000                   .blkb 2 
                        .area idata 
 0000 0000              .word 0 
                        .area data(ram, con, rel) 
 0002                   .dbfile E:\张军\AVR\光盘内容\实例源文件\第九章工程\Motor.c 
 0002                   .dbsym e Ek _Ek I 
 0002           _Ek_1:: 
 0002                   .blkb 2 
                        .area idata 
 0002 0000              .word 0 
                        .area data(ram, con, rel) 
 0004                   .dbfile E:\张军\AVR\光盘内容\实例源文件\第九章工程\Motor.c 
 0004                   .dbsym e Ek_1 _Ek_1 I 
 0004           _Ek_2:: 
 0004                   .blkb 2 
                        .area idata 
 0004 0000              .word 0 
                        .area data(ram, con, rel) 
 0006                   .dbfile E:\张军\AVR\光盘内容\实例源文件\第九章工程\Motor.c 
 0006                   .dbsym e Ek_2 _Ek_2 I 
 0006           _flage:: 
 0006                   .blkb 1 
                        .area idata 
 0006 00                .byte 0 
                        .area data(ram, con, rel) 
 0007                   .dbfile E:\张军\AVR\光盘内容\实例源文件\第九章工程\Motor.c 
 0007                   .dbsym e flage _flage c 
                        .area text(rom, con, rel) 
 0000                   .dbfile E:\张军\AVR\光盘内容\实例源文件\第九章工程\Motor.c 
 0000                   .dbfunc e Putdata _Putdata fV 
 0000           ;              i -> R20,R21 
 0000           ;           data -> R16,R17 
                        .even 
 0000           _Putdata:: 
 0000 00D0              rcall push_gset1 
 0002                   .dbline -1 
 0002                   .dbline 30 
 0002           ; //***************************FileName:Motor.C************************ 
 0002           ; //***************************ICCAVR6.30编译************************** 
 0002           ; #include  
 0002           ; #include  
 0002           ; #include  
 0002           ;  
 0002           ; //***************************全局变量定义**************************// 
 0002           ; #define U1 5  
 0002           ; char Data[10];               //接收数据数组 
 0002           ; int adress;                  //数据地址 
 0002           ; int a;                       //采样时间次数 
 0002           ; float t;                     //采样时间.s 
 0002           ; int itime;                   //给定采样时间的次数 
 0002           ; int Ek=0;                    //本次偏差 
 0002           ; int Ek_1=0;                  //上次偏差 
 0002           ; int Ek_2=0;                  //上上次偏差 
 0002           ; char flage=0;                //监控标志 
 0002           ; union chang1                 //float数据与char数据转换 
 0002           ; {char c[4];     
 0002           ;  float x; 
 0002           ; }floatxin; 
 0002           ; union chang2                 //int数据与char数据转换            
 0002           ; {char c[2]; 
 0002           ;  int x; 
 0002           ; }intxin;  
 0002           ;  
 0002           ; //**************************串口数据发送函数***********************// 
 0002           ; //说明:串口数据发送采用查询方式,每一帧发送10个字节 
 0002           ; void Putdata(char data[10]) 
 0002           ; {int i; 
 0002                   .dbline 31 
 0002           ;  for(i=0;i<=9;i++) 
 0002 4427              clr R20 
 0004 5527              clr R21 
 0006                   .dbline 32 
 0006           L6: 
 0006                   .dbline 32 
 0006           L7: 
 0006                   .dbline 32 
 0006 5D9B              sbis 0xb,5 
 0008 FECF              rjmp L6 
 000A                   .dbline 33 
 000A E42F              mov R30,R20 
 000C F52F              mov R31,R21 
 000E E00F              add R30,R16 
 0010 F11F              adc R31,R17 
 0012 2080              ldd R2,z+0 
 0014 2CB8              out 0xc,R2 
 0016                   .dbline 33 
 0016           L3: 
 0016                   .dbline 31 
 0016 4F5F              subi R20,255  ; offset = 1 
 0018 5F4F              sbci R21,255 
 001A                   .dbline 31 
 001A 89E0              ldi R24,9 
 001C 90E0              ldi R25,0 
 001E 8417              cp R24,R20 
 0020 9507              cpc R25,R21 
 0022 8CF7              brge L7 
 0024                   .dbline -2 
 0024                   .dbline 34 
 0024           ;  {while(!(USR&(1< R16,R17 
                        .even 
 0028           _GetOutputADC:: 
 0028                   .dbline -1 
 0028                   .dbline 38 
 0028           ;  
 0028           ; //**************************读AD转换结果***************************// 
 0028           ; int GetOutputADC() 
 0028           ; {int temp; 
 0028                   .dbline 39 
 0028           ;  temp=ADCH; 
 0028 05B1              in R16,0x5 
 002A 1127              clr R17 
 002C                   .dbline 40 
 002C           ;  temp=temp<<8; 
 002C 102F              mov R17,R16 
 002E 0027              clr R16 
 0030                   .dbline 41 
 0030           ;  return(temp+ADCL); 
 0030 24B0              in R2,0x4 
 0032 3324              clr R3 
 0034 020D              add R16,R2 
 0036 131D              adc R17,R3 
 0038                   .dbline -2 
 0038           L9: 
 0038                   .dbline 0 ; func end 
 0038 0895              ret 
 003A                   .dbsym r temp 16 I 
 003A                   .dbend 
 003A                   .dbfunc e Upspeed _Upspeed fV 
                        .even 
 003A           _Upspeed:: 
 003A 2297              sbiw R28,2 
 003C                   .dbline -1 
 003C                   .dbline 46 
 003C           ; } 
 003C           ;  
 003C           ; //***************************电机加速函数**************************// 
 003C           ; void Upspeed() 
 003C           ; {EEPROMReadBytes(0x0010,intxin.c,2); 
 003C                   .dbline 46 
 003C 82E0              ldi R24,2 
 003E 90E0              ldi R25,0 
 0040 9983              std y+1,R25 
 0042 8883              std y+0,R24 
 0044 20E0              ldi R18,<_intxin 
 0046 30E0              ldi R19,>_intxin 
 0048 00E1              ldi R16,16 
 004A 10E0              ldi R17,0 
 004C 00D0              rcall _EEPROMReadBytes 
 004E                   .dbline 47 
 004E           ;  intxin.c[0]+=Data[6]; 
 004E 20901600          lds R2,_Data+6 
 0052 30900000          lds R3,_intxin 
 0056 320C              add R3,R2 
 0058 30920000          sts _intxin,R3 
 005C                   .dbline 48 
 005C           ;  intxin.c[1]+=Data[7]; 
 005C 20901700          lds R2,_Data+7 
 0060 30900100          lds R3,_intxin+1 
 0064 320C              add R3,R2 
 0066 30920100          sts _intxin+1,R3 
 006A                   .dbline 49 
 006A           ;  EEPROMWriteBytes(0x0010,intxin.c,2); 
 006A 82E0              ldi R24,2 
 006C 90E0              ldi R25,0 
 006E 9983              std y+1,R25 
 0070 8883              std y+0,R24 
 0072 20E0              ldi R18,<_intxin 
 0074 30E0              ldi R19,>_intxin 
 0076 00E1              ldi R16,16 
 0078 10E0              ldi R17,0 
 007A 00D0              rcall _EEPROMWriteBytes 
 007C                   .dbline -2 
 007C                   .dbline 50 
 007C           ; } 
 007C           L10: 
 007C 2296              adiw R28,2 
 007E                   .dbline 0 ; func end 
 007E 0895              ret 
 0080                   .dbend 
 0080                   .dbfunc e Downspeed _Downspeed fV 
                        .even 
 0080           _Downspeed:: 
 0080 2297              sbiw R28,2 
 0082                   .dbline -1 
 0082                   .dbline 54 
 0082           ;  
 0082           ; //***************************电机减速函数**************************// 
 0082           ; void Downspeed() 
 0082           ; { 
 0082                   .dbline 55 
 0082           ;   EEPROMReadBytes(0x0010,intxin.c,2); 
 0082 82E0              ldi R24,2 
 0084 90E0              ldi R25,0 
 0086 9983              std y+1,R25 
 0088 8883              std y+0,R24 
 008A 20E0              ldi R18,<_intxin 
 008C 30E0              ldi R19,>_intxin 
 008E 00E1              ldi R16,16 
 0090 10E0              ldi R17,0 
 0092 00D0              rcall _EEPROMReadBytes 
 0094                   .dbline 56 
 0094           ;   intxin.c[0]-=Data[6]; 
 0094 20901600          lds R2,_Data+6 
 0098 30900000          lds R3,_intxin 
 009C 3218              sub R3,R2 
 009E 30920000          sts _intxin,R3 
 00A2                   .dbline 57 
 00A2           ;   intxin.c[1]-=Data[7]; 
 00A2 20901700          lds R2,_Data+7 
 00A6 30900100          lds R3,_intxin+1 
 00AA 3218              sub R3,R2 
 00AC 30920100          sts _intxin+1,R3 
 00B0                   .dbline 58 
 00B0           ;   EEPROMWriteBytes(0x0010,intxin.c,2); 
 00B0 82E0              ldi R24,2 
 00B2 90E0              ldi R25,0 
 00B4 9983              std y+1,R25 
 00B6 8883              std y+0,R24 
 00B8 20E0              ldi R18,<_intxin 
 00BA 30E0              ldi R19,>_intxin 
 00BC 00E1              ldi R16,16 
 00BE 10E0              ldi R17,0 
 00C0 00D0              rcall _EEPROMWriteBytes 
 00C2                   .dbline -2 
 00C2                   .dbline 59 
 00C2           ; } 
 00C2           L14: 
 00C2 2296              adiw R28,2 
 00C4                   .dbline 0 ; func end 
 00C4 0895              ret 
 00C6                   .dbend 
 00C6                   .dbfunc e PIDB _PIDB fV 
 00C6           ;          speed -> R14,R15 
 00C6           ;              z -> y+20 
 00C6           ;              u -> y+14 
 00C6           ;              t -> R10,R11 
 00C6           ;              y -> R12,R13 
 00C6           ;          temp1 -> R20 
 00C6           ;              k -> y+2 
 00C6           ;              i -> y+18 
                        .even 
 00C6           _PIDB:: 
 00C6 00D0              rcall push_gset5 
 00C8 6697              sbiw R28,22 
 00CA                   .dbline -1 
 00CA                   .dbline 63 
 00CA           ;  
 00CA           ; //***************************PID调节函数***************************// 
 00CA           ; void PIDB() 
 00CA           ; {int y;           //本次速度值  
 00CA                   .dbline 71 
 00CA           ;  float u;         //电压差值 
 00CA           ;  int z;           //输出增量 
 00CA           ;  int t;           //采样时间 
 00CA           ;  char temp1;      //暂存 
 00CA           ;  int i; 
 00CA           ;  int speed;       //速度设定 
 00CA           ;  float k[3];      //PID参数记录 
 00CA           ;  for (i=0;i<=2;i++) 
 00CA 0024              clr R0 
 00CC 1124              clr R1 
 00CE 1B8A              std y+19,R1 
 00D0 0A8A              std y+18,R0 
 00D2           L19: 
 00D2                   .dbline 72 
 00D2                   .dbline 72 
 00D2 84E0              ldi R24,4 
 00D4 90E0              ldi R25,0 
 00D6 9983              std y+1,R25 
 00D8 8883              std y+0,R24 
 00DA 20E0              ldi R18,<_floatxin 
 00DC 30E0              ldi R19,>_floatxin 
 00DE 0A89              ldd R16,y+18 
 00E0 1B89              ldd R17,y+19 
 00E2 000F              lsl R16 
 00E4 111F              rol R17 
 00E6 000F              lsl R16 
 00E8 111F              rol R17 
 00EA 00D0              rcall _EEPROMReadBytes 
 00EC                   .dbline 73 
 00EC 8C2F              mov R24,R28 
 00EE 9D2F              mov R25,R29 
 00F0 0296              adiw R24,2 
 00F2 EA89              ldd R30,y+18 
 00F4 FB89              ldd R31,y+19 
 00F6 EE0F              lsl R30 
 00F8 FF1F              rol R31 
 00FA EE0F              lsl R30 
 00FC FF1F              rol R31 
 00FE E80F              add R30,R24 
 0100 F91F              adc R31,R25 
 0102 40900400          lds R4,_floatxin+2 
 0106 50900500          lds R5,_floatxin+2+1 
 010A 20900200          lds R2,_floatxin 
 010E 30900300          lds R3,_floatxin+1 
 0112 2082              std z+0,R2 
 0114 3182              std z+1,R3 
 0116 4282              std z+2,R4 
 0118 5382              std z+3,R5 
 011A                   .dbline 73 
 011A           L20: 
 011A                   .dbline 71 
 011A 8A89              ldd R24,y+18 
 011C 9B89              ldd R25,y+19 
 011E 0196              adiw R24,1 
 0120 9B8B              std y+19,R25 
 0122 8A8B              std y+18,R24 
 0124                   .dbline 71 
 0124 82E0              ldi R24,2 
 0126 90E0              ldi R25,0 
 0128 0A88              ldd R0,y+18 
 012A 1B88              ldd R1,y+19 
 012C 8015              cp R24,R0 
 012E 9105              cpc R25,R1 
 0130 84F6              brge L19 
 0132                   .dbline 74 
 0132           ;   {EEPROMReadBytes(i*4,floatxin.c,4); 
 0132           ;    k[i]=floatxin.x;} 
 0132           ;   EEPROMReadBytes(0x0010,intxin.c,1);   //读EEPROM 
 0132 81E0              ldi R24,1 
 0134 9983              std y+1,R25 
 0136 8883              std y+0,R24 
 0138 20E0              ldi R18,<_intxin 
 013A 30E0              ldi R19,>_intxin 
 013C 00E1              ldi R16,16 
 013E 10E0              ldi R17,0 
 0140 00D0              rcall _EEPROMReadBytes 
 0142                   .dbline 75 
 0142           ;   speed=intxin.x; 
 0142 E0900000          lds R14,_intxin 
 0146 F0900100          lds R15,_intxin+1 
 014A                   .dbline 76 
 014A           ;   t=itime*0.0001275; 
 014A 00E0              ldi R16,L23 
 014E 00D0              rcall lpm32 
 0150 3A93              st -y,R19 
 0152 2A93              st -y,R18 
 0154 1A93              st -y,R17 
 0156 0A93              st -y,R16 
 0158 00910600          lds R16,_itime 
 015C 10910700          lds R17,_itime+1 
 0160 00D0              rcall int2fp 
 0162 3A93              st -y,R19 
 0164 2A93              st -y,R18 
 0166 1A93              st -y,R17 
 0168 0A93              st -y,R16 
 016A 00D0              rcall mpy32f 
 016C 00D0              rcall fp2int 
 016E A02E              mov R10,R16 
 0170 B12E              mov R11,R17 
 0172                   .dbline 77 
 0172           ;   y = TCNT1;  
 0172 CCB4              in R12,0x2c 
 0174 DDB4              in R13,0x2d 
 0176                   .dbline 78 
 0176           ;   Ek=y-speed; 
 0176 2C2C              mov R2,R12 
 0178 3D2C              mov R3,R13 
 017A 2E18              sub R2,R14 
 017C 3F08              sbc R3,R15 
 017E 30920100          sts _Ek+1,R3 
 0182 20920000          sts _Ek,R2 
 0186                   .dbline 79 
 0186           ;   u=k[0]*((Ek-Ek_1)+(t/k[1])*Ek+(k[2]/t)*(Ek-2*Ek_1+Ek_2)); 
 0186 EC2F              mov R30,R28 
 0188 FD2F              mov R31,R29 
 018A 2280              ldd R2,z+2 
 018C 3380              ldd R3,z+3 
 018E 4480              ldd R4,z+4 
 0190 5580              ldd R5,z+5 
 0192 5A92              st -y,R5 
 0194 4A92              st -y,R4 
 0196 3A92              st -y,R3 
 0198 2A92              st -y,R2 
 019A 20900200          lds R2,_Ek_1 
 019E 30900300          lds R3,_Ek_1+1 
 01A2 00910000          lds R16,_Ek 
 01A6 10910100          lds R17,_Ek+1 
 01AA 0219              sub R16,R2 
 01AC 1309              sbc R17,R3 
 01AE 00D0              rcall int2fp 
 01B0 3A93              st -y,R19 
 01B2 2A93              st -y,R18 
 01B4 1A93              st -y,R17 
 01B6 0A93              st -y,R16 
 01B8 0A2D              mov R16,R10 
 01BA 1B2D              mov R17,R11 
 01BC 00D0              rcall int2fp 
 01BE 3A93              st -y,R19 
 01C0 2A93              st -y,R18 
 01C2 1A93              st -y,R17 
 01C4 0A93              st -y,R16 
 01C6 EC2F              mov R30,R28 
 01C8 FD2F              mov R31,R29 
 01CA            ; stack offset 12 
 01CA 2288              ldd R2,z+18 
 01CC 3388              ldd R3,z+19 
 01CE 4488              ldd R4,z+20 
 01D0 5588              ldd R5,z+21 
 01D2 5A92              st -y,R5 
 01D4 4A92              st -y,R4 
 01D6 3A92              st -y,R3 
 01D8 2A92              st -y,R2 
 01DA 00D0              rcall div32fs 
 01DC 00910000          lds R16,_Ek 
 01E0 10910100          lds R17,_Ek+1 
 01E4 00D0              rcall int2fp 
 01E6 3A93              st -y,R19 
 01E8 2A93              st -y,R18 
 01EA 1A93              st -y,R17 
 01EC 0A93              st -y,R16 
 01EE 00D0              rcall mpy32fs 
 01F0 00D0              rcall add32fs 
 01F2 EC2F              mov R30,R28 
 01F4 FD2F              mov R31,R29 
 01F6            ; stack offset 8 
 01F6 2288              ldd R2,z+18 
 01F8 3388              ldd R3,z+19 
 01FA 4488              ldd R4,z+20 
 01FC 5588              ldd R5,z+21 
 01FE 5A92              st -y,R5 
 0200 4A92              st -y,R4 
 0202 3A92              st -y,R3 
 0204 2A92              st -y,R2 
 0206 0A2D              mov R16,R10 
 0208 1B2D              mov R17,R11 
 020A 00D0              rcall int2fp 
 020C 3A93              st -y,R19 
 020E 2A93              st -y,R18 
 0210 1A93              st -y,R17 
 0212 0A93              st -y,R16 
 0214 00D0              rcall div32fs 
 0216 20900200          lds R2,_Ek_1 
 021A 30900300          lds R3,_Ek_1+1 
 021E 220C              lsl R2 
 0220 331C              rol R3 
 0222 00910000          lds R16,_Ek 
 0226 10910100          lds R17,_Ek+1 
 022A 0219              sub R16,R2 
 022C 1309              sbc R17,R3 
 022E 20900400          lds R2,_Ek_2 
 0232 30900500          lds R3,_Ek_2+1 
 0236 020D              add R16,R2 
 0238 131D              adc R17,R3 
 023A 00D0              rcall int2fp 
 023C 3A93              st -y,R19 
 023E 2A93              st -y,R18 
 0240 1A93              st -y,R17 
 0242 0A93              st -y,R16 
 0244 00D0              rcall mpy32fs 
 0246 00D0              rcall add32fs 
 0248 00D0              rcall mpy32f 
 024A EC2F              mov R30,R28 
 024C FD2F              mov R31,R29 
 024E 0687              std z+14,R16 
 0250 1787              std z+15,R17 
 0252 208B              std z+16,R18 
 0254 318B              std z+17,R19 
 0256                   .dbline 80 
 0256           ;   z=u/U1*0xFF; 
 0256 00E0              ldi R16,L26 
 025A 00D0              rcall lpm32 
 025C 3A93              st -y,R19 
 025E 2A93              st -y,R18 
 0260 1A93              st -y,R17 
 0262 0A93              st -y,R16 
 0264 EC2F              mov R30,R28 
 0266 FD2F              mov R31,R29 
 0268            ; stack offset 4 
 0268 2288              ldd R2,z+18 
 026A 3388              ldd R3,z+19 
 026C 4488              ldd R4,z+20 
 026E 5588              ldd R5,z+21 
 0270 5A92              st -y,R5 
 0272 4A92              st -y,R4 
 0274 3A92              st -y,R3 
 0276 2A92              st -y,R2 
 0278 00E0              ldi R16,L27 
 027C 00D0              rcall lpm32 
 027E 3A93              st -y,R19 
 0280 2A93              st -y,R18 
 0282 1A93              st -y,R17 
 0284 0A93              st -y,R16 
 0286 00D0              rcall div32fs 
 0288 00D0              rcall mpy32f 
 028A 00D0              rcall fp2int 
 028C 1D8B              std y+21,R17 
 028E 0C8B              std y+20,R16 
 0290                   .dbline 81 
 0290           ;   temp1=OCR2; 
 0290 43B5              in R20,0x23 
 0292                   .dbline 82 
 0292           ;   if(flage==1)                            //监控状态 
 0292 80910600          lds R24,_flage 
 0296 8130              cpi R24,1 
 0298 91F4              brne L28 
 029A                   .dbline 83 
 029A           ;   {Data[4]=0xD0; 
 029A                   .dbline 83 
 029A 80ED              ldi R24,208 
 029C 80931400          sts _Data+4,R24 
 02A0                   .dbline 84 
 02A0           ;    Data[5]=temp1; 
 02A0 40931500          sts _Data+5,R20 
 02A4                   .dbline 85 
 02A4           ;    Data[6]=y>>8; 
 02A4 2C2C              mov R2,R12 
 02A6 3D2C              mov R3,R13 
 02A8 232C              mov R2,R3 
 02AA 3324              clr R3 
 02AC 27FC              sbrc R2,7 
 02AE 3094              com R3 
 02B0 20921600          sts _Data+6,R2 
 02B4                   .dbline 86 
 02B4           ;    Data[7]=y; 
 02B4 C0921700          sts _Data+7,R12 
 02B8                   .dbline 87 
 02B8           ;    Putdata(Data);}  
 02B8 00E0              ldi R16,<_Data 
 02BA 10E0              ldi R17,>_Data 
 02BC A1DE              rcall _Putdata 
 02BE                   .dbline 87 
 02BE           L28: 
 02BE                   .dbline 88 
 02BE           ;   temp1=temp1+z; 
 02BE 242E              mov R2,R20 
 02C0 3324              clr R3 
 02C2 0C88              ldd R0,y+20 
 02C4 1D88              ldd R1,y+21 
 02C6 200C              add R2,R0 
 02C8 311C              adc R3,R1 
 02CA 422D              mov R20,R2 
 02CC                   .dbline 89 
 02CC           ;   if(temp1<=0)                           //结果小于0时输出0 
 02CC 2224              clr R2 
 02CE 2416              cp R2,R20 
 02D0 08F0              brlo L34 
 02D2                   .dbline 90 
 02D2           ;    temp1 = 0x00; 
 02D2 4427              clr R20 
 02D4           L34: 
 02D4                   .dbline 91 
 02D4           ;   if(temp1>=0xF0)                        //结果大于0xF0时输出0xF0  
 02D4 403F              cpi R20,240 
 02D6 08F0              brlo L36 
 02D8                   .dbline 92 
 02D8           ;    temp1 = 0xF0; 
 02D8 40EF              ldi R20,240 
 02DA           L36: 
 02DA                   .dbline 93 
 02DA           ;   OCR2=temp1; 
 02DA 43BD              out 0x23,R20 
 02DC                   .dbline 94 
 02DC           ;   Ek_2 = Ek_1; 
 02DC 20900200          lds R2,_Ek_1 
 02E0 30900300          lds R3,_Ek_1+1 
 02E4 30920500          sts _Ek_2+1,R3 
 02E8 20920400          sts _Ek_2,R2 
 02EC                   .dbline 95 
 02EC           ;   Ek_1 = Ek; 
 02EC 20900000          lds R2,_Ek 
 02F0 30900100          lds R3,_Ek+1 
 02F4 30920300          sts _Ek_1+1,R3 
 02F8 20920200          sts _Ek_1,R2 
 02FC                   .dbline 96 
 02FC           ;   TCNT1 = 0x0000;                          //计数器清零 
 02FC 2224              clr R2 
 02FE 3324              clr R3 
 0300 3DBC              out 0x2d,R3 
 0302 2CBC              out 0x2c,R2 
 0304                   .dbline -2 
 0304                   .dbline 97 
 0304           ; } 
 0304           L18: 
 0304 6696              adiw R28,22 
 0306 00D0              rcall pop_gset5 
 0308                   .dbline 0 ; func end 
 0308 0895              ret 
 030A                   .dbsym r speed 14 I 
 030A                   .dbsym l z 20 I 
 030A                   .dbsym l u 14 D 
 030A                   .dbsym r t 10 I 
 030A                   .dbsym r y 12 I 
 030A                   .dbsym r temp1 20 c 
 030A                   .dbsym l k 2 A[12:3]D 
 030A                   .dbsym l i 18 I 
 030A                   .dbend 
 030A                   .dbfunc e USARTInit _USARTInit fV 
 030A           ;       baudrate -> R16,R17 
                        .even 
 030A           _USARTInit:: 
 030A                   .dbline -1 
 030A                   .dbline 101 
 030A           ;  
 030A           ; //***************************串口初始化函数************************//                    
 030A           ; void USARTInit(int baudrate)     
 030A           ; {UCR = (1<_Data+4 
 0348 00910E00          lds R16,_adress 
 034C 10910F00          lds R17,_adress+1 
 0350 00D0              rcall _EEPROMReadBytes 
 0352 0BC0              rjmp L41 
 0354           L40: 
 0354                   .dbline 110 
 0354           ;  else 
 0354           ;  EEPROMReadBytes(adress,&Data[6],2); 
 0354 82E0              ldi R24,2 
 0356 90E0              ldi R25,0 
 0358 9983              std y+1,R25 
 035A 8883              std y+0,R24 
 035C 20E0              ldi R18,<_Data+6 
 035E 30E0              ldi R19,>_Data+6 
 0360 00910E00          lds R16,_adress 
 0364 10910F00          lds R17,_adress+1 
 0368 00D0              rcall _EEPROMReadBytes 
 036A           L41: 
 036A                   .dbline 111 
 036A           ;  switch(adress) 
 036A 80910E00          lds R24,_adress 
 036E 90910F00          lds R25,_adress+1 
 0372 8430              cpi R24,4 
 0374 E0E0              ldi R30,0 
 0376 9E07              cpc R25,R30 
 0378 99F1              breq L50 
 037A 84E0              ldi R24,4 
 037C 90E0              ldi R25,0 
 037E 20900E00          lds R2,_adress 
 0382 30900F00          lds R3,_adress+1 
 0386 8215              cp R24,R2 
 0388 9305              cpc R25,R3 
 038A 4CF0              brlt L61 
 038C           L60: 
 038C 20900E00          lds R2,_adress 
 0390 30900F00          lds R3,_adress+1 
 0394 2220              tst R2 
 0396 11F4              brne X1 
 0398 3320              tst R3 
 039A F1F0              breq L48 
 039C           X1: 
 039C 34C0              rjmp L47 
 039E           L61: 
 039E 80910E00          lds R24,_adress 
 03A2 90910F00          lds R25,_adress+1 
 03A6 8830              cpi R24,8 
 03A8 E0E0              ldi R30,0 
 03AA 9E07              cpc R25,R30 
 03AC E9F0              breq L52 
 03AE 8830              cpi R24,8 
 03B0 E0E0              ldi R30,0 
 03B2 9E07              cpc R25,R30 
 03B4 44F1              brlt L47 
 03B6           L62: 
 03B6 80910E00          lds R24,_adress 
 03BA 90910F00          lds R25,_adress+1 
 03BE 8C30              cpi R24,12 
 03C0 E0E0              ldi R30,0 
 03C2 9E07              cpc R25,R30 
 03C4 A9F0              breq L54 
 03C6 8E30              cpi R24,14 
 03C8 E0E0              ldi R30,0 
 03CA 9E07              cpc R25,R30 
 03CC A9F0              breq L56 
 03CE 8031              cpi R24,16 
 03D0 E0E0              ldi R30,0 
 03D2 9E07              cpc R25,R30 
 03D4 A9F0              breq L58 
 03D6 17C0              rjmp L47 
 03D8           X2: 
 03D8                   .dbline 112 
 03D8           L48: 
 03D8                   .dbline 112 
 03D8           ;  {case 0x0000:Data[3]=0xE4;break; 
 03D8 84EE              ldi R24,228 
 03DA 80931300          sts _Data+3,R24 
 03DE                   .dbline 112 
 03DE 13C0              rjmp L47 
 03E0           L50: 
 03E0                   .dbline 113 
 03E0           ;   case 0x0004:Data[3]=0xE5;break; 
 03E0 85EE              ldi R24,229 
 03E2 80931300          sts _Data+3,R24 
 03E6                   .dbline 113 
 03E6 0FC0              rjmp L47 
 03E8           L52: 
 03E8                   .dbline 114 
 03E8           ;   case 0x0008:Data[3]=0xE6;break; 
 03E8 86EE              ldi R24,230 
 03EA 80931300          sts _Data+3,R24 
 03EE                   .dbline 114 
 03EE 0BC0              rjmp L47 
 03F0           L54: 
 03F0                   .dbline 115 
 03F0           ;   case 0x000C:Data[3]=0xE7;break; 
 03F0 87EE              ldi R24,231 
 03F2 80931300          sts _Data+3,R24 
 03F6                   .dbline 115 
 03F6 07C0              rjmp L47 
 03F8           L56: 
 03F8                   .dbline 116 
 03F8           ;   case 0x000E:Data[3]=0xE8;break; 
 03F8 88EE              ldi R24,232 
 03FA 80931300          sts _Data+3,R24 
 03FE                   .dbline 116 
 03FE 03C0              rjmp L47 
 0400           L58: 
 0400                   .dbline 117 
 0400 89EE              ldi R24,233 
 0402 80931300          sts _Data+3,R24 
 0406                   .dbline 117 
 0406                   .dbline 118 
 0406           L47: 
 0406                   .dbline -2 
 0406                   .dbline 119 
 0406           ;   case 0x0010:Data[3]=0xE9;break; 
 0406           ;   default :break;} 
 0406           ; } 
 0406           L39: 
 0406 2296              adiw R28,2 
 0408                   .dbline 0 ; func end 
 0408 0895              ret 
 040A                   .dbend 
 040A                   .dbfunc e readdata _readdata fV 
 040A           ;       tempdata -> R22 
 040A           ;       trandata -> R20,R21 
 040A           ;           data -> R20 
                        .even 
 040A           _readdata:: 
 040A 00D0              rcall push_gset2 
 040C 402F              mov R20,R16 
 040E                   .dbline -1 
 040E                   .dbline 123 
 040E           ;  
 040E           ; //***************************读数据函数****************************// 
 040E           ; void readdata(char data) 
 040E           ; {int trandata; 
 040E                   .dbline 125 
 040E           ;  char tempdata; 
 040E           ;  if(data==0xE) 
 040E 4E30              cpi R20,14 
 0410 11F4              brne L64 
 0412                   .dbline 126 
 0412           ;  Eepromdata(); 
 0412 7FDF              rcall _Eepromdata 
 0414 23C0              rjmp L65 
 0416           L64: 
 0416                   .dbline 128 
 0416           ;  else 
 0416           ;  {switch(data) 
 0416                   .dbline 128 
 0416 5527              clr R21 
 0418 4130              cpi R20,1 
 041A E0E0              ldi R30,0 
 041C 5E07              cpc R21,R30 
 041E 49F0              breq L69 
 0420 4230              cpi R20,2 
 0422 E0E0              ldi R30,0 
 0424 5E07              cpc R21,R30 
 0426 41F0              breq L70 
 0428 4330              cpi R20,3 
 042A E0E0              ldi R30,0 
 042C 5E07              cpc R21,R30 
 042E 49F0              breq L71 
 0430 0BC0              rjmp L67 
 0432           X3: 
 0432                   .dbline 129 
 0432           L69: 
 0432                   .dbline 129 
 0432           ;   {case 1:trandata=TCNT1;break; //读TCNT1 
 0432 4CB5              in R20,0x2c 
 0434 5DB5              in R21,0x2d 
 0436                   .dbline 129 
 0436 08C0              rjmp L67 
 0438           L70: 
 0438                   .dbline 130 
 0438           ;    case 2:trandata=(int)(tempdata=TCNT0);break;//读TCNT0 
 0438 22B6              in R2,0x32 
 043A 622D              mov R22,R2 
 043C 422D              mov R20,R2 
 043E 5527              clr R21 
 0440                   .dbline 130 
 0440 03C0              rjmp L67 
 0442           L71: 
 0442                   .dbline 131 
 0442           ;    case 3:trandata=GetOutputADC();break;//读A/D转换结果 
 0442 F2DD              rcall _GetOutputADC 
 0444 402F              mov R20,R16 
 0446 512F              mov R21,R17 
 0448                   .dbline 131 
 0448                   .dbline 132 
 0448           ;    default :break;} 
 0448           L67: 
 0448                   .dbline 133 
 0448           ;  Data[6]=(char)trandata;//数据低八位 
 0448 40931600          sts _Data+6,R20 
 044C                   .dbline 134 
 044C           ;  Data[7]=(char)(trandata>>8);//数据高八位 
 044C 242E              mov R2,R20 
 044E 352E              mov R3,R21 
 0450 232C              mov R2,R3 
 0452 3324              clr R3 
 0454 27FC              sbrc R2,7 
 0456 3094              com R3 
 0458 20921700          sts _Data+7,R2 
 045C                   .dbline 135 
 045C           ; } 
 045C           L65: 
 045C                   .dbline 136 
 045C           ;  Putdata(Data); 
 045C 00E0              ldi R16,<_Data 
 045E 10E0              ldi R17,>_Data 
 0460 CFDD              rcall _Putdata 
 0462                   .dbline -2 
 0462                   .dbline 137 
 0462           ; } 
 0462           L63: 
 0462 00D0              rcall pop_gset2 
 0464                   .dbline 0 ; func end 
 0464 0895              ret 
 0466                   .dbsym r tempdata 22 c 
 0466                   .dbsym r trandata 20 I 
 0466                   .dbsym r data 20 c 
 0466                   .dbend 
 0466                   .dbfunc e order _order fV 
                        .even 
 0466           _order:: 
 0466 00D0              rcall push_gset1 
 0468                   .dbline -1 
 0468                   .dbline 141 
 0468           ;  
 0468           ; //***************************命令函数******************************// 
 0468           ; void order(void) 
 0468           ; {switch (Data[4]) 
 0468                   .dbline 141 
 0468 40911400          lds R20,_Data+4 
 046C 5527              clr R21 
 046E 403C              cpi R20,192 
 0470 E0E0              ldi R30,0 
 0472 5E07              cpc R21,R30 
 0474 09F1              breq L79 
 0476 413C              cpi R20,193 
 0478 E0E0              ldi R30,0 
 047A 5E07              cpc R21,R30 
 047C F9F0              breq L80 
 047E 423C              cpi R20,194 
 0480 E0E0              ldi R30,0 
 0482 5E07              cpc R21,R30 
 0484 F9F0              breq L81 
 0486 433C              cpi R20,195 
 0488 E0E0              ldi R30,0 
 048A 5E07              cpc R21,R30 
 048C 21F1              breq L82 
 048E 443C              cpi R20,196 
 0490 E0E0              ldi R30,0 
 0492 5E07              cpc R21,R30 
 0494 49F1              breq L83 
 0496 453C              cpi R20,197 
 0498 E0E0              ldi R30,0 
 049A 5E07              cpc R21,R30 
 049C 39F1              breq L84 
 049E 463C              cpi R20,198 
 04A0 E0E0              ldi R30,0 
 04A2 5E07              cpc R21,R30 
 04A4 29F1              breq L85 
 04A6 483C              cpi R20,200 
 04A8 E0E0              ldi R30,0 
 04AA 5E07              cpc R21,R30 
 04AC 41F1              breq L86 
 04AE 493C              cpi R20,201 
 04B0 E0E0              ldi R30,0 
 04B2 5E07              cpc R21,R30 
 04B4 41F1              breq L87 
 04B6 2AC0              rjmp L76 
 04B8           X4: 
 04B8                   .dbline 142 
 04B8           L79: 
 04B8                   .dbline 142 
 04B8           ;  {case 0xC0:PORTB=PORTB|0x04;break;    //停止 
 04B8 C29A              sbi 0x18,2 
 04BA                   .dbline 142 
 04BA 28C0              rjmp L76 
 04BC           L80: 
 04BC                   .dbline 143 
 04BC           ;   case 0xC1:PORTB=PORTB&0xFB;break;    //启动 
 04BC 88B3              in R24,0x18 
 04BE 8B7F              andi R24,251 
 04C0 88BB              out 0x18,R24 
 04C2                   .dbline 143 
 04C2 24C0              rjmp L76 
 04C4           L81: 
 04C4                   .dbline 145 
 04C4           ;   case 0xC2:                           //正转 
 04C4           ;            {PORTB=PORTB&0xFC|0x02; 
 04C4                   .dbline 145 
 04C4 88B3              in R24,0x18 
 04C6 8C7F              andi R24,252 
 04C8 8260              ori R24,2 
 04CA 88BB              out 0x18,R24 
 04CC                   .dbline 146 
 04CC           ;                   PORTD=PORTD&0x3F|0x40; 
 04CC 82B3              in R24,0x12 
 04CE 8F73              andi R24,63 
 04D0 8064              ori R24,64 
 04D2 82BB              out 0x12,R24 
 04D4                   .dbline 147 
 04D4           ;                       break;} 
 04D4 1BC0              rjmp L76 
 04D6           L82: 
 04D6                   .dbline 149 
 04D6           ;   case 0xC3:                           //反转 
 04D6           ;            {PORTB=PORTB&0xFC|0x01; 
 04D6                   .dbline 149 
 04D6 88B3              in R24,0x18 
 04D8 8C7F              andi R24,252 
 04DA 8160              ori R24,1 
 04DC 88BB              out 0x18,R24 
 04DE                   .dbline 150 
 04DE           ;                   PORTD=PORTD&0x3F|0x80; 
 04DE 82B3              in R24,0x12 
 04E0 8F73              andi R24,63 
 04E2 8068              ori R24,128 
 04E4 82BB              out 0x12,R24 
 04E6                   .dbline 151 
 04E6           ;                       break;} 
 04E6 12C0              rjmp L76 
 04E8           L83: 
 04E8                   .dbline 152 
 04E8           ;   case 0xC4:Upspeed();break;           //加速 
 04E8 A8DD              rcall _Upspeed 
 04EA                   .dbline 152 
 04EA 10C0              rjmp L76 
 04EC           L84: 
 04EC                   .dbline 153 
 04EC           ;   case 0xC5:Downspeed();break;         //减速 
 04EC C9DD              rcall _Downspeed 
 04EE                   .dbline 153 
 04EE 0EC0              rjmp L76 
 04F0           L85: 
 04F0                   .dbline 155 
 04F0           ;   case 0xC6:                           //制动 
 04F0           ;            {PORTB=PORTB|0x03; 
 04F0                   .dbline 155 
 04F0 88B3              in R24,0x18 
 04F2 8360              ori R24,3 
 04F4 88BB              out 0x18,R24 
 04F6                   .dbline 156 
 04F6           ;                   PORTD=PORTD&0x3F; 
 04F6 82B3              in R24,0x12 
 04F8 8F73              andi R24,63 
 04FA 82BB              out 0x12,R24 
 04FC                   .dbline 157 
 04FC           ;                       break;} 
 04FC 07C0              rjmp L76 
 04FE           L86: 
 04FE                   .dbline 158 
 04FE           ;   case 0xC8:flage=1;break;             //监控 
 04FE 81E0              ldi R24,1 
 0500 80930600          sts _flage,R24 
 0504                   .dbline 158 
 0504 03C0              rjmp L76 
 0506           L87: 
 0506                   .dbline 159 
 0506 2224              clr R2 
 0508 20920600          sts _flage,R2 
 050C                   .dbline 159 
 050C                   .dbline 160 
 050C           L76: 
 050C                   .dbline -2 
 050C                   .dbline 162 
 050C           ;   case 0xC9:flage=0;break;             //退出监控 
 050C           ;   default :break; 
 050C           ;  } 
 050C           ; } 
 050C           L74: 
 050C 00D0              rcall pop_gset1 
 050E                   .dbline 0 ; func end 
 050E 0895              ret 
 0510                   .dbend 
 0510                   .dbfunc e Datadisposal _Datadisposal fV 
 0510           ;      operation -> R20 
 0510           ;           temp -> R22,R23 
                        .even 
 0510           _Datadisposal:: 
 0510 00D0              rcall push_gset2 
 0512 2297              sbiw R28,2 
 0514                   .dbline -1 
 0514                   .dbline 167 
 0514           ;  
 0514           ;  
 0514           ; //***************************数据处理函数**************************// 
 0514           ; void Datadisposal(void) 
 0514           ; {char operation; 
 0514                   .dbline 169 
 0514           ;  int temp; 
 0514           ;  operation=Data[3]; 
 0514 40911300          lds R20,_Data+3 
 0518                   .dbline 170 
 0518           ;  temp=Data[4]; 
 0518 60911400          lds R22,_Data+4 
 051C 7727              clr R23 
 051E                   .dbline 171 
 051E           ;  temp=temp<<8; 
 051E 762F              mov R23,R22 
 0520 6627              clr R22 
 0522                   .dbline 172 
 0522           ;  adress=temp+Data[5]; 
 0522 20901500          lds R2,_Data+5 
 0526 3324              clr R3 
 0528 462E              mov R4,R22 
 052A 572E              mov R5,R23 
 052C 420C              add R4,R2 
 052E 531C              adc R5,R3 
 0530 50920F00          sts _adress+1,R5 
 0534 40920E00          sts _adress,R4 
 0538                   .dbline 173 
 0538           ;  switch(operation&0x0F) 
 0538 642F              mov R22,R20 
 053A 7727              clr R23 
 053C 6F70              andi R22,15 
 053E 7070              andi R23,0 
 0540 6030              cpi R22,0 
 0542 6707              cpc R22,R23 
 0544 49F0              breq L95 
 0546           X5: 
 0546 6130              cpi R22,1 
 0548 E0E0              ldi R30,0 
 054A 7E07              cpc R23,R30 
 054C 51F0              breq L96 
 054E 6230              cpi R22,2 
 0550 E0E0              ldi R30,0 
 0552 7E07              cpc R23,R30 
 0554 91F0              breq L98 
 0556 12C0              rjmp L93 
 0558           X6: 
 0558                   .dbline 174 
 0558           L95: 
 0558                   .dbline 174 
 0558           ;  {case 0:readdata(operation>>4);break; 
 0558 042F              mov R16,R20 
 055A 0295              swap R16 
 055C 0F70              andi R16,#0x0F 
 055E 55DF              rcall _readdata 
 0560                   .dbline 174 
 0560 0DC0              rjmp L93 
 0562           L96: 
 0562                   .dbline 175 
 0562           ;   case 1:EEPROMWriteBytes(adress,&Data[6],2);break; 
 0562 82E0              ldi R24,2 
 0564 90E0              ldi R25,0 
 0566 9983              std y+1,R25 
 0568 8883              std y+0,R24 
 056A 20E0              ldi R18,<_Data+6 
 056C 30E0              ldi R19,>_Data+6 
 056E 00910E00          lds R16,_adress 
 0572 10910F00          lds R17,_adress+1 
 0576 00D0              rcall _EEPROMWriteBytes 
 0578                   .dbline 175 
 0578 01C0              rjmp L93 
 057A           L98: 
 057A                   .dbline 176 
 057A 75DF              rcall _order 
 057C                   .dbline 176 
 057C                   .dbline 177 
 057C           L93: 
 057C                   .dbline -2 
 057C                   .dbline 179 
 057C           ;   case 2:order();break; 
 057C           ;   default :break; 
 057C           ;  } 
 057C           ; } 
 057C           L88: 
 057C 2296              adiw R28,2 
 057E 00D0              rcall pop_gset2 
 0580                   .dbline 0 ; func end 
 0580 0895              ret 
 0582                   .dbsym r operation 20 c 
 0582                   .dbsym r temp 22 I 
 0582                   .dbend 
 0582                   .dbfunc e main _main fV 
                        .even 
 0582           _main:: 
 0582                   .dbline -1 
 0582                   .dbline 183 
 0582           ;  
 0582           ; //***************************主函数********************************// 
 0582           ; void main() 
 0582           ; {USARTInit(25);              //初始化串口              
 0582                   .dbline 183 
 0582 09E1              ldi R16,25 
 0584 10E0              ldi R17,0 
 0586 C1DE              rcall _USARTInit 
 0588                   .dbline 184 
 0588           ;  TCNT1=00;                   //定时器1初始化  
 0588 2224              clr R2 
 058A 3324              clr R3 
 058C 3DBC              out 0x2d,R3 
 058E 2CBC              out 0x2c,R2 
 0590                   .dbline 185 
 0590           ;  TCCR1B=0x06; 
 0590 86E0              ldi R24,6 
 0592 8EBD              out 0x2e,R24 
 0594                   .dbline 186 
 0594           ;  DDRB=0x0F;                  //I/O口初始化 
 0594 8FE0              ldi R24,15 
 0596 87BB              out 0x17,R24 
 0598                   .dbline 187 
 0598           ;  DDRD=0xC0;      
 0598 80EC              ldi R24,192 
 059A 81BB              out 0x11,R24 
 059C                   .dbline 188 
 059C           ;  TIMSK=0x40;                 //中断初始化  
 059C 80E4              ldi R24,64 
 059E 89BF              out 0x39,R24 
 05A0                   .dbline 189 
 05A0           ;  OCR2 = 0x0F;                //PWM初始化 
 05A0 8FE0              ldi R24,15 
 05A2 83BD              out 0x23,R24 
 05A4                   .dbline 190 
 05A4           ;  TCCR2=0x72; 
 05A4 82E7              ldi R24,114 
 05A6 85BD              out 0x25,R24 
 05A8                   .dbline 191 
 05A8           ;  PORTB=PORTB&0xFC|0x01; 
 05A8 88B3              in R24,0x18 
 05AA 8C7F              andi R24,252 
 05AC 8160              ori R24,1 
 05AE 88BB              out 0x18,R24 
 05B0                   .dbline 192 
 05B0           ;  PORTD=PORTD&0x3F|0x80; 
 05B0 82B3              in R24,0x12 
 05B2 8F73              andi R24,63 
 05B4 8068              ori R24,128 
 05B6 82BB              out 0x12,R24 
 05B8                   .dbline 193 
 05B8           ;  SEI(); 
 05B8 7894              sei 
 05BA           L100: 
 05BA                   .dbline 194 
 05BA                   .dbline 194 
 05BA           L101: 
 05BA                   .dbline 194 
 05BA FFCF              rjmp L100 
 05BC           X7: 
 05BC                   .dbline -2 
 05BC                   .dbline 195 
 05BC           ;  do{} while(1);              //等待中断 
 05BC           ; } 
 05BC           L99: 
 05BC                   .dbline 0 ; func end 
 05BC 0895              ret 
 05BE                   .dbend 
                        .area vector(rom, abs) 
                        .org 22 
 0016 DFC2              rjmp _UART_RXC 
                        .area text(rom, con, rel) 
 05BE                   .dbfile E:\张军\AVR\光盘内容\实例源文件\第九章工程\Motor.c 
 05BE                   .dbfunc e UART_RXC _UART_RXC fV 
 05BE           ;              i -> R20 
                        .even 
 05BE           _UART_RXC:: 
 05BE 00D0              rcall push_lset 
 05C0 00D0              rcall push_gset1 
 05C2                   .dbline -1 
 05C2                   .dbline 200 
 05C2           ;  
 05C2           ; //***************************串行接收中断服务程序******************// 
 05C2           ; #pragma interrupt_handler UART_RXC:12 
 05C2           ; void UART_RXC(void) 
 05C2           ; {char i=0; 
 05C2                   .dbline 200 
 05C2 4427              clr R20 
 05C4                   .dbline 201 
 05C4           ;  CLI(); 
 05C4 F894              cli 
 05C6                   .dbline 202 
 05C6           ;  Data[0]=UDR; 
 05C6 2CB0              in R2,0xc 
 05C8 20921000          sts _Data,R2 
 05CC                   .dbline 203 
 05CC           ;  if(Data[0]==0x55)           //起始位检测 
 05CC 822D              mov R24,R2 
 05CE 8535              cpi R24,85 
 05D0 C1F4              brne L104 
 05D2                   .dbline 204 
 05D2           ;  {do 
 05D2                   .dbline 205 
 05D2           L109: 
 05D2                   .dbline 205 
 05D2           L110: 
 05D2                   .dbline 205 
 05D2           ;   {while(!(USR&(1<_Data 
 05DC E42F              mov R30,R20 
 05DE FF27              clr R31 
 05E0 E80F              add R30,R24 
 05E2 F91F              adc R31,R25 
 05E4 2CB0              in R2,0xc 
 05E6 2082              std z+0,R2 
 05E8                   .dbline 208 
 05E8           ;    if(i==9) 
 05E8 4930              cpi R20,9 
 05EA 09F4              brne L112 
 05EC                   .dbline 209 
 05EC 01C0              rjmp L108 
 05EE           L112: 
 05EE                   .dbline 209 
 05EE           L107: 
 05EE                   .dbline 209 
 05EE           ;    break;} while(1); 
 05EE F1CF              rjmp L110 
 05F0           L108: 
 05F0                   .dbline 210 
 05F0           ;   if((Data[8]==0xFE)&&(Data[9]==0xFF))  //检测结束位 
 05F0 80911800          lds R24,_Data+8 
 05F4 8E3F              cpi R24,254 
 05F6 29F4              brne L114 
 05F8 80911900          lds R24,_Data+9 
 05FC 8F3F              cpi R24,255 
 05FE 09F4              brne L114 
 0600                   .dbline 211 
 0600 87DF              rcall _Datadisposal 
 0602           L114: 
 0602                   .dbline 211 
 0602           ;   Datadisposal();} 
 0602           L104: 
 0602                   .dbline 212 
 0602           ;  SEI(); 
 0602 7894              sei 
 0604                   .dbline -2 
 0604                   .dbline 213 
 0604           ; } 
 0604           L103: 
 0604 00D0              rcall pop_gset1 
 0606 00D0              rcall pop_lset 
 0608                   .dbline 0 ; func end 
 0608 1895              reti 
 060A                   .dbsym r i 20 c 
 060A                   .dbend 
                        .area vector(rom, abs) 
                        .org 8 
 0008 05C3              rjmp _TIM2_OVF 
                        .area text(rom, con, rel) 
 060A                   .dbfile E:\张军\AVR\光盘内容\实例源文件\第九章工程\Motor.c 
 060A                   .dbfunc e TIM2_OVF _TIM2_OVF fV 
                        .even 
 060A           _TIM2_OVF:: 
 060A 00D0              rcall push_lset 
 060C 2297              sbiw R28,2 
 060E                   .dbline -1 
 060E                   .dbline 218 
 060E           ;  
 060E           ; //***************************定时器2中断服务程序*******************// 
 060E           ; #pragma interrupt_handler TIM2_OVF:5 
 060E           ; void TIM2_OVF(void)     
 060E           ; {CLI(); 
 060E                   .dbline 218 
 060E F894              cli 
 0610                   .dbline 219 
 0610           ;  EEPROMReadBytes(0x000C,&itime,2);//读采样次数 
 0610 82E0              ldi R24,2 
 0612 90E0              ldi R25,0 
 0614 9983              std y+1,R25 
 0616 8883              std y+0,R24 
 0618 20E0              ldi R18,<_itime 
 061A 30E0              ldi R19,>_itime 
 061C 0CE0              ldi R16,12 
 061E 10E0              ldi R17,0 
 0620 00D0              rcall _EEPROMReadBytes 
 0622                   .dbline 220 
 0622           ;  a++; 
 0622 80910C00          lds R24,_a 
 0626 90910D00          lds R25,_a+1 
 062A 0196              adiw R24,1 
 062C 90930D00          sts _a+1,R25 
 0630 80930C00          sts _a,R24 
 0634                   .dbline 221 
 0634           ;  if(a==itime)                //时间窗口判断, 
 0634 20900600          lds R2,_itime 
 0638 30900700          lds R3,_itime+1 
 063C 8215              cp R24,R2 
 063E 9305              cpc R25,R3 
 0640 39F4              brne L119 
 0642                   .dbline 222 
 0642           ;   {a = 0; 
 0642                   .dbline 222 
 0642 2224              clr R2 
 0644 3324              clr R3 
 0646 30920D00          sts _a+1,R3 
 064A 20920C00          sts _a,R2 
 064E                   .dbline 223 
 064E           ;    PIDB();}  
 064E 3BDD              rcall _PIDB 
 0650                   .dbline 223 
 0650           L119: 
 0650                   .dbline 224 
 0650           ;   SEI(); 
 0650 7894              sei 
 0652                   .dbline -2 
 0652                   .dbline 225 
 0652           ; } 
 0652           L118: 
 0652 2296              adiw R28,2 
 0654 00D0              rcall pop_lset 
 0656                   .dbline 0 ; func end 
 0656 1895              reti 
 0658                   .dbend 
                        .area bss(ram, con, rel) 
 0000                   .dbfile E:\张军\AVR\光盘内容\实例源文件\第九章工程\Motor.c 
 0000           _intxin:: 
 0000                   .blkb 2 
 0002                   .dbsym e intxin _intxin X 
 0002           _floatxin:: 
 0002                   .blkb 4 
 0006                   .dbsym e floatxin _floatxin X 
 0006           _itime:: 
 0006                   .blkb 2 
 0008                   .dbsym e itime _itime I 
 0008           _t:: 
 0008                   .blkb 4 
 000C                   .dbsym e t _t D 
 000C           _a:: 
 000C                   .blkb 2 
 000E                   .dbsym e a _a I 
 000E           _adress:: 
 000E                   .blkb 2 
 0010                   .dbsym e adress _adress I 
 0010           _Data:: 
 0010                   .blkb 10 
 001A                   .dbsym e Data _Data A[10:10]c 
                        .area lit(rom, con, rel) 
 0000           L27: 
 0000 0000A040          .word 0x0,0x40a0 
 0004           L26: 
 0004 00007F43          .word 0x0,0x437f 
 0008           L23: 
 0008 85B10539          .word 0xb185,0x3905