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

📄 prosses.lis

📁 前段时间做的一个东西,用的24位高精度AD转换芯片CS5532和12DA转换器max531的AVR驱动.芯片用的是ATMEGA8515,开发环境ICCAVR.CS5532的内部寄存器太多,设置有些复杂
💻 LIS
字号:
                         .module prosses.c
                         .area text(rom, con, rel)
 0000                   .dbfile C:\icc\project\cs5532\prosses.c
 0000                   .dbfunc s prosses _prosses fI
                       ;      prosses_i -> R20
                         .even
 0000                 _prosses::
 0000 00D0              rcall push_gset1
 0002                   .dbline -1
 0002                   .dbline 5
                       ; unsigned int prodata[10];
                       ; unsigned int all[5];
                       ; extern unsigned char data[3];  //receive cs5522's number;
                       ;  void prosses(void)
                       ;        {
 0002                   .dbline 7
                       ;          unsigned char prosses_i;
                       ;          prosses_i=10;
 0002 4AE0              ldi R20,10
 0004 1AC0              rjmp L3
 0006                 L2:
 0006                   .dbline 9
 0006                   .dbline 10
 0006 00E8              ldi R16,128
 0008 10E0              ldi R17,0
 000A 00D0              rcall _ADC
 000C                   .dbline 11
 000C 00D0              rcall _ReceiveData
 000E                   .dbline 12
 000E 20900100          lds R2,_data+1
 0012 3324              clr R3
 0014 40900200          lds R4,_data+2
 0018 5524              clr R5
 001A 542C              mov R5,R4
 001C 4424              clr R4
 001E 420C              add R4,R2
 0020 531C              adc R5,R3
 0022 80E0              ldi R24,<_prodata
 0024 90E0              ldi R25,>_prodata
 0026 E42F              mov R30,R20
 0028 FF27              clr R31
 002A 3197              sbiw R30,1
 002C EE0F              lsl R30
 002E FF1F              rol R31
 0030 E80F              add R30,R24
 0032 F91F              adc R31,R25
 0034 4082              std z+0,R4
 0036 5182              std z+1,R5
 0038                   .dbline 13
 0038 4A95              dec R20
 003A                   .dbline 14
 003A                 L3:
 003A                   .dbline 8
                       ;          while(prosses_i)
 003A 4423              tst R20
 003C 21F7              brne L2
 003E                   .dbline 15
                       ;          {  
                       ;             ADC(0x80);       
                       ;            ReceiveData();//接收数据              
                       ;            prodata[prosses_i-1]=data[2]*256+data[1];    
                       ;            prosses_i--;    
                       ;           } 
                       ;          prosses_i=5;
 003E 45E0              ldi R20,5
 0040 26C0              rjmp L8
 0042                 L7:
 0042                   .dbline 17
 0042                   .dbline 17
 0042 242E              mov R2,R20
 0044 3324              clr R3
 0046 220C              lsl R2
 0048 331C              rol R3
 004A 80E0              ldi R24,<_prodata
 004C 90E0              ldi R25,>_prodata
 004E E22D              mov R30,R2
 0050 F32D              mov R31,R3
 0052 3297              sbiw R30,2
 0054 EE0F              lsl R30
 0056 FF1F              rol R31
 0058 E80F              add R30,R24
 005A F91F              adc R31,R25
 005C 4080              ldd R4,z+0
 005E 5180              ldd R5,z+1
 0060 E22D              mov R30,R2
 0062 F32D              mov R31,R3
 0064 3197              sbiw R30,1
 0066 EE0F              lsl R30
 0068 FF1F              rol R31
 006A E80F              add R30,R24
 006C F91F              adc R31,R25
 006E 2080              ldd R2,z+0
 0070 3180              ldd R3,z+1
 0072 240C              add R2,R4
 0074 351C              adc R3,R5
 0076 80E0              ldi R24,<_all
 0078 90E0              ldi R25,>_all
 007A E42F              mov R30,R20
 007C FF27              clr R31
 007E 3197              sbiw R30,1
 0080 EE0F              lsl R30
 0082 FF1F              rol R31
 0084 E80F              add R30,R24
 0086 F91F              adc R31,R25
 0088 2082              std z+0,R2
 008A 3182              std z+1,R3
 008C                   .dbline 18
 008C 4A95              dec R20
 008E                   .dbline 20
 008E                 L8:
 008E                   .dbline 16
                       ;          while(prosses_i)
 008E 4423              tst R20
 0090 C1F6              brne L7
 0092                   .dbline 21
                       ;              { all[prosses_i-1]=(prodata[prosses_i*2-1]+prodata[prosses_i*2-2]);
                       ;                prosses_i--;
                       ;                  
                       ;             }
                       ;         prosses_i=5;
 0092 45E0              ldi R20,5
 0094 12C0              rjmp L11
 0096                 L10:
 0096                   .dbline 23
 0096                   .dbline 24
 0096 80E0              ldi R24,<_all
 0098 90E0              ldi R25,>_all
 009A E42F              mov R30,R20
 009C FF27              clr R31
 009E 3197              sbiw R30,1
 00A0 EE0F              lsl R30
 00A2 FF1F              rol R31
 00A4 E80F              add R30,R24
 00A6 F91F              adc R31,R25
 00A8 2E2E              mov R2,R30
 00AA 3F2E              mov R3,R31
 00AC 4080              ldd R4,z+0
 00AE 5180              ldd R5,z+1
 00B0 5694              lsr R5
 00B2 4794              ror R4
 00B4 4082              std z+0,R4
 00B6 5182              std z+1,R5
 00B8                   .dbline 25
 00B8 4A95              dec R20
 00BA                   .dbline 26
 00BA                 L11:
 00BA                   .dbline 22
                       ;         while(prosses_i)
 00BA 4423              tst R20
 00BC 61F7              brne L10
 00BE                   .dbline 28
                       ;              {
                       ;                all[prosses_i-1]=all[prosses_i-1]/2;
                       ;                prosses_i--;
                       ;              }   
                       ;          //--------------------------
                       ;        all[1]=all[1]+all[0];
 00BE 30900100          lds R3,_all+1
 00C2 20900000          lds R2,_all
 00C6 50900300          lds R5,_all+2+1
 00CA 40900200          lds R4,_all+2
 00CE 420C              add R4,R2
 00D0 531C              adc R5,R3
 00D2 50920300          sts _all+2+1,R5
 00D6 40920200          sts _all+2,R4
 00DA                   .dbline 29
                       ;        all[1]=all[1]/2;
 00DA 242C              mov R2,R4
 00DC 352C              mov R3,R5
 00DE 3694              lsr R3
 00E0 2794              ror R2
 00E2 30920300          sts _all+2+1,R3
 00E6 20920200          sts _all+2,R2
 00EA                   .dbline 30
                       ;        all[3]=all[2]+all[3];
 00EA 30900700          lds R3,_all+6+1
 00EE 20900600          lds R2,_all+6
 00F2 50900500          lds R5,_all+4+1
 00F6 40900400          lds R4,_all+4
 00FA 420C              add R4,R2
 00FC 531C              adc R5,R3
 00FE 50920700          sts _all+6+1,R5
 0102 40920600          sts _all+6,R4
 0106                   .dbline 31
                       ;        all[3]=all[3]/2;
 0106 242C              mov R2,R4
 0108 352C              mov R3,R5
 010A 3694              lsr R3
 010C 2794              ror R2
 010E 30920700          sts _all+6+1,R3
 0112 20920600          sts _all+6,R2
 0116                   .dbline 32
                       ;        all[1]=all[1]+all[3];
 0116 50900300          lds R5,_all+2+1
 011A 40900200          lds R4,_all+2
 011E 420C              add R4,R2
 0120 531C              adc R5,R3
 0122 50920300          sts _all+2+1,R5
 0126 40920200          sts _all+2,R4
 012A                   .dbline 33
                       ;        all[1]=all[1]/2;
 012A 242C              mov R2,R4
 012C 352C              mov R3,R5
 012E 3694              lsr R3
 0130 2794              ror R2
 0132 30920300          sts _all+2+1,R3
 0136 20920200          sts _all+2,R2
 013A                   .dbline 34
                       ;        all[4]=all[4]+all[1];
 013A 50900900          lds R5,_all+8+1
 013E 40900800          lds R4,_all+8
 0142 420C              add R4,R2
 0144 531C              adc R5,R3
 0146 50920900          sts _all+8+1,R5
 014A 40920800          sts _all+8,R4
 014E                   .dbline 35
                       ;        all[4]=all[4]/2;
 014E 242C              mov R2,R4
 0150 352C              mov R3,R5
 0152 3694              lsr R3
 0154 2794              ror R2
 0156 30920900          sts _all+8+1,R3
 015A 20920800          sts _all+8,R2
 015E 0FC0              rjmp L33
 0160                 L32:
 0160                   .dbline 37
 0160                   .dbline 38
 0160 90910900          lds R25,_all+8+1
 0164 80910800          lds R24,_all+8
 0168 8050              subi R24,0
 016A 9140              sbci R25,1
 016C 90930900          sts _all+8+1,R25
 0170 80930800          sts _all+8,R24
 0174                   .dbline 39
 0174 80910200          lds R24,_data+2
 0178 8F5F              subi R24,255    ; addi 1
 017A 80930200          sts _data+2,R24
 017E                   .dbline 41
 017E                 L33:
 017E                   .dbline 36
                       ;        while(all[4]>=256)
 017E 90910900          lds R25,_all+8+1
 0182 80910800          lds R24,_all+8
 0186 8030              cpi R24,0
 0188 E1E0              ldi R30,1
 018A 9E07              cpc R25,R30
 018C 48F7              brsh L32
 018E                   .dbline 42
                       ;             {
                       ;               all[4]=all[4]-256;
                       ;               data[2]++;
                       ;             
                       ;             }
                       ;        data[1]=all[4];
 018E 282E              mov R2,R24
 0190 392E              mov R3,R25
 0192 20920100          sts _data+1,R2
 0196                   .dbline -2
 0196                   .dbline 45
                       ;        
                       ;        
                       ;        }
 0196                 L1:
 0196 00D0              rcall pop_gset1
 0198                   .dbline 0 ; func end
 0198 0895              ret
 019A                   .dbsym r prosses_i 20 c
                         .area bss(ram, con, rel)
 0000                   .dbfile C:\icc\project\cs5532\prosses.c
 0000                 _all::
 0000                   .blkb 10
 000A                   .dbsym s all _all A[10:5]i
 000A                 _prodata::
 000A                   .blkb 20
 001E                   .dbsym s prodata _prodata A[20:10]i

⌨️ 快捷键说明

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