📄 main.lss
字号:
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
PORTB&=~(1<<PB1); //SPI的CS=0使能
206: a8 e3 ldi r26, 0x38 ; 56
208: b0 e0 ldi r27, 0x00 ; 0
20a: e8 e3 ldi r30, 0x38 ; 56
20c: f0 e0 ldi r31, 0x00 ; 0
20e: 80 81 ld r24, Z
210: 8d 7f andi r24, 0xFD ; 253
212: 8c 93 st X, r24
//while((PIND&0X8)!=0); //DRDY信号高时才能写寄存器
ads_senddata(0x60+reg);//选择写入寄存器
214: 89 81 ldd r24, Y+1 ; 0x01
216: 80 5a subi r24, 0xA0 ; 160
218: d7 df rcall .-82 ; 0x1c8 <ads_senddata>
ads_senddata(data); //写入1个寄存器数据
21a: 8a 81 ldd r24, Y+2 ; 0x02
21c: d5 df rcall .-86 ; 0x1c8 <ads_senddata>
PORTB|=(1<<PB1); //SPI的CS=1,停止
21e: a8 e3 ldi r26, 0x38 ; 56
220: b0 e0 ldi r27, 0x00 ; 0
222: e8 e3 ldi r30, 0x38 ; 56
224: f0 e0 ldi r31, 0x00 ; 0
226: 80 81 ld r24, Z
228: 82 60 ori r24, 0x02 ; 2
22a: 8c 93 st X, r24
delay_us(100); //挺时1uS
22c: 84 e6 ldi r24, 0x64 ; 100
22e: 9b df rcall .-202 ; 0x166 <delay_us>
}
230: 0f 90 pop r0
232: 0f 90 pop r0
234: cf 91 pop r28
236: df 91 pop r29
238: 08 95 ret
0000023a <ad_read>:
/*************************************************************************************/
unsigned long int ad_read()//读A/D数据。
{
23a: df 93 push r29
23c: cf 93 push r28
23e: 00 d0 rcall .+0 ; 0x240 <ad_read+0x6>
240: 00 d0 rcall .+0 ; 0x242 <ad_read+0x8>
242: 00 d0 rcall .+0 ; 0x244 <ad_read+0xa>
244: cd b7 in r28, 0x3d ; 61
246: de b7 in r29, 0x3e ; 62
unsigned long int sum=0;
248: 1b 82 std Y+3, r1 ; 0x03
24a: 1c 82 std Y+4, r1 ; 0x04
24c: 1d 82 std Y+5, r1 ; 0x05
24e: 1e 82 std Y+6, r1 ; 0x06
unsigned char r=0,a=0;
250: 1a 82 std Y+2, r1 ; 0x02
252: 19 82 std Y+1, r1 ; 0x01
PORTB&=~(1<<PB1); //SPI的CS=0使能
254: a8 e3 ldi r26, 0x38 ; 56
256: b0 e0 ldi r27, 0x00 ; 0
258: e8 e3 ldi r30, 0x38 ; 56
25a: f0 e0 ldi r31, 0x00 ; 0
25c: 80 81 ld r24, Z
25e: 8d 7f andi r24, 0xFD ; 253
260: 8c 93 st X, r24
//ads_senddata(0xfc); //SYNC AD同步
//ads_senddata(0xff); //WAKEUP 唤醒,并启动AD转换
// while((PIND&0X8)!=0); //DRDY信号低时才能写寄存器 ,等待转换完毕
{
ads_senddata(0x80); //ad
262: 80 e8 ldi r24, 0x80 ; 128
264: b1 df rcall .-158 ; 0x1c8 <ads_senddata>
PORTB|=(1<<PB1); //SPI的CS=1,停止
266: a8 e3 ldi r26, 0x38 ; 56
268: b0 e0 ldi r27, 0x00 ; 0
26a: e8 e3 ldi r30, 0x38 ; 56
26c: f0 e0 ldi r31, 0x00 ; 0
26e: 80 81 ld r24, Z
270: 82 60 ori r24, 0x02 ; 2
272: 8c 93 st X, r24
delay_us(500); //挺时1uS
274: 84 ef ldi r24, 0xF4 ; 244
276: 77 df rcall .-274 ; 0x166 <delay_us>
PORTB&=~(1<<PB1); //SPI的CS=0使能
278: a8 e3 ldi r26, 0x38 ; 56
27a: b0 e0 ldi r27, 0x00 ; 0
27c: e8 e3 ldi r30, 0x38 ; 56
27e: f0 e0 ldi r31, 0x00 ; 0
280: 80 81 ld r24, Z
282: 8d 7f andi r24, 0xFD ; 253
284: 8c 93 st X, r24
delay_us(10); //挺时1uS
286: 8a e0 ldi r24, 0x0A ; 10
288: 6e df rcall .-292 ; 0x166 <delay_us>
a=ads_senddata(0x00); //发送读取数据命令
28a: 80 e0 ldi r24, 0x00 ; 0
28c: 9d df rcall .-198 ; 0x1c8 <ads_senddata>
28e: 89 83 std Y+1, r24 ; 0x01
USART_Transmit(a);
290: 89 81 ldd r24, Y+1 ; 0x01
292: 00 df rcall .-512 ; 0x94 <USART_Transmit>
delay_us(100); //挺时1uS
294: 84 e6 ldi r24, 0x64 ; 100
296: 67 df rcall .-306 ; 0x166 <delay_us>
for (r=0;r<2;r++) //读取24位数据
298: 1a 82 std Y+2, r1 ; 0x02
29a: 25 c0 rjmp .+74 ; 0x2e6 <ad_read+0xac>
{
a=ads_senddata(0x00); //读取数据,先高位,后低位
29c: 80 e0 ldi r24, 0x00 ; 0
29e: 94 df rcall .-216 ; 0x1c8 <ads_senddata>
2a0: 89 83 std Y+1, r24 ; 0x01
USART_Transmit(a);
2a2: 89 81 ldd r24, Y+1 ; 0x01
2a4: f7 de rcall .-530 ; 0x94 <USART_Transmit>
sum|=a;
2a6: 89 81 ldd r24, Y+1 ; 0x01
2a8: 28 2f mov r18, r24
2aa: 30 e0 ldi r19, 0x00 ; 0
2ac: 40 e0 ldi r20, 0x00 ; 0
2ae: 50 e0 ldi r21, 0x00 ; 0
2b0: 8b 81 ldd r24, Y+3 ; 0x03
2b2: 9c 81 ldd r25, Y+4 ; 0x04
2b4: ad 81 ldd r26, Y+5 ; 0x05
2b6: be 81 ldd r27, Y+6 ; 0x06
2b8: 82 2b or r24, r18
2ba: 93 2b or r25, r19
2bc: a4 2b or r26, r20
2be: b5 2b or r27, r21
2c0: 8b 83 std Y+3, r24 ; 0x03
2c2: 9c 83 std Y+4, r25 ; 0x04
2c4: ad 83 std Y+5, r26 ; 0x05
2c6: be 83 std Y+6, r27 ; 0x06
sum=sum<<8;
2c8: 8b 81 ldd r24, Y+3 ; 0x03
2ca: 9c 81 ldd r25, Y+4 ; 0x04
2cc: ad 81 ldd r26, Y+5 ; 0x05
2ce: be 81 ldd r27, Y+6 ; 0x06
2d0: ba 2f mov r27, r26
2d2: a9 2f mov r26, r25
2d4: 98 2f mov r25, r24
2d6: 88 27 eor r24, r24
2d8: 8b 83 std Y+3, r24 ; 0x03
2da: 9c 83 std Y+4, r25 ; 0x04
2dc: ad 83 std Y+5, r26 ; 0x05
2de: be 83 std Y+6, r27 ; 0x06
PORTB&=~(1<<PB1); //SPI的CS=0使能
delay_us(10); //挺时1uS
a=ads_senddata(0x00); //发送读取数据命令
USART_Transmit(a);
delay_us(100); //挺时1uS
for (r=0;r<2;r++) //读取24位数据
2e0: 8a 81 ldd r24, Y+2 ; 0x02
2e2: 8f 5f subi r24, 0xFF ; 255
2e4: 8a 83 std Y+2, r24 ; 0x02
2e6: 8a 81 ldd r24, Y+2 ; 0x02
2e8: 82 30 cpi r24, 0x02 ; 2
2ea: c0 f2 brcs .-80 ; 0x29c <ad_read+0x62>
sum|=a;
sum=sum<<8;
}
//sum=sum>>8;
}
PORTB|=(1<<PB1); //SPI的CS=1,停止
2ec: a8 e3 ldi r26, 0x38 ; 56
2ee: b0 e0 ldi r27, 0x00 ; 0
2f0: e8 e3 ldi r30, 0x38 ; 56
2f2: f0 e0 ldi r31, 0x00 ; 0
2f4: 80 81 ld r24, Z
2f6: 82 60 ori r24, 0x02 ; 2
2f8: 8c 93 st X, r24
return sum;
2fa: 8b 81 ldd r24, Y+3 ; 0x03
2fc: 9c 81 ldd r25, Y+4 ; 0x04
2fe: ad 81 ldd r26, Y+5 ; 0x05
300: be 81 ldd r27, Y+6 ; 0x06
delay_us(1); //挺时1uS
}
302: bc 01 movw r22, r24
304: cd 01 movw r24, r26
306: 26 96 adiw r28, 0x06 ; 6
308: 0f b6 in r0, 0x3f ; 63
30a: f8 94 cli
30c: de bf out 0x3e, r29 ; 62
30e: 0f be out 0x3f, r0 ; 63
310: cd bf out 0x3d, r28 ; 61
312: cf 91 pop r28
314: df 91 pop r29
316: 08 95 ret
00000318 <ads_sum>:
/*************************************************************************************/
unsigned long int ads_sum(unsigned char data)//读A/D数据。
{
318: df 93 push r29
31a: cf 93 push r28
31c: 00 d0 rcall .+0 ; 0x31e <ads_sum+0x6>
31e: 00 d0 rcall .+0 ; 0x320 <ads_sum+0x8>
320: 0f 92 push r0
322: cd b7 in r28, 0x3d ; 61
324: de b7 in r29, 0x3e ; 62
326: 8d 83 std Y+5, r24 ; 0x05
unsigned long int aa=0;
328: 19 82 std Y+1, r1 ; 0x01
32a: 1a 82 std Y+2, r1 ; 0x02
32c: 1b 82 std Y+3, r1 ; 0x03
32e: 1c 82 std Y+4, r1 ; 0x04
ad_write(01,0x80+data); //第几通道为选通
330: 8d 81 ldd r24, Y+5 ; 0x05
332: 80 58 subi r24, 0x80 ; 128
334: 68 2f mov r22, r24
336: 81 e0 ldi r24, 0x01 ; 1
338: 5f df rcall .-322 ; 0x1f8 <ad_write>
ads_senddata(0xf0); //自校准
33a: 80 ef ldi r24, 0xF0 ; 240
33c: 45 df rcall .-374 ; 0x1c8 <ads_senddata>
aa=ad_read(); //读24位A/D数据。
33e: 7d df rcall .-262 ; 0x23a <ad_read>
340: dc 01 movw r26, r24
342: cb 01 movw r24, r22
344: 89 83 std Y+1, r24 ; 0x01
346: 9a 83 std Y+2, r25 ; 0x02
348: ab 83 std Y+3, r26 ; 0x03
34a: bc 83 std Y+4, r27 ; 0x04
return aa;
34c: 89 81 ldd r24, Y+1 ; 0x01
34e: 9a 81 ldd r25, Y+2 ; 0x02
350: ab 81 ldd r26, Y+3 ; 0x03
352: bc 81 ldd r27, Y+4 ; 0x04
}
354: bc 01 movw r22, r24
356: cd 01 movw r24, r26
358: 0f 90 pop r0
35a: 0f 90 pop r0
35c: 0f 90 pop r0
35e: 0f 90 pop r0
360: 0f 90 pop r0
362: cf 91 pop r28
364: df 91 pop r29
366: 08 95 ret
00000368 <ADS1158>:
/*************************************************************************************/
void ADS1158(void) //初始化ADS1256
{
368: df 93 push r29
36a: cf 93 push r28
36c: cd b7 in r28, 0x3d ; 61
36e: de b7 in r29, 0x3e ; 62
DDRD&=~(1<<PD3); //DRDY
370: a1 e3 ldi r26, 0x31 ; 49
372: b0 e0 ldi r27, 0x00 ; 0
374: e1 e3 ldi r30, 0x31 ; 49
376: f0 e0 ldi r31, 0x00 ; 0
378: 80 81 ld r24, Z
37a: 87 7f andi r24, 0xF7 ; 247
37c: 8c 93 st X, r24
PORTD|=(1<<PD3);
37e: a2 e3 ldi r26, 0x32 ; 50
380: b0 e0 ldi r27, 0x00 ; 0
382: e2 e3 ldi r30, 0x32 ; 50
384: f0 e0 ldi r31, 0x00 ; 0
386: 80 81 ld r24, Z
388: 88 60 ori r24, 0x08 ; 8
38a: 8c 93 st X, r24
DDRD|=(1<<PD4); //START
38c: a1 e3 ldi r26, 0x31 ; 49
38e: b0 e0 ldi r27, 0x00 ; 0
390: e1 e3 ldi r30, 0x31 ; 49
392: f0 e0 ldi r31, 0x00 ; 0
394: 80 81 ld r24, Z
396: 80 61 ori r24, 0x10 ; 16
398: 8c 93 st X, r24
PORTD&=~(1<<PD4);
39a: a2 e3 ldi r26, 0x32 ; 50
39c: b0 e0 ldi r27, 0x00 ; 0
39e: e2 e3 ldi r30, 0x32 ; 50
3a0: f0 e0 ldi r31, 0x00 ; 0
3a2: 80 81 ld r24, Z
3a4: 8f 7e andi r24, 0xEF ; 239
3a6: 8c 93 st X, r24
PORTB&=~(1<<PB2); //复位ADS1256
3a8: a8 e3 ldi r26, 0x38 ; 56
3aa: b0 e0 ldi r27, 0x00 ; 0
3ac: e8 e3 ldi r30, 0x38 ; 56
3ae: f0 e0 ldi r31, 0x00 ; 0
3b0: 80 81 ld r24, Z
3b2: 8b 7f andi r24, 0xFB ; 251
3b4: 8c 93 st X, r24
PORTB|=1<<PB2;
3b6: a8 e3 ldi r26, 0x38 ; 56
3b8: b0 e0 ldi r27, 0x00 ; 0
3ba: e8 e3 ldi r30, 0x38 ; 56
3bc: f0 e0 ldi r31, 0x00 ; 0
3be: 80 81 ld r24, Z
3c0: 84 60 ori r24, 0x04 ; 4
3c2: 8c 93 st X, r24
ad_write(0,0x02);
3c4: 62 e0 ldi r22, 0x02 ; 2
3c6: 80 e0 ldi r24, 0x00 ; 0
3c8: 17 df rcall .-466 ; 0x1f8 <ad_write>
ad_write(1,0x03);
3ca: 63 e0 ldi r22, 0x03 ; 3
3cc: 81 e0 ldi r24, 0x01 ; 1
3ce: 14 df rcall .-472 ; 0x1f8 <ad_write>
ad_write(2,0x00);
3d0: 60 e0 ldi r22, 0x00 ; 0
3d2: 82 e0 ldi r24, 0x02 ; 2
3d4: 11 df rcall .-478 ; 0x1f8 <ad_write>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -