📄 prosses.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 + -