📄 main.lss
字号:
1be: 0f 90 pop r0
1c0: 0f 90 pop r0
1c2: cf 91 pop r28
1c4: df 91 pop r29
1c6: 08 95 ret
000001c8 <ads_senddata>:
/*************************************************************************************/
//ads126发送一字节的数据
unsigned char ads_senddata(unsigned char data) //SPI发送数据,要在外部保证SS = 0
{
1c8: df 93 push r29
1ca: cf 93 push r28
1cc: 0f 92 push r0
1ce: cd b7 in r28, 0x3d ; 61
1d0: de b7 in r29, 0x3e ; 62
1d2: 89 83 std Y+1, r24 ; 0x01
SPDR = data; //启动数据传输
1d4: ef e2 ldi r30, 0x2F ; 47
1d6: f0 e0 ldi r31, 0x00 ; 0
1d8: 89 81 ldd r24, Y+1 ; 0x01
1da: 80 83 st Z, r24
while((SPSR & 0x80) == 0); // 等待传输结束
1dc: ee e2 ldi r30, 0x2E ; 46
1de: f0 e0 ldi r31, 0x00 ; 0
1e0: 80 81 ld r24, Z
1e2: 88 23 and r24, r24
1e4: dc f7 brge .-10 ; 0x1dc <ads_senddata+0x14>
data = SPDR;
1e6: ef e2 ldi r30, 0x2F ; 47
1e8: f0 e0 ldi r31, 0x00 ; 0
1ea: 80 81 ld r24, Z
1ec: 89 83 std Y+1, r24 ; 0x01
return data;
1ee: 89 81 ldd r24, Y+1 ; 0x01
}
1f0: 0f 90 pop r0
1f2: cf 91 pop r28
1f4: df 91 pop r29
1f6: 08 95 ret
000001f8 <ad_write>:
/*************************************************************************************/
void ad_write(unsigned char reg,unsigned char data)//写寄存器。选择寄存器地址,写入的数据。
{
1f8: df 93 push r29
1fa: cf 93 push r28
1fc: 00 d0 rcall .+0 ; 0x1fe <ad_write+0x6>
1fe: cd b7 in r28, 0x3d ; 61
200: de b7 in r29, 0x3e ; 62
202: 89 83 std Y+1, r24 ; 0x01
204: 6a 83 std Y+2, r22 ; 0x02
delay_us(1); //挺时1uS
206: 81 e0 ldi r24, 0x01 ; 1
208: ae df rcall .-164 ; 0x166 <delay_us>
PORTB&=~(1<<PB1); //SPI的CS=0使能
20a: a8 e3 ldi r26, 0x38 ; 56
20c: b0 e0 ldi r27, 0x00 ; 0
20e: e8 e3 ldi r30, 0x38 ; 56
210: f0 e0 ldi r31, 0x00 ; 0
212: 80 81 ld r24, Z
214: 8d 7f andi r24, 0xFD ; 253
216: 8c 93 st X, r24
ads_senddata(0x60+reg);//选择写入寄存器
218: 89 81 ldd r24, Y+1 ; 0x01
21a: 80 5a subi r24, 0xA0 ; 160
21c: d5 df rcall .-86 ; 0x1c8 <ads_senddata>
ads_senddata(data); //写入寄存器数据
21e: 8a 81 ldd r24, Y+2 ; 0x02
220: d3 df rcall .-90 ; 0x1c8 <ads_senddata>
PORTB|=(1<<PB1); //SPI的CS=1,停止
222: a8 e3 ldi r26, 0x38 ; 56
224: b0 e0 ldi r27, 0x00 ; 0
226: e8 e3 ldi r30, 0x38 ; 56
228: f0 e0 ldi r31, 0x00 ; 0
22a: 80 81 ld r24, Z
22c: 82 60 ori r24, 0x02 ; 2
22e: 8c 93 st X, r24
delay_us(1); //挺时1uS
230: 81 e0 ldi r24, 0x01 ; 1
232: 99 df rcall .-206 ; 0x166 <delay_us>
}
234: 0f 90 pop r0
236: 0f 90 pop r0
238: cf 91 pop r28
23a: df 91 pop r29
23c: 08 95 ret
0000023e <ad_read>:
/*************************************************************************************/
unsigned long int ad_read()//读A/D数据。
{
23e: df 93 push r29
240: cf 93 push r28
242: 00 d0 rcall .+0 ; 0x244 <ad_read+0x6>
244: 00 d0 rcall .+0 ; 0x246 <ad_read+0x8>
246: 00 d0 rcall .+0 ; 0x248 <ad_read+0xa>
248: cd b7 in r28, 0x3d ; 61
24a: de b7 in r29, 0x3e ; 62
unsigned long int sum=0;
24c: 1b 82 std Y+3, r1 ; 0x03
24e: 1c 82 std Y+4, r1 ; 0x04
250: 1d 82 std Y+5, r1 ; 0x05
252: 1e 82 std Y+6, r1 ; 0x06
unsigned char r=0,a=0;
254: 1a 82 std Y+2, r1 ; 0x02
256: 19 82 std Y+1, r1 ; 0x01
PORTB&=~(1<<PB1); //SPI的CS=0使能
258: a8 e3 ldi r26, 0x38 ; 56
25a: b0 e0 ldi r27, 0x00 ; 0
25c: e8 e3 ldi r30, 0x38 ; 56
25e: f0 e0 ldi r31, 0x00 ; 0
260: 80 81 ld r24, Z
262: 8d 7f andi r24, 0xFD ; 253
264: 8c 93 st X, r24
ads_senddata(0x80); //启动英雄模范1158的ad转换
266: 80 e8 ldi r24, 0x80 ; 128
268: af df rcall .-162 ; 0x1c8 <ads_senddata>
// while((PIND&0X8)!=0); //DRDY信号低时才能写寄存器 ,等待转换完毕
{
delay_us(10); //挺时1uS
26a: 8a e0 ldi r24, 0x0A ; 10
26c: 7c df rcall .-264 ; 0x166 <delay_us>
for (r=0;r<3;r++) //读取16位数据 前8位是通道信息,后16位是转换数据结果
26e: 1a 82 std Y+2, r1 ; 0x02
270: 23 c0 rjmp .+70 ; 0x2b8 <ad_read+0x7a>
{
a=ads_senddata(0x00); //发送读取数据命令,读取数据,先高位,后低位
272: 80 e0 ldi r24, 0x00 ; 0
274: a9 df rcall .-174 ; 0x1c8 <ads_senddata>
276: 89 83 std Y+1, r24 ; 0x01
sum|=a;
278: 89 81 ldd r24, Y+1 ; 0x01
27a: 28 2f mov r18, r24
27c: 30 e0 ldi r19, 0x00 ; 0
27e: 40 e0 ldi r20, 0x00 ; 0
280: 50 e0 ldi r21, 0x00 ; 0
282: 8b 81 ldd r24, Y+3 ; 0x03
284: 9c 81 ldd r25, Y+4 ; 0x04
286: ad 81 ldd r26, Y+5 ; 0x05
288: be 81 ldd r27, Y+6 ; 0x06
28a: 82 2b or r24, r18
28c: 93 2b or r25, r19
28e: a4 2b or r26, r20
290: b5 2b or r27, r21
292: 8b 83 std Y+3, r24 ; 0x03
294: 9c 83 std Y+4, r25 ; 0x04
296: ad 83 std Y+5, r26 ; 0x05
298: be 83 std Y+6, r27 ; 0x06
sum=sum<<8;
29a: 8b 81 ldd r24, Y+3 ; 0x03
29c: 9c 81 ldd r25, Y+4 ; 0x04
29e: ad 81 ldd r26, Y+5 ; 0x05
2a0: be 81 ldd r27, Y+6 ; 0x06
2a2: ba 2f mov r27, r26
2a4: a9 2f mov r26, r25
2a6: 98 2f mov r25, r24
2a8: 88 27 eor r24, r24
2aa: 8b 83 std Y+3, r24 ; 0x03
2ac: 9c 83 std Y+4, r25 ; 0x04
2ae: ad 83 std Y+5, r26 ; 0x05
2b0: be 83 std Y+6, r27 ; 0x06
PORTB&=~(1<<PB1); //SPI的CS=0使能
ads_senddata(0x80); //启动英雄模范1158的ad转换
// while((PIND&0X8)!=0); //DRDY信号低时才能写寄存器 ,等待转换完毕
{
delay_us(10); //挺时1uS
for (r=0;r<3;r++) //读取16位数据 前8位是通道信息,后16位是转换数据结果
2b2: 8a 81 ldd r24, Y+2 ; 0x02
2b4: 8f 5f subi r24, 0xFF ; 255
2b6: 8a 83 std Y+2, r24 ; 0x02
2b8: 8a 81 ldd r24, Y+2 ; 0x02
2ba: 83 30 cpi r24, 0x03 ; 3
2bc: d0 f2 brcs .-76 ; 0x272 <ad_read+0x34>
{
a=ads_senddata(0x00); //发送读取数据命令,读取数据,先高位,后低位
sum|=a;
sum=sum<<8;
}
sum=sum>>8;
2be: 8b 81 ldd r24, Y+3 ; 0x03
2c0: 9c 81 ldd r25, Y+4 ; 0x04
2c2: ad 81 ldd r26, Y+5 ; 0x05
2c4: be 81 ldd r27, Y+6 ; 0x06
2c6: 89 2f mov r24, r25
2c8: 9a 2f mov r25, r26
2ca: ab 2f mov r26, r27
2cc: bb 27 eor r27, r27
2ce: 8b 83 std Y+3, r24 ; 0x03
2d0: 9c 83 std Y+4, r25 ; 0x04
2d2: ad 83 std Y+5, r26 ; 0x05
2d4: be 83 std Y+6, r27 ; 0x06
}
PORTB|=(1<<PB1); //SPI的CS=1,停止
2d6: a8 e3 ldi r26, 0x38 ; 56
2d8: b0 e0 ldi r27, 0x00 ; 0
2da: e8 e3 ldi r30, 0x38 ; 56
2dc: f0 e0 ldi r31, 0x00 ; 0
2de: 80 81 ld r24, Z
2e0: 82 60 ori r24, 0x02 ; 2
2e2: 8c 93 st X, r24
return sum;
2e4: 8b 81 ldd r24, Y+3 ; 0x03
2e6: 9c 81 ldd r25, Y+4 ; 0x04
2e8: ad 81 ldd r26, Y+5 ; 0x05
2ea: be 81 ldd r27, Y+6 ; 0x06
}
2ec: bc 01 movw r22, r24
2ee: cd 01 movw r24, r26
2f0: 26 96 adiw r28, 0x06 ; 6
2f2: 0f b6 in r0, 0x3f ; 63
2f4: f8 94 cli
2f6: de bf out 0x3e, r29 ; 62
2f8: 0f be out 0x3f, r0 ; 63
2fa: cd bf out 0x3d, r28 ; 61
2fc: cf 91 pop r28
2fe: df 91 pop r29
300: 08 95 ret
00000302 <ads_sum>:
/*************************************************************************************/
unsigned long int ads_sum(unsigned char data)//读A/D数据。
{
302: df 93 push r29
304: cf 93 push r28
306: cd b7 in r28, 0x3d ; 61
308: de b7 in r29, 0x3e ; 62
30a: 27 97 sbiw r28, 0x07 ; 7
30c: 0f b6 in r0, 0x3f ; 63
30e: f8 94 cli
310: de bf out 0x3e, r29 ; 62
312: 0f be out 0x3f, r0 ; 63
314: cd bf out 0x3d, r28 ; 61
316: 8f 83 std Y+7, r24 ; 0x07
unsigned long int aa=0;
318: 1b 82 std Y+3, r1 ; 0x03
31a: 1c 82 std Y+4, r1 ; 0x04
31c: 1d 82 std Y+5, r1 ; 0x05
31e: 1e 82 std Y+6, r1 ; 0x06
unsigned char a=1,i=0;
320: 81 e0 ldi r24, 0x01 ; 1
322: 8a 83 std Y+2, r24 ; 0x02
324: 19 82 std Y+1, r1 ; 0x01
if((0<=data)&&(data<=7))
326: 8f 81 ldd r24, Y+7 ; 0x07
328: 88 30 cpi r24, 0x08 ; 8
32a: c0 f4 brcc .+48 ; 0x35c <ads_sum+0x5a>
{for(i=0;i<data;i++)
32c: 19 82 std Y+1, r1 ; 0x01
32e: 09 c0 rjmp .+18 ; 0x342 <ads_sum+0x40>
a=a*2;
330: 8a 81 ldd r24, Y+2 ; 0x02
332: 88 2f mov r24, r24
334: 90 e0 ldi r25, 0x00 ; 0
336: 88 0f add r24, r24
338: 99 1f adc r25, r25
33a: 8a 83 std Y+2, r24 ; 0x02
unsigned long int ads_sum(unsigned char data)//读A/D数据。
{
unsigned long int aa=0;
unsigned char a=1,i=0;
if((0<=data)&&(data<=7))
{for(i=0;i<data;i++)
33c: 89 81 ldd r24, Y+1 ; 0x01
33e: 8f 5f subi r24, 0xFF ; 255
340: 89 83 std Y+1, r24 ; 0x01
342: 99 81 ldd r25, Y+1 ; 0x01
344: 8f 81 ldd r24, Y+7 ; 0x07
346: 98 17 cp r25, r24
348: 98 f3 brcs .-26 ; 0x330 <ads_sum+0x2e>
a=a*2;
//ad_write(03,a); //第几通道为选通
aa=ad_read(); //读24位A/D数据。
34a: 79 df rcall .-270 ; 0x23e <ad_read>
34c: dc 01 movw r26, r24
34e: cb 01 movw r24, r22
350: 8b 83 std Y+3, r24 ; 0x03
352: 9c 83 std Y+4, r25 ; 0x04
354: ad 83 std Y+5, r26 ; 0x05
356: be 83 std Y+6, r27 ; 0x06
USART_Transmit(0x88);
358: 88 e8 ldi r24, 0x88 ; 136
35a: 9c de rcall .-712 ; 0x94 <USART_Transmit>
}
return aa;
35c: 8b 81 ldd r24, Y+3 ; 0x03
35e: 9c 81 ldd r25, Y+4 ; 0x04
360: ad 81 ldd r26, Y+5 ; 0x05
362: be 81 ldd r27, Y+6 ; 0x06
}
364: bc 01 movw r22, r24
366: cd 01 movw r24, r26
368: 27 96 adiw r28, 0x07 ; 7
36a: 0f b6 in r0, 0x3f ; 63
36c: f8 94 cli
36e: de bf out 0x3e, r29 ; 62
370: 0f be out 0x3f, r0 ; 63
372: cd bf out 0x3d, r28 ; 61
374: cf 91 pop r28
376: df 91 pop r29
378: 08 95 ret
0000037a <ADS1158>:
/*************************************************************************************/
void ADS1158(void) //初始化ADS1256
{
37a: df 93 push r29
37c: cf 93 push r28
37e: cd b7 in r28, 0x3d ; 61
380: de b7 in r29, 0x3e ; 62
DDRD&=~(1<<PD3); //DRDY
382: a1 e3 ldi r26, 0x31 ; 49
384: b0 e0 ldi r27, 0x00 ; 0
386: e1 e3 ldi r30, 0x31 ; 49
388: f0 e0 ldi r31, 0x00 ; 0
38a: 80 81 ld r24, Z
38c: 87 7f andi r24, 0xF7 ; 247
38e: 8c 93 st X, r24
PORTD|=(1<<PD3);
390: a2 e3 ldi r26, 0x32 ; 50
392: b0 e0 ldi r27, 0x00 ; 0
394: e2 e3 ldi r30, 0x32 ; 50
396: f0 e0 ldi r31, 0x00 ; 0
398: 80 81 ld r24, Z
39a: 88 60 ori r24, 0x08 ; 8
39c: 8c 93 st X, r24
DDRD|=(1<<PD4); //START
39e: a1 e3 ldi r26, 0x31 ; 49
3a0: b0 e0 ldi r27, 0x00 ; 0
3a2: e1 e3 ldi r30, 0x31 ; 49
3a4: f0 e0 ldi r31, 0x00 ; 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -