📄 cs5532.lis
字号:
0110 90E0 ldi R25,>_ADInitData
0112 E62F mov R30,R22
0114 FF27 clr R31
0116 E80F add R30,R24
0118 F91F adc R31,R25
011A 0491 lpm R16,Z
011C 72DF xcall _AD_write
011E .dbline 93
011E L29:
011E .dbline 90
011E 6395 inc R22
0120 L31:
0120 .dbline 90
0120 6332 cpi R22,35
0122 A8F3 brlo L28
0124 .dbline -2
0124 L16:
0124 0E940000 xcall pop_gset2
0128 .dbline 0 ; func end
0128 0895 ret
012A .dbsym r data 20 c
012A .dbsym r i 22 c
012A .dbend
012A .dbfunc e AD_sample _AD_sample fV
012A ; data -> y+0
.even
012A _AD_sample::
012A 2497 sbiw R28,4
012C .dbline -1
012C .dbline 97
012C ; {
012C ; AD_write(ADInitData[i]);
012C ; }
012C ; }
012C ; //cs5532采样
012C ; void AD_sample(void)
012C ; {
012C .dbline 99
012C ; unsigned char data[4];
012C ; AD_write(0x0c);
012C 0CE0 ldi R16,12
012E 69DF xcall _AD_write
0130 .dbline 100
0130 ; data[3]=0;
0130 2224 clr R2
0132 2B82 std y+3,R2
0134 .dbline 101
0134 ; data[2]=AD_read();
0134 8DDF xcall _AD_read
0136 0A83 std y+2,R16
0138 .dbline 102
0138 ; data[1]=AD_read();
0138 8BDF xcall _AD_read
013A 0983 std y+1,R16
013C .dbline 103
013C ; data[0]=AD_read();
013C 89DF xcall _AD_read
013E 0883 std y+0,R16
0140 .dbline 104
0140 ; AD_read();//状态字节(溢出位和通道指示),没有用到,丢弃.............
0140 87DF xcall _AD_read
0142 .dbline -2
0142 L32:
0142 2496 adiw R28,4
0144 .dbline 0 ; func end
0144 0895 ret
0146 .dbsym l data 0 A[4:4]c
0146 .dbend
0146 .dbfunc e CS5532_Txd _CS5532_Txd fV
0146 ; i -> R20
0146 ; dat -> R22
.even
0146 _CS5532_Txd::
0146 0E940000 xcall push_gset2
014A 602F mov R22,R16
014C .dbline -1
014C .dbline 107
014C ; }
014C ; void CS5532_Txd(unsigned char dat)//向CS5532写一字节数据
014C ; {
014C .dbline 109
014C ; unsigned char i;
014C ; CLR_SCK;//时钟低
014C 8EB1 in R24,0xe
014E 8F7B andi R24,191
0150 8EB9 out 0xe,R24
0152 .dbline 110
0152 ; CLR_CS;
0152 8EB1 in R24,0xe
0154 877F andi R24,247
0156 8EB9 out 0xe,R24
0158 .dbline 111
0158 ; delay_loop(1);
0158 01E0 ldi R16,1
015A 10E0 ldi R17,0
015C 0E940000 xcall _delay_loop
0160 .dbline 112
0160 ; for(i=0;i<8;i++)
0160 4427 clr R20
0162 1DC0 xjmp L40
0164 L37:
0164 .dbline 113
0164 ; {
0164 .dbline 114
0164 ; if((dat<<i)&0x80)
0164 062F mov R16,R22
0166 142F mov R17,R20
0168 0E940000 xcall lsl8
016C 802F mov R24,R16
016E 8078 andi R24,128
0170 11F0 breq L41
0172 .dbline 115
0172 ; SET_SDI; //数据送到SPI的SDI口
0172 749A sbi 0xe,4
0174 03C0 xjmp L42
0176 L41:
0176 .dbline 117
0176 ; else
0176 ; CLR_SDI;
0176 8EB1 in R24,0xe
0178 8F7E andi R24,239
017A 8EB9 out 0xe,R24
017C L42:
017C .dbline 118
017C 02E0 ldi R16,2
017E 10E0 ldi R17,0
0180 0E940000 xcall _delay_loop
0184 .dbline 119
0184 769A sbi 0xe,6
0186 .dbline 120
0186 02E0 ldi R16,2
0188 10E0 ldi R17,0
018A 0E940000 xcall _delay_loop
018E .dbline 121
018E 8EB1 in R24,0xe
0190 8F7B andi R24,191
0192 8EB9 out 0xe,R24
0194 .dbline 122
0194 02E0 ldi R16,2
0196 10E0 ldi R17,0
0198 0E940000 xcall _delay_loop
019C .dbline 123
019C L38:
019C .dbline 112
019C 4395 inc R20
019E L40:
019E .dbline 112
019E 4830 cpi R20,8
01A0 08F3 brlo L37
01A2 .dbline 124
01A2 ; delay_loop(2);
01A2 ; SET_SCK; //时钟高
01A2 ; delay_loop(2);
01A2 ; CLR_SCK; //时钟低
01A2 ; delay_loop(2);
01A2 ; }
01A2 ; CLR_SDI;
01A2 8EB1 in R24,0xe
01A4 8F7E andi R24,239
01A6 8EB9 out 0xe,R24
01A8 .dbline -2
01A8 L36:
01A8 0E940000 xcall pop_gset2
01AC .dbline 0 ; func end
01AC 0895 ret
01AE .dbsym r i 20 c
01AE .dbsym r dat 22 c
01AE .dbend
01AE .dbfunc e CS5532_RXD _CS5532_RXD fl
01AE ; c -> y+4
01AE ; RxdTxd4b -> y+0
01AE ; i -> R12
01AE ; j -> R10
.even
01AE _CS5532_RXD::
01AE 0E940000 xcall push_gset4
01B2 2897 sbiw R28,8
01B4 .dbline -1
01B4 .dbline 127
01B4 ; }
01B4 ; unsigned long CS5532_RXD(void)
01B4 ; {
01B4 .dbline 131
01B4 ; unsigned long c;
01B4 ; unsigned char RxdTxd4b[4];
01B4 ; unsigned char i,j;
01B4 ; c=0;
01B4 40E0 ldi R20,0
01B6 50E0 ldi R21,0
01B8 60E0 ldi R22,0
01BA 70E0 ldi R23,0
01BC FE01 movw R30,R28
01BE 4483 std z+4,R20
01C0 5583 std z+5,R21
01C2 6683 std z+6,R22
01C4 7783 std z+7,R23
01C6 .dbline 132
01C6 ; CLR_SDI;
01C6 8EB1 in R24,0xe
01C8 8F7E andi R24,239
01CA 8EB9 out 0xe,R24
01CC .dbline 133
01CC ; for(j=0;j<4;j++)
01CC AA24 clr R10
01CE 35C0 xjmp L47
01D0 L44:
01D0 .dbline 134
01D0 ; {
01D0 .dbline 135
01D0 ; for(i=0;i<8;i++)
01D0 CC24 clr R12
01D2 2EC0 xjmp L51
01D4 L48:
01D4 .dbline 136
01D4 ; {
01D4 .dbline 137
01D4 ; SET_SCK; //时钟高
01D4 769A sbi 0xe,6
01D6 .dbline 138
01D6 ; delay_loop(2);
01D6 02E0 ldi R16,2
01D8 10E0 ldi R17,0
01DA 0E940000 xcall _delay_loop
01DE .dbline 139
01DE ; RxdTxd4b[j]<<=1;
01DE CE01 movw R24,R28
01E0 2A2C mov R2,R10
01E2 3324 clr R3
01E4 280E add R2,R24
01E6 391E adc R3,R25
01E8 F101 movw R30,R2
01EA 4080 ldd R4,z+0
01EC 440C lsl R4
01EE 4082 std z+0,R4
01F0 .dbline 140
01F0 ; if(SDO)
01F0 659B sbis 0xc,5
01F2 0AC0 rjmp L52
01F4 .dbline 141
01F4 ; RxdTxd4b[j]|=0x01; //从SDO读取数据
01F4 CE01 movw R24,R28
01F6 2A2C mov R2,R10
01F8 3324 clr R3
01FA 280E add R2,R24
01FC 391E adc R3,R25
01FE F101 movw R30,R2
0200 8081 ldd R24,z+0
0202 8160 ori R24,1
0204 8083 std z+0,R24
0206 08C0 xjmp L53
0208 L52:
0208 .dbline 143
0208 ; else
0208 ; RxdTxd4b[j]|=0x00; //从SDO读取数据
0208 CE01 movw R24,R28
020A 2A2C mov R2,R10
020C 3324 clr R3
020E 280E add R2,R24
0210 391E adc R3,R25
0212 F101 movw R30,R2
0214 4080 ldd R4,z+0
0216 4082 std z+0,R4
0218 L53:
0218 .dbline 144
0218 02E0 ldi R16,2
021A 10E0 ldi R17,0
021C 0E940000 xcall _delay_loop
0220 .dbline 145
0220 8EB1 in R24,0xe
0222 8F7B andi R24,191
0224 8EB9 out 0xe,R24
0226 .dbline 146
0226 02E0 ldi R16,2
0228 10E0 ldi R17,0
022A 0E940000 xcall _delay_loop
022E .dbline 147
022E L49:
022E .dbline 135
022E C394 inc R12
0230 L51:
0230 .dbline 135
0230 8C2D mov R24,R12
0232 8830 cpi R24,8
0234 08F4 brsh X0
0236 CECF xjmp L48
0238 X0:
0238 .dbline 148
0238 L45:
0238 .dbline 133
0238 A394 inc R10
023A L47:
023A .dbline 133
023A 8A2D mov R24,R10
023C 8430 cpi R24,4
023E 08F4 brsh X1
0240 C7CF xjmp L44
0242 X1:
0242 .dbline 149
0242 ; delay_loop(2);
0242 ; CLR_SCK; //时钟低
0242 ; delay_loop(2);
0242 ; }
0242 ; }
0242 ; c |= RxdTxd4b[0];
0242 2880 ldd R2,y+0
0244 3324 clr R3
0246 4424 clr R4
0248 5524 clr R5
024A FE01 movw R30,R28
024C 6480 ldd R6,z+4
024E 7580 ldd R7,z+5
0250 8680 ldd R8,z+6
0252 9780 ldd R9,z+7
0254 6228 or R6,R2
0256 7328 or R7,R3
0258 8428 or R8,R4
025A 9528 or R9,R5
025C FE01 movw R30,R28
025E 6482 std z+4,R6
0260 7582 std z+5,R7
0262 8682 std z+6,R8
0264 9782 std z+7,R9
0266 .dbline 150
0266 ; c<<=8;
0266 88E0 ldi R24,8
0268 90E0 ldi R25,0
026A FE01 movw R30,R28
026C 2480 ldd R2,z+4
026E 3580 ldd R3,z+5
0270 4680 ldd R4,z+6
0272 5780 ldd R5,z+7
0274 8A93 st -y,R24
0276 8101 movw R16,R2
0278 9201 movw R18,R4
027A 0E940000 xcall lsl32
027E FE01 movw R30,R28
0280 0483 std z+4,R16
0282 1583 std z+5,R17
0284 2683 std z+6,R18
0286 3783 std z+7,R19
0288 .dbline 151
0288 ; c |= RxdTxd4b[1];
0288 2980 ldd R2,y+1
028A 3324 clr R3
028C 4424 clr R4
028E 5524 clr R5
0290 FE01 movw R30,R28
0292 6480 ldd R6,z+4
0294 7580 ldd R7,z+5
0296 8680 ldd R8,z+6
0298 9780 ldd R9,z+7
029A 6228 or R6,R2
029C 7328 or R7,R3
029E 8428 or R8,R4
02A0 9528 or R9,R5
02A2 FE01 movw R30,R28
02A4 6482 std z+4,R6
02A6 7582 std z+5,R7
02A8 8682 std z+6,R8
02AA 9782 std z+7,R9
02AC .dbline 152
02AC ; c<<=8;
02AC 88E0 ldi R24,8
02AE 90E0 ldi R25,0
02B0 FE01 movw R30,R28
02B2 2480 ldd R2,z+4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -