📄 main.lis
字号:
057E .dbline 316
057E ; if(DI_data_pre[i] == DI_data_cur[i]) //去抖处理
057E 80E0 ldi R24,<_DI_data_cur
0580 90E0 ldi R25,>_DI_data_cur
0582 EA2D mov R30,R10
0584 FF27 clr R31
0586 E80F add R30,R24
0588 F91F adc R31,R25
058A 2080 ldd R2,z+0
058C 80E0 ldi R24,<_DI_data_pre
058E 90E0 ldi R25,>_DI_data_pre
0590 EA2D mov R30,R10
0592 FF27 clr R31
0594 E80F add R30,R24
0596 F91F adc R31,R25
0598 3080 ldd R3,z+0
059A 3214 cp R3,R2
059C 79F4 brne L38
059E .dbline 317
059E ; {
059E .dbline 318
059E ; DI_data[i] = DI_data_cur[i];
059E 80E0 ldi R24,<_DI_data_cur
05A0 90E0 ldi R25,>_DI_data_cur
05A2 EA2D mov R30,R10
05A4 FF27 clr R31
05A6 E80F add R30,R24
05A8 F91F adc R31,R25
05AA 2080 ldd R2,z+0
05AC 80E0 ldi R24,<_DI_data
05AE 90E0 ldi R25,>_DI_data
05B0 EA2D mov R30,R10
05B2 FF27 clr R31
05B4 E80F add R30,R24
05B6 F91F adc R31,R25
05B8 2082 std z+0,R2
05BA .dbline 319
05BA ; }
05BA 1CC0 xjmp L39
05BC L38:
05BC .dbline 320
05BC ; else if (DI_data_pre[i] != DI_data_cur[i])
05BC 80E0 ldi R24,<_DI_data_cur
05BE 90E0 ldi R25,>_DI_data_cur
05C0 EA2D mov R30,R10
05C2 FF27 clr R31
05C4 E80F add R30,R24
05C6 F91F adc R31,R25
05C8 2080 ldd R2,z+0
05CA 80E0 ldi R24,<_DI_data_pre
05CC 90E0 ldi R25,>_DI_data_pre
05CE EA2D mov R30,R10
05D0 FF27 clr R31
05D2 E80F add R30,R24
05D4 F91F adc R31,R25
05D6 3080 ldd R3,z+0
05D8 3214 cp R3,R2
05DA 61F0 breq L40
05DC .dbline 321
05DC ; {
05DC .dbline 322
05DC ; DI_data[i] = DI_data_pre[i];
05DC EA2D mov R30,R10
05DE FF27 clr R31
05E0 E80F add R30,R24
05E2 F91F adc R31,R25
05E4 2080 ldd R2,z+0
05E6 80E0 ldi R24,<_DI_data
05E8 90E0 ldi R25,>_DI_data
05EA EA2D mov R30,R10
05EC FF27 clr R31
05EE E80F add R30,R24
05F0 F91F adc R31,R25
05F2 2082 std z+0,R2
05F4 .dbline 323
05F4 ; }
05F4 L40:
05F4 L39:
05F4 .dbline 324
05F4 80E0 ldi R24,<_DI_data_cur
05F6 90E0 ldi R25,>_DI_data_cur
05F8 EA2D mov R30,R10
05FA FF27 clr R31
05FC E80F add R30,R24
05FE F91F adc R31,R25
0600 2080 ldd R2,z+0
0602 80E0 ldi R24,<_DI_data_pre
0604 90E0 ldi R25,>_DI_data_pre
0606 EA2D mov R30,R10
0608 FF27 clr R31
060A E80F add R30,R24
060C F91F adc R31,R25
060E 2082 std z+0,R2
0610 .dbline 325
0610 L35:
0610 .dbline 314
0610 A394 inc R10
0612 L37:
0612 .dbline 314
0612 8A2D mov R24,R10
0614 8C30 cpi R24,12
0616 08F4 brsh X3
0618 B2CF xjmp L34
061A X3:
061A .dbline 326
061A ; DI_data_pre[i] = DI_data_cur[i]; //新旧值更新
061A ; }
061A ; Temp_Flag = 0x00; //清除定时标志
061A 2224 clr R2
061C 20920300 sts _Temp_Flag,R2
0620 .dbline 328
0620 ;
0620 ; Time = 0;
0620 20920200 sts _Time,R2
0624 .dbline 330
0624 ;
0624 ; timer0_init();
0624 0E940000 xcall _timer0_init
0628 .dbline 332
0628 ;
0628 ; TIMSK0 = 0x01; //timer interrupt sources
0628 81E0 ldi R24,1
062A 80936E00 sts 110,R24
062E .dbline 334
062E ;
062E ; WDR();
062E A895 wdr
0630 .dbline 335
0630 ; SEI();
0630 7894 sei
0632 .dbline 336
0632 ; }
0632 L30:
0632 .dbline 338
0632 ;
0632 ; if(Send_Flag == 0x5a)
0632 80910400 lds R24,_Send_Flag
0636 8A35 cpi R24,90
0638 09F0 breq X4
063A 88C0 xjmp L42
063C X4:
063C .dbline 339
063C ; {
063C .dbline 340
063C ; WDR();
063C A895 wdr
063E .dbline 341
063E ; msg[0].ID = id1; //前八个通道数据发送
063E 40901A00 lds R4,_id1+2
0642 50901B00 lds R5,_id1+2+1
0646 20901800 lds R2,_id1
064A 30901900 lds R3,_id1+1
064E 30924100 sts _msg+1,R3
0652 20924000 sts _msg,R2
0656 50924300 sts _msg+2+1,R5
065A 40924200 sts _msg+2,R4
065E .dbline 342
065E ; for(i=0;i<8;i++)
065E AA24 clr R10
0660 0FC0 xjmp L47
0662 L44:
0662 .dbline 343
0662 .dbline 344
0662 80E0 ldi R24,<_DI_data
0664 90E0 ldi R25,>_DI_data
0666 EA2D mov R30,R10
0668 FF27 clr R31
066A E80F add R30,R24
066C F91F adc R31,R25
066E 2080 ldd R2,z+0
0670 80E0 ldi R24,<_msg+4
0672 90E0 ldi R25,>_msg+4
0674 EA2D mov R30,R10
0676 FF27 clr R31
0678 E80F add R30,R24
067A F91F adc R31,R25
067C 2082 std z+0,R2
067E .dbline 345
067E L45:
067E .dbline 342
067E A394 inc R10
0680 L47:
0680 .dbline 342
0680 8A2D mov R24,R10
0682 8830 cpi R24,8
0684 70F3 brlo L44
0686 .dbline 346
0686 ; {
0686 ; msg[0].Data[i] = DI_data[i];
0686 ; }
0686 ; can_tx (msg[0]);
0686 80E0 ldi R24,<_msg
0688 90E0 ldi R25,>_msg
068A FE01 movw R30,R28
068C 3496 adiw R30,4
068E 0CE0 ldi R16,12
0690 10E0 ldi R17,0
0692 FA93 st -y,R31
0694 EA93 st -y,R30
0696 9A93 st -y,R25
0698 8A93 st -y,R24
069A 0E940000 xcall asgnblk
069E 8E01 movw R16,R28
06A0 0C5F subi R16,252 ; offset = 4
06A2 1F4F sbci R17,255
06A4 0E940000 xcall _can_tx
06A8 .dbline 347
06A8 ; send_count++;
06A8 80910000 lds R24,_send_count
06AC 8F5F subi R24,255 ; addi 1
06AE 80930000 sts _send_count,R24
06B2 .dbline 348
06B2 ; msg[1].ID = id2;
06B2 40901600 lds R4,_id2+2
06B6 50901700 lds R5,_id2+2+1
06BA 20901400 lds R2,_id2
06BE 30901500 lds R3,_id2+1
06C2 30924D00 sts _msg+12+1,R3
06C6 20924C00 sts _msg+12,R2
06CA 50924F00 sts _msg+12+2+1,R5
06CE 40924E00 sts _msg+12+2,R4
06D2 .dbline 349
06D2 ; for(i=0;i<4;i++) //后四个通道数据发送
06D2 AA24 clr R10
06D4 0FC0 xjmp L53
06D6 L50:
06D6 .dbline 350
06D6 .dbline 351
06D6 80E0 ldi R24,<_DI_data+8
06D8 90E0 ldi R25,>_DI_data+8
06DA EA2D mov R30,R10
06DC FF27 clr R31
06DE E80F add R30,R24
06E0 F91F adc R31,R25
06E2 2080 ldd R2,z+0
06E4 80E0 ldi R24,<_msg+12+4
06E6 90E0 ldi R25,>_msg+12+4
06E8 EA2D mov R30,R10
06EA FF27 clr R31
06EC E80F add R30,R24
06EE F91F adc R31,R25
06F0 2082 std z+0,R2
06F2 .dbline 352
06F2 L51:
06F2 .dbline 349
06F2 A394 inc R10
06F4 L53:
06F4 .dbline 349
06F4 8A2D mov R24,R10
06F6 8430 cpi R24,4
06F8 70F3 brlo L50
06FA .dbline 353
06FA ; {
06FA ; msg[1].Data[i] = DI_data[i+8];
06FA ; }
06FA ; for(i=4;i<8;i++)
06FA 84E0 ldi R24,4
06FC A82E mov R10,R24
06FE 09C0 xjmp L60
0700 L57:
0700 .dbline 354
0700 .dbline 355
0700 80E0 ldi R24,<_msg+12+4
0702 90E0 ldi R25,>_msg+12+4
0704 EA2D mov R30,R10
0706 FF27 clr R31
0708 E80F add R30,R24
070A F91F adc R31,R25
070C 2224 clr R2
070E 2082 std z+0,R2
0710 .dbline 356
0710 L58:
0710 .dbline 353
0710 A394 inc R10
0712 L60:
0712 .dbline 353
0712 8A2D mov R24,R10
0714 8830 cpi R24,8
0716 A0F3 brlo L57
0718 .dbline 357
0718 ; {
0718 ; msg[1].Data[i]=0x00;
0718 ; }
0718 ; can_tx (msg[1]);
0718 80E0 ldi R24,<_msg+12
071A 90E0 ldi R25,>_msg+12
071C FE01 movw R30,R28
071E 7096 adiw R30,16
0720 0CE0 ldi R16,12
0722 10E0 ldi R17,0
0724 FA93 st -y,R31
0726 EA93 st -y,R30
0728 9A93 st -y,R25
072A 8A93 st -y,R24
072C 0E940000 xcall asgnblk
0730 8E01 movw R16,R28
0732 005F subi R16,240 ; offset = 16
0734 1F4F sbci R17,255
0736 0E940000 xcall _can_tx
073A .dbline 358
073A ; send_count++;
073A 80910000 lds R24,_send_count
073E 8F5F subi R24,255 ; addi 1
0740 80930000 sts _send_count,R24
0744 .dbline 359
0744 ; Send_Flag = 0x00;
0744 2224 clr R2
0746 20920400 sts _Send_Flag,R2
074A .dbline 360
074A ; WDR();
074A A895 wdr
074C .dbline 361
074C ; }
074C L42:
074C .dbline 363
074C L18:
074C .dbline 263
074C D0CD xjmp L17
074E X0:
074E .dbline -2
074E L6:
074E 6C96 adiw R28,28
0750 .dbline 0 ; func end
0750 0895 ret
0752 .dbsym
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -