📄 uart.lis
字号:
00E6 .dbfunc e data_load_manage _data_load_manage fV
00E6 ; p -> R20,R21
00E6 ; sum_c -> R22
00E6 ; t -> R10
.even
00E6 _data_load_manage::
00E6 0E940000 xcall push_gset3
00EA .dbline -1
00EA .dbline 60
00EA ; }
00EA ; void data_load_manage()
00EA ; {
00EA .dbline 63
00EA ; unsigned char sum_c, t; //和验算,循环次数
00EA ; unsigned char *p;
00EA ; if((load_no==5)) //下载完成条件
00EA 80910000 lds R24,_load_no
00EE 8530 cpi R24,5
00F0 09F0 breq X0
00F2 44C0 xjmp L17
00F4 X0:
00F4 .dbline 64
00F4 ; {
00F4 .dbline 65
00F4 ; load_init(); //初始下载
00F4 E9DF xcall _load_init
00F6 .dbline 66
00F6 ; sum_c = 0;
00F6 6627 clr R22
00F8 .dbline 67
00F8 ; for (t=0; t<4; t++) //和验算
00F8 AA24 clr R10
00FA 0DC0 xjmp L22
00FC L19:
00FC .dbline 68
00FC .dbline 69
00FC E0910000 lds R30,_load
0100 F0910100 lds R31,_load+1
0104 2080 ldd R2,z+0
0106 620D add R22,R2
0108 .dbline 70
0108 CF01 movw R24,R30
010A 0196 adiw R24,1
010C 90930100 sts _load+1,R25
0110 80930000 sts _load,R24
0114 .dbline 71
0114 L20:
0114 .dbline 67
0114 A394 inc R10
0116 L22:
0116 .dbline 67
0116 8A2D mov R24,R10
0118 8430 cpi R24,4
011A 80F3 brlo L19
011C .dbline 72
011C ; {
011C ; sum_c += (*load);
011C ; load++;
011C ; }
011C ; if (sum_c == (*load))
011C E0910000 lds R30,_load
0120 F0910100 lds R31,_load+1
0124 2080 ldd R2,z+0
0126 6215 cp R22,R2
0128 49F5 brne L23
012A .dbline 73
012A ; { //刷新继电器值
012A .dbline 74
012A ; load = &relay_temp[0];
012A 80E0 ldi R24,<_relay_temp
012C 90E0 ldi R25,>_relay_temp
012E 90930100 sts _load+1,R25
0132 80930000 sts _load,R24
0136 .dbline 75
0136 ; p = Down_load.Relay_out;
0136 40E0 ldi R20,<_Down_load
0138 50E0 ldi R21,>_Down_load
013A .dbline 76
013A ; for (t=0; t<5; t++)
013A AA24 clr R10
013C 13C0 xjmp L28
013E L25:
013E .dbline 77
013E .dbline 78
013E E0910000 lds R30,_load
0142 F0910100 lds R31,_load+1
0146 2080 ldd R2,z+0
0148 FA01 movw R30,R20
014A 2082 std z+0,R2
014C .dbline 79
014C 4F5F subi R20,255 ; offset = 1
014E 5F4F sbci R21,255
0150 .dbline 80
0150 80910000 lds R24,_load
0154 90910100 lds R25,_load+1
0158 0196 adiw R24,1
015A 90930100 sts _load+1,R25
015E 80930000 sts _load,R24
0162 .dbline 81
0162 L26:
0162 .dbline 76
0162 A394 inc R10
0164 L28:
0164 .dbline 76
0164 8A2D mov R24,R10
0166 8530 cpi R24,5
0168 50F3 brlo L25
016A .dbline 82
016A ; {
016A ; *p = *load;
016A ; p++;
016A ; load++;
016A ; }
016A ; updating=1;
016A 81E0 ldi R24,1
016C 80930000 sts _updating,R24
0170 .dbline 83
0170 ; load = &relay_temp[0];
0170 80E0 ldi R24,<_relay_temp
0172 90E0 ldi R25,>_relay_temp
0174 90930100 sts _load+1,R25
0178 80930000 sts _load,R24
017C .dbline 84
017C ; }
017C L23:
017C .dbline 85
017C ; }
017C L17:
017C .dbline 88
017C 84EF ldi R24,500
017E 91E0 ldi R25,1
0180 20900000 lds R2,_load_time
0184 30900100 lds R3,_load_time+1
0188 8215 cp R24,R2
018A 9305 cpc R25,R3
018C 18F4 brsh L29
018E .dbline 89
018E .dbline 90
018E 9CDF xcall _load_init
0190 .dbline 91
0190 0E940000 xcall _relay_init
0194 .dbline 92
0194 L29:
0194 .dbline -2
0194 L16:
0194 0E940000 xcall pop_gset3
0198 .dbline 0 ; func end
0198 0895 ret
019A .dbsym r p 20 pc
019A .dbsym r sum_c 22 c
019A .dbsym r t 10 c
019A .dbend
019A .dbfunc e data_send _data_send fV
019A ; sum_temp -> R20
019A ; l -> R22
019A ; send -> R10,R11
.even
019A _data_send::
019A 0E940000 xcall push_gset3
019E .dbline -1
019E .dbline 96
019E ;
019E ; //长时间没收到上位机信号处理
019E ; if (load_time>500)
019E ; {
019E ; load_init();
019E ; relay_init(); //关闭全部继电器
019E ; }
019E ; }
019E ;
019E ; void data_send()
019E ; {
019E .dbline 99
019E ; unsigned char *send; //发送数据用指针
019E ; unsigned char l; //发送12字节循环
019E ; unsigned char sum_temp=0;//和效验
019E 4427 clr R20
01A0 .dbline 100
01A0 ; send=&send_data.exterior_switch;
01A0 80E0 ldi R24,<_send_data
01A2 90E0 ldi R25,>_send_data
01A4 5C01 movw R10,R24
01A6 .dbline 101
01A6 ; for (l=0; l<17; l++)
01A6 6627 clr R22
01A8 09C0 xjmp L35
01AA L32:
01AA .dbline 102
01AA .dbline 103
01AA F501 movw R30,R10
01AC 2080 ldd R2,z+0
01AE 420D add R20,R2
01B0 .dbline 104
01B0 0081 ldd R16,z+0
01B2 37DF xcall _put_c
01B4 .dbline 105
01B4 C501 movw R24,R10
01B6 0196 adiw R24,1
01B8 5C01 movw R10,R24
01BA .dbline 106
01BA L33:
01BA .dbline 101
01BA 6395 inc R22
01BC L35:
01BC .dbline 101
01BC 6131 cpi R22,17
01BE A8F3 brlo L32
01C0 .dbline 107
01C0 ; {
01C0 ; sum_temp+=*send;
01C0 ; put_c(*send);
01C0 ; send++;
01C0 ; }
01C0 ; put_c(sum_temp);
01C0 042F mov R16,R20
01C2 2FDF xcall _put_c
01C4 .dbline -2
01C4 L31:
01C4 0E940000 xcall pop_gset3
01C8 .dbline 0 ; func end
01C8 0895 ret
01CA .dbsym r sum_temp 20 c
01CA .dbsym r l 22 c
01CA .dbsym r send 10 pc
01CA .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\mysoft\DH980\uart.c
0000 _load::
0000 .blkb 2
0002 .dbsym e load _load pc
0002 _relay_temp::
0002 .blkb 7
0009 .dbsym e relay_temp _relay_temp A[7:7]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -