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

📄 main.lis

📁 数字舵机(1) 数字脉宽检测 数字脉宽检测
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0086 30922600          sts _time+1,R3
 008A 20922500          sts _time,R2
 008E                   .dbline 77
 008E           L4:
 008E                   .dbline 78
 008E           ;  time++;
 008E 80912500          lds R24,_time
 0092 90912600          lds R25,_time+1
 0096 0196              adiw R24,1
 0098 90932600          sts _time+1,R25
 009C 80932500          sts _time,R24
 00A0                   .dbline 79
 00A0           ;  ADCjohu=ADCL;
 00A0 24B0              in R2,0x4
 00A2 3324              clr R3
 00A4 4424              clr R4
 00A6 5524              clr R5
 00A8 30920100          sts _ADCjohu+1,R3
 00AC 20920000          sts _ADCjohu,R2
 00B0 50920300          sts _ADCjohu+2+1,R5
 00B4 40920200          sts _ADCjohu+2,R4
 00B8                   .dbline 80
 00B8           ;  ADCjohu|=ADCH << 8;
 00B8 25B0              in R2,0x5
 00BA 3324              clr R3
 00BC 322C              mov R3,R2
 00BE 2224              clr R2
 00C0 4424              clr R4
 00C2 37FC              sbrc R3,7
 00C4 4094              com R4
 00C6 5524              clr R5
 00C8 47FC              sbrc R4,7
 00CA 5094              com R5
 00CC 80900200          lds R8,_ADCjohu+2
 00D0 90900300          lds R9,_ADCjohu+2+1
 00D4 60900000          lds R6,_ADCjohu
 00D8 70900100          lds R7,_ADCjohu+1
 00DC 6228              or R6,R2
 00DE 7328              or R7,R3
 00E0 8428              or R8,R4
 00E2 9528              or R9,R5
 00E4 70920100          sts _ADCjohu+1,R7
 00E8 60920000          sts _ADCjohu,R6
 00EC 90920300          sts _ADCjohu+2+1,R9
 00F0 80920200          sts _ADCjohu+2,R8
 00F4                   .dbline 82
 00F4           ; ///////////////////////////////////////////////////////////////////平均值滤波  1毫秒采样滤波,10毫秒输出
 00F4           ;  if (lvbo==0) {lvbo_num=ADCjohu/2;lvbo++;return;}
 00F4 20900C00          lds R2,_lvbo
 00F8 2220              tst R2
 00FA D1F4              brne L6
 00FC           X1:
 00FC                   .dbline 82
 00FC                   .dbline 82
 00FC 42E0              ldi R20,2
 00FE 50E0              ldi R21,0
 0100 60E0              ldi R22,0
 0102 70E0              ldi R23,0
 0104 8301              movw R16,R6
 0106 9401              movw R18,R8
 0108 7A93              st -y,R23
 010A 6A93              st -y,R22
 010C 5A93              st -y,R21
 010E 4A93              st -y,R20
 0110 0E940000          xcall div32s
 0114 10930E00          sts _lvbo_num+1,R17
 0118 00930D00          sts _lvbo_num,R16
 011C 30931000          sts _lvbo_num+2+1,R19
 0120 20930F00          sts _lvbo_num+2,R18
 0124                   .dbline 82
 0124 80910C00          lds R24,_lvbo
 0128 8F5F              subi R24,255    ; addi 1
 012A 80930C00          sts _lvbo,R24
 012E                   .dbline 82
 012E 77C0              xjmp L3
 0130           L6:
 0130                   .dbline 83
 0130           ;  if (lvbo<10) {lvbo_num+=ADCjohu/2;lvbo++;return;}
 0130 80910C00          lds R24,_lvbo
 0134 8A30              cpi R24,10
 0136 60F5              brsh L8
 0138           X2:
 0138                   .dbline 83
 0138                   .dbline 83
 0138 42E0              ldi R20,2
 013A 50E0              ldi R21,0
 013C 60E0              ldi R22,0
 013E 70E0              ldi R23,0
 0140 20910200          lds R18,_ADCjohu+2
 0144 30910300          lds R19,_ADCjohu+2+1
 0148 00910000          lds R16,_ADCjohu
 014C 10910100          lds R17,_ADCjohu+1
 0150 7A93              st -y,R23
 0152 6A93              st -y,R22
 0154 5A93              st -y,R21
 0156 4A93              st -y,R20
 0158 0E940000          xcall div32s
 015C 40900F00          lds R4,_lvbo_num+2
 0160 50901000          lds R5,_lvbo_num+2+1
 0164 20900D00          lds R2,_lvbo_num
 0168 30900E00          lds R3,_lvbo_num+1
 016C 200E              add R2,R16
 016E 311E              adc R3,R17
 0170 421E              adc R4,R18
 0172 531E              adc R5,R19
 0174 30920E00          sts _lvbo_num+1,R3
 0178 20920D00          sts _lvbo_num,R2
 017C 50921000          sts _lvbo_num+2+1,R5
 0180 40920F00          sts _lvbo_num+2,R4
 0184                   .dbline 83
 0184 80910C00          lds R24,_lvbo
 0188 8F5F              subi R24,255    ; addi 1
 018A 80930C00          sts _lvbo,R24
 018E                   .dbline 83
 018E 47C0              xjmp L3
 0190           L8:
 0190                   .dbline 84
 0190           ;       else lvbo=0;/**/
 0190 2224              clr R2
 0192 20920C00          sts _lvbo,R2
 0196                   .dbline 86
 0196           ; //////////////////////////////////////////////////////////////////////////////
 0196           ;  if ( (ADCjohu<REF-6) || (ADCjohu>REF+6))
 0196 4DED              ldi R20,221
 0198 51E0              ldi R21,1
 019A 60E0              ldi R22,0
 019C 70E0              ldi R23,0
 019E 40900200          lds R4,_ADCjohu+2
 01A2 50900300          lds R5,_ADCjohu+2+1
 01A6 20900000          lds R2,_ADCjohu
 01AA 30900100          lds R3,_ADCjohu+1
 01AE 2416              cp R2,R20
 01B0 3506              cpc R3,R21
 01B2 4606              cpc R4,R22
 01B4 5706              cpc R5,R23
 01B6 4CF0              brlt L12
 01B8           X3:
 01B8 49EE              ldi R20,233
 01BA 51E0              ldi R21,1
 01BC 60E0              ldi R22,0
 01BE 70E0              ldi R23,0
 01C0 4215              cp R20,R2
 01C2 5305              cpc R21,R3
 01C4 6405              cpc R22,R4
 01C6 7505              cpc R23,R5
 01C8 24F5              brge L10
 01CA           X4:
 01CA           L12:
 01CA                   .dbline 87
 01CA           ;       {
 01CA                   .dbline 89
 01CA           ;        //ADCjohu-=511-10;//-511+31-3.27371     -10
 01CA           ;        xx=xx+ADCjohu-REF;//
 01CA 40900200          lds R4,_ADCjohu+2
 01CE 50900300          lds R5,_ADCjohu+2+1
 01D2 20900000          lds R2,_ADCjohu
 01D6 30900100          lds R3,_ADCjohu+1
 01DA 80900800          lds R8,_xx+2
 01DE 90900900          lds R9,_xx+2+1
 01E2 60900600          lds R6,_xx
 01E6 70900700          lds R7,_xx+1
 01EA 620C              add R6,R2
 01EC 731C              adc R7,R3
 01EE 841C              adc R8,R4
 01F0 951C              adc R9,R5
 01F2 43EE              ldi R20,227
 01F4 51E0              ldi R21,1
 01F6 60E0              ldi R22,0
 01F8 70E0              ldi R23,0
 01FA 641A              sub R6,R20
 01FC 750A              sbc R7,R21
 01FE 860A              sbc R8,R22
 0200 970A              sbc R9,R23
 0202 70920700          sts _xx+1,R7
 0206 60920600          sts _xx,R6
 020A 90920900          sts _xx+2+1,R9
 020E 80920800          sts _xx+2,R8
 0212                   .dbline 90
 0212           ;       }
 0212           L10:
 0212                   .dbline 91
 0212           ;  ms=1;
 0212 81E0              ldi R24,1
 0214 90E0              ldi R25,0
 0216 90930500          sts _ms+1,R25
 021A 80930400          sts _ms,R24
 021E                   .dbline -2
 021E           L3:
 021E                   .dbline 0 ; func end
 021E 0E940000          xcall pop_xgsetF00C
 0222 0990              ld R0,y+
 0224 0FBE              out 0x3f,R0
 0226 9991              ld R25,y+
 0228 8991              ld R24,y+
 022A 3991              ld R19,y+
 022C 2991              ld R18,y+
 022E 1991              ld R17,y+
 0230 0991              ld R16,y+
 0232 9990              ld R9,y+
 0234 8990              ld R8,y+
 0236 7990              ld R7,y+
 0238 6990              ld R6,y+
 023A 5990              ld R5,y+
 023C 4990              ld R4,y+
 023E 3990              ld R3,y+
 0240 2990              ld R2,y+
 0242 1990              ld R1,y+
 0244 0990              ld R0,y+
 0246 1895              reti
 0248                   .dbend
 0248                   .dbfunc e adc_init _adc_init fV
                        .even
 0248           _adc_init::
 0248                   .dbline -1
 0248                   .dbline 99
 0248           ; //ADCjohu==ADCL;
 0248           ; //PORTD=ADCjohu;
 0248           ; }
 0248           ; 
 0248           ; //ADC initialize
 0248           ; // Conversion time: 3uS
 0248           ; void adc_init(void)
 0248           ; {
 0248                   .dbline 100
 0248           ;  ADCSRA = 0x00; //disable adc
 0248 2224              clr R2
 024A 26B8              out 0x6,R2
 024C                   .dbline 101
 024C           ;  ADMUX = 0x01; //select adc input 0
 024C 81E0              ldi R24,1
 024E 87B9              out 0x7,R24
 0250                   .dbline 102
 0250           ;  ACSR  = 0x80;
 0250 80E8              ldi R24,128
 0252 88B9              out 0x8,R24
 0254                   .dbline 104
 0254           ; // ADCSRB = 0x00;
 0254           ;  ADCSRA = 0xEf;
 0254 8FEE              ldi R24,239
 0256 86B9              out 0x6,R24
 0258                   .dbline -2
 0258           L13:
 0258                   .dbline 0 ; func end
 0258 0895              ret
 025A                   .dbend
                        .area vector(rom, abs)
                        .org 84
 0054 0C942D01          jmp _adc_isr
                        .area text(rom, con, rel)
 025A                   .dbfile C:\DOCUME~1\ZDH\桌面\JOHU_2~1.180\digital_duoji\main.c
 025A                   .dbfunc e adc_isr _adc_isr fV
                        .even
 025A           _adc_isr::
 025A 2A92              st -y,R2
 025C 2FB6              in R2,0x3f
 025E 2A92              st -y,R2
 0260                   .dbline -1
 0260                   .dbline 109
 0260           ; }
 0260           ; 
 0260           ; #pragma interrupt_handler adc_isr:22
 0260           ; void adc_isr(void)
 0260           ; {
 0260                   .dbline 117
 0260           ;  //conversion complete, read value (int) using...
 0260           ;  // value=ADCL;            //Read 8 low bits first (important)
 0260           ;  // value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
 0260           ;  //ADCjohu==ADCL;
 0260           ;  //ADCjohu|=(int)ADCH << 8;
 0260           ;  //PORTD=ADCjohu;
 0260           ;  //adc=1;
 0260           ;  PORTA=ADCL;
 0260 24B0              in R2,0x4
 0262 2BBA              out 0x1b,R2
 0264                   .dbline -2
 0264           L14:
 0264                   .dbline 0 ; func end
 0264 2990              ld R2,y+
 0266 2FBE              out 0x3f,R2
 0268 2990              ld R2,y+
 026A 1895              reti
 026C                   .dbend
 026C                   .dbfunc e init_devices _init_devices fV
                        .even
 026C           _init_devices::
 026C                   .dbline -1
 026C                   .dbline 123
 026C           ; 
 026C           ; }
 026C           ; 
 026C           ; //call this routine to initialize all peripherals
 026C           ; void init_devices(void)
 026C           ; {
 026C                   .dbline 125
 026C           ;  //stop errant interrupts until set up
 026C           ;  CLI(); //disable all interrupts
 026C F894              cli
 026E                   .dbline 126
 026E           ;  XDIV  = 0x00; //xtal divider
 026E 2224              clr R2
 0270 2CBE              out 0x3c,R2
 0272                   .dbline 127
 0272           ;  XMCRA = 0x00; //external memory
 0272 20926D00          sts 109,R2
 0276                   .dbline 128
 0276           ;  port_init();
 0276 C4DE              xcall _port_init
 0278                   .dbline 129
 0278           ;  timer2_init(); 
 0278 D7DE              xcall _timer2_init
 027A                   .dbline 131
 027A           ; 
 027A           ; adc_init();uart1_init();
 027A E6DF              xcall _adc_init
 027C                   .dbline 131
 027C 0CD0              xcall _uart1_init
 027E                   .dbline 133
 027E           ; 
 027E           ;  MCUCR = 0x00;
 027E 2224              clr R2
 0280 25BE              out 0x35,R2
 0282                   .dbline 134
 0282           ;  EICRA = 0x00; //extended ext ints
 0282 20926A00          sts 106,R2
 0286                   .dbline 135
 0286           ;  EICRB = 0x00; //extended ext ints
 0286 2ABE              out 0x3a,R2
 0288                   .dbline 136
 0288           ;  EIMSK = 0x00;
 0288 29BE              out 0x39,R2
 028A                   .dbline 137
 028A           ;  TIMSK = 0x40; //timer interrupt sources
 028A 80E4              ldi R24,64
 028C 87BF              out 0x37,R24
 028E                   .dbline 138
 028E           ;  ETIMSK = 0x00; //extended timer interrupt sources
 028E 20927D00          sts 125,R2
 0292                   .dbline 139
 0292           ;  SEI(); //re-enable interrupts
 0292 7894              sei
 0294                   .dbline -2
 0294           L15:
 0294                   .dbline 0 ; func end
 0294 0895              ret
 0296                   .dbend
 0296                   .dbfunc e uart1_init _uart1_init fV
                        .even
 0296           _uart1_init::

⌨️ 快捷键说明

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