📄 coder.lss
字号:
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
else
__ticks = (uint16_t)__tmp;
224: ea ef ldi r30, 0xFA ; 250
226: f0 e0 ldi r31, 0x00 ; 0
228: cf 01 movw r24, r30
22a: 01 97 sbiw r24, 0x01 ; 1
22c: f1 f7 brne .-4 ; 0x22a <start_i2c+0x8>
_delay_ms(1);
SCL_1;
22e: c1 9a sbi 0x18, 1 ; 24
230: 84 ef ldi r24, 0xF4 ; 244
232: 91 e0 ldi r25, 0x01 ; 1
234: dc 01 movw r26, r24
236: 11 97 sbiw r26, 0x01 ; 1
238: f1 f7 brne .-4 ; 0x236 <start_i2c+0x14>
_delay_ms(2);
SDA_0;
23a: c0 98 cbi 0x18, 0 ; 24
23c: 01 97 sbiw r24, 0x01 ; 1
23e: f1 f7 brne .-4 ; 0x23c <start_i2c+0x1a>
_delay_ms(2);
SCL_0;
240: c1 98 cbi 0x18, 1 ; 24
242: cf 01 movw r24, r30
244: 01 97 sbiw r24, 0x01 ; 1
246: f1 f7 brne .-4 ; 0x244 <start_i2c+0x22>
248: 08 95 ret
0000024a <stop_i2c>:
_delay_ms(1);
}
/***********************************************************************************************
*结束总线函数
*函数原型:void stop_i2c();
*功能:结束I2C总线,即发送I2C结束条件
***********************************************************************************************/
void stop_i2c(void)
{
SDA_0;
24a: c0 98 cbi 0x18, 0 ; 24
24c: ea ef ldi r30, 0xFA ; 250
24e: f0 e0 ldi r31, 0x00 ; 0
250: cf 01 movw r24, r30
252: 01 97 sbiw r24, 0x01 ; 1
254: f1 f7 brne .-4 ; 0x252 <stop_i2c+0x8>
_delay_ms(1);
SCL_1;
256: c1 9a sbi 0x18, 1 ; 24
258: 84 ef ldi r24, 0xF4 ; 244
25a: 91 e0 ldi r25, 0x01 ; 1
25c: 01 97 sbiw r24, 0x01 ; 1
25e: f1 f7 brne .-4 ; 0x25c <stop_i2c+0x12>
_delay_ms(2);
SDA_1;
260: c0 9a sbi 0x18, 0 ; 24
262: cf 01 movw r24, r30
264: 01 97 sbiw r24, 0x01 ; 1
266: f1 f7 brne .-4 ; 0x264 <stop_i2c+0x1a>
268: 08 95 ret
0000026a <sendbyte>:
_delay_ms(1);
}
/***********************************************************************************************
*字节数据传送函数
*函数原型:void sendbyte(uchar c);
*功能:将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作(不应答
* 或非应答都使ack=0,表示应答失败)。发送数据正常,ack=1;ack=0表示被控器无应答或损坏
***********************************************************************************************/
void sendbyte(unsigned char c)
{
26a: a8 2f mov r26, r24
26c: bb 27 eor r27, r27
26e: 26 e0 ldi r18, 0x06 ; 6
270: 30 e0 ldi r19, 0x00 ; 0
272: 40 e0 ldi r20, 0x00 ; 0
274: 50 e0 ldi r21, 0x00 ; 0
276: 60 e0 ldi r22, 0x00 ; 0
278: 70 e0 ldi r23, 0x00 ; 0
27a: e7 e0 ldi r30, 0x07 ; 7
unsigned char bitcnt;
for(bitcnt=0;bitcnt<8;bitcnt++)
{
if((c<<bitcnt)&0x80)
27c: cd 01 movw r24, r26
27e: 06 2e mov r0, r22
280: 02 c0 rjmp .+4 ; 0x286 <sendbyte+0x1c>
282: 88 0f add r24, r24
284: 99 1f adc r25, r25
286: 0a 94 dec r0
288: e2 f7 brpl .-8 ; 0x282 <sendbyte+0x18>
28a: 87 ff sbrs r24, 7
28c: 02 c0 rjmp .+4 ; 0x292 <sendbyte+0x28>
SDA_1;
28e: c0 9a sbi 0x18, 0 ; 24
290: 01 c0 rjmp .+2 ; 0x294 <sendbyte+0x2a>
else
SDA_0;
292: c0 98 cbi 0x18, 0 ; 24
294: 82 2f mov r24, r18
296: 8a 95 dec r24
298: f1 f7 brne .-4 ; 0x296 <sendbyte+0x2c>
_delay_us(20);
SCL_1;
29a: c1 9a sbi 0x18, 1 ; 24
29c: 82 2f mov r24, r18
29e: 8a 95 dec r24
2a0: f1 f7 brne .-4 ; 0x29e <sendbyte+0x34>
_delay_us(20);
SCL_0;
2a2: c1 98 cbi 0x18, 1 ; 24
2a4: e1 50 subi r30, 0x01 ; 1
2a6: 6f 5f subi r22, 0xFF ; 255
2a8: 7f 4f sbci r23, 0xFF ; 255
2aa: e7 ff sbrs r30, 7
2ac: e7 cf rjmp .-50 ; 0x27c <sendbyte+0x12>
2ae: 80 e1 ldi r24, 0x10 ; 16
2b0: 98 2f mov r25, r24
2b2: 9a 95 dec r25
2b4: f1 f7 brne .-4 ; 0x2b2 <sendbyte+0x48>
}
_delay_us(50);
SDA_1;
2b6: c0 9a sbi 0x18, 0 ; 24
2b8: 98 2f mov r25, r24
2ba: 9a 95 dec r25
2bc: f1 f7 brne .-4 ; 0x2ba <sendbyte+0x50>
_delay_us(50);
SCL_1;
2be: c1 9a sbi 0x18, 1 ; 24
2c0: 98 2f mov r25, r24
2c2: 9a 95 dec r25
2c4: f1 f7 brne .-4 ; 0x2c2 <sendbyte+0x58>
_delay_us(50);
SCL_0;
2c6: c1 98 cbi 0x18, 1 ; 24
2c8: 8a 95 dec r24
2ca: f1 f7 brne .-4 ; 0x2c8 <sendbyte+0x5e>
2cc: 08 95 ret
000002ce <Isendstr>:
_delay_us(50);
}
/***********************************************************************************************
*向有子地址器件发送多字节数据函数
*函数原型:bit Isendstr(uchar sla,uchar suba,uchar *s,uchar no);
*功能:从启动总线到发送地址、子地址、数据,直至结束总线的全过程;从器件地址sla,子地址suba,
* 发送的内容是s指向的内容,发送no个字节。如果返回1则表示操作成功;否则操作有误
***********************************************************************************************/
uint8 Isendstr(uint8 sla,uint8 suba,uint8 *s,uint8 nbyte)
{
2ce: ff 92 push r15
2d0: 0f 93 push r16
2d2: 1f 93 push r17
2d4: cf 93 push r28
2d6: df 93 push r29
2d8: 18 2f mov r17, r24
2da: 06 2f mov r16, r22
2dc: ea 01 movw r28, r20
2de: f2 2e mov r15, r18
uint8 i;
start_i2c();
2e0: 0e 94 11 01 call 0x222 <start_i2c>
sendbyte(sla);
2e4: 81 2f mov r24, r17
2e6: 0e 94 35 01 call 0x26a <sendbyte>
sendbyte(suba);
2ea: 80 2f mov r24, r16
2ec: 0e 94 35 01 call 0x26a <sendbyte>
for(i=0;i<nbyte;i++)
2f0: 10 e0 ldi r17, 0x00 ; 0
2f2: 1f 15 cp r17, r15
2f4: 48 f4 brcc .+18 ; 0x308 <Isendstr+0x3a>
{
sendbyte(*s);
2f6: 89 91 ld r24, Y+
2f8: 0e 94 35 01 call 0x26a <sendbyte>
2fc: 84 ef ldi r24, 0xF4 ; 244
2fe: 91 e0 ldi r25, 0x01 ; 1
300: 01 97 sbiw r24, 0x01 ; 1
302: f1 f7 brne .-4 ; 0x300 <Isendstr+0x32>
304: 1f 5f subi r17, 0xFF ; 255
306: f5 cf rjmp .-22 ; 0x2f2 <Isendstr+0x24>
_delay_ms(2);
s++;
}
stop_i2c();
308: 0e 94 25 01 call 0x24a <stop_i2c>
return(1);
}
30c: 81 e0 ldi r24, 0x01 ; 1
30e: 90 e0 ldi r25, 0x00 ; 0
310: df 91 pop r29
312: cf 91 pop r28
314: 1f 91 pop r17
316: 0f 91 pop r16
318: ff 90 pop r15
31a: 08 95 ret
0000031c <Disp_i2c_led>:
void Disp_i2c_led(unsigned long show_data)
{
31c: 2f 92 push r2
31e: 3f 92 push r3
320: 4f 92 push r4
322: 5f 92 push r5
324: 6f 92 push r6
326: 7f 92 push r7
328: 8f 92 push r8
32a: 9f 92 push r9
32c: af 92 push r10
32e: bf 92 push r11
330: cf 92 push r12
332: df 92 push r13
334: ef 92 push r14
336: ff 92 push r15
338: 0f 93 push r16
33a: 1f 93 push r17
33c: cf 93 push r28
33e: df 93 push r29
340: cd b7 in r28, 0x3d ; 61
342: de b7 in r29, 0x3e ; 62
344: 60 97 sbiw r28, 0x10 ; 16
346: 0f b6 in r0, 0x3f ; 63
348: f8 94 cli
34a: de bf out 0x3e, r29 ; 62
34c: 0f be out 0x3f, r0 ; 63
34e: cd bf out 0x3d, r28 ; 61
350: 3b 01 movw r6, r22
352: 4c 01 movw r8, r24
unsigned char Q=0,S=0,B=0,G=0;
unsigned char temp_buf[10];
unsigned long temp = 0;
temp = show_data;
temp_buf[0] = temp/10000000;
354: 30 e8 ldi r19, 0x80 ; 128
356: e3 2e mov r14, r19
358: 36 e9 ldi r19, 0x96 ; 150
35a: f3 2e mov r15, r19
35c: 38 e9 ldi r19, 0x98 ; 152
35e: 03 2f mov r16, r19
360: 11 2d mov r17, r1
362: a8 01 movw r20, r16
364: 97 01 movw r18, r14
366: 0e 94 dd 02 call 0x5ba <__udivmodsi4>
36a: da 01 movw r26, r20
36c: c9 01 movw r24, r18
temp_buf[1] = (temp-temp_buf[0]*10000000)/1000000;
36e: 2b 87 std Y+11, r18 ; 0x0b
370: 99 27 eor r25, r25
372: aa 27 eor r26, r26
374: bb 27 eor r27, r27
376: bc 01 movw r22, r24
378: cd 01 movw r24, r26
37a: a8 01 movw r20, r16
37c: 97 01 movw r18, r14
37e: 0e 94 be 02 call 0x57c <__mulsi3>
382: dc 01 movw r26, r24
384: cb 01 movw r24, r22
386: 64 01 movw r12, r8
388: 53 01 movw r10, r6
38a: a8 1a sub r10, r24
38c: b9 0a sbc r11, r25
38e: ca 0a sbc r12, r26
390: db 0a sbc r13, r27
392: 20 e4 ldi r18, 0x40 ; 64
394: e2 2e mov r14, r18
396: 22 e4 ldi r18, 0x42 ; 66
398: f2 2e mov r15, r18
39a: 2f e0 ldi r18, 0x0F ; 15
39c: 02 2f mov r16, r18
39e: 11 2d mov r17, r1
3a0: c6 01 movw r24, r12
3a2: b5 01 movw r22, r10
3a4: a8 01 movw r20, r16
3a6: 97 01 movw r18, r14
3a8: 0e 94 dd 02 call 0x5ba <__udivmodsi4>
3ac: da 01 movw r26, r20
3ae: c9 01 movw r24, r18
temp_buf[2] = (temp-temp_buf[0]*10000000-temp_buf[1]*1000000)/100000;
3b0: 2c 87 std Y+12, r18 ; 0x0c
3b2: 99 27 eor r25, r25
3b4: aa 27 eor r26, r26
3b6: bb 27 eor r27, r27
3b8: bc 01 movw r22, r24
3ba: cd 01 movw r24, r26
3bc: a8 01 movw r20, r16
3be: 97 01 movw r18, r14
3c0: 0e 94 be 02 call 0x57c <__mulsi3>
3c4: dc 01 movw r26, r24
3c6: cb 01 movw r24, r22
3c8: a8 1a sub r10, r24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -