📄 main.s
字号:
lds R25,_RUN+1
adiw R24,1
sts _RUN+1,R25
sts _RUN,R24
.dbline 207
; if(Time>25)
ldi R24,25
lds R2,_Time
cp R24,R2
brsh L2
.dbline 208
; {
.dbline 209
; Time = 0;
clr R2
sts _Time,R2
.dbline 210
; Temp_Flag = 0x5a;
ldi R24,90
sts _Temp_Flag,R24
.dbline 211
; RUN_LED();
xcall _RUN_LED
.dbline 212
; }
L2:
.dbline 213
ldi R24,50
ldi R25,0
lds R2,_RUN
lds R3,_RUN+1
cp R24,R2
cpc R25,R3
brsh L4
.dbline 214
.dbline 215
wdr
.dbline 216
xcall _RUN_LED
.dbline 217
clr R2
clr R3
sts _RUN+1,R3
sts _RUN,R2
.dbline 218
ldi R24,90
sts _Send_Flag,R24
.dbline 219
L4:
.dbline -2
L1:
xcall pop_lset
.dbline 0 ; func end
reti
.dbend
.dbfunc e main _main fV
; tempp -> y+0
; i -> R10
.even
_main::
sbiw R28,28
.dbline -1
.dbline 223
; if(RUN>50)
; {
; WDR();
; RUN_LED();
; RUN = 0;
; Send_Flag = 0x5a;
; }
; }
;
; void main(void)
; {
.dbline 226
; unsigned char i;
; long tempp;
; CLI();
cli
.dbline 227
; init_devices(); //器件初始化
xcall _init_devices
.dbline 228
; init_data(); //数据初始化
xcall _init_data
.dbline 230
;
; ID_nu = get_id(); //读取拨码开关的值
xcall _get_id
sts _ID_nu,R16
.dbline 231
; ID_net = ID_nu; //计算网络ID号
mov R2,R16
sts _ID_net,R2
.dbline 233
;
; Pass_Flag = 0x01;
ldi R24,1
sts _Pass_Flag,R24
.dbline 234
; tempp = ID_net*256;
mov R18,R2
clr R19
ldi R16,256
ldi R17,1
xcall empy16s
movw R2,R16
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 235
; Pass_Flag <<= 1;
lds R2,_Pass_Flag
lsl R2
sts _Pass_Flag,R2
.dbline 236
; id1 = BASE_ADDR+tempp;
ldi R20,0
ldi R21,0
ldi R22,40
ldi R23,0
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _id1+1,R3
sts _id1,R2
sts _id1+2+1,R5
sts _id1+2,R4
.dbline 237
; id2 = BASE_ADDR+1+tempp;
ldi R20,1
ldi R21,0
ldi R22,40
ldi R23,0
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _id2+1,R3
sts _id2,R2
sts _id2+2+1,R5
sts _id2+2,R4
.dbline 238
; id3 = BASE_ADDR/256+tempp*256;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldi R20,0
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
ldi R20,0
ldi R21,40
ldi R22,0
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _id3+1,R3
sts _id3,R2
sts _id3+2+1,R5
sts _id3+2,R4
.dbline 239
; Pass_Flag <<= 1;
lds R2,_Pass_Flag
lsl R2
sts _Pass_Flag,R2
.dbline 240
; id4 = BASE_ADDR/256+tempp*256+1;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldi R20,0
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
ldi R20,1
ldi R21,40
ldi R22,0
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _id4+1,R3
sts _id4,R2
sts _id4+2+1,R5
sts _id4+2,R4
.dbline 241
; id5 = BASE_ADDR/256+tempp*256+2;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldi R20,0
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
ldi R20,2
ldi R21,40
ldi R22,0
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _id5+1,R3
sts _id5,R2
sts _id5+2+1,R5
sts _id5+2,R4
.dbline 242
; Pass_Flag <<= 1;
lds R2,_Pass_Flag
lsl R2
sts _Pass_Flag,R2
.dbline 243
; CANMOBID[0] = id1;
lds R4,_id1+2
lds R5,_id1+2+1
lds R2,_id1
lds R3,_id1+1
sts _CANMOBID+1,R3
sts _CANMOBID,R2
sts _CANMOBID+2+1,R5
sts _CANMOBID+2,R4
.dbline 244
; CANMOBID[1] = id2;
lds R4,_id2+2
lds R5,_id2+2+1
lds R2,_id2
lds R3,_id2+1
sts _CANMOBID+4+1,R3
sts _CANMOBID+4,R2
sts _CANMOBID+4+2+1,R5
sts _CANMOBID+4+2,R4
.dbline 245
; CANMOBID[3] = id3;
lds R4,_id3+2
lds R5,_id3+2+1
lds R2,_id3
lds R3,_id3+1
sts _CANMOBID+12+1,R3
sts _CANMOBID+12,R2
sts _CANMOBID+12+2+1,R5
sts _CANMOBID+12+2,R4
.dbline 246
; CANMOBID[4] = id4;
lds R4,_id4+2
lds R5,_id4+2+1
lds R2,_id4
lds R3,_id4+1
sts _CANMOBID+16+1,R3
sts _CANMOBID+16,R2
sts _CANMOBID+16+2+1,R5
sts _CANMOBID+16+2,R4
.dbline 247
; CANMOBID[5] = id5;
lds R4,_id5+2
lds R5,_id5+2+1
lds R2,_id5
lds R3,_id5+1
sts _CANMOBID+20+1,R3
sts _CANMOBID+20,R2
sts _CANMOBID+20+2+1,R5
sts _CANMOBID+20+2,R4
.dbline 248
; if(Pass_Flag!=0x08)
lds R24,_Pass_Flag
cpi R24,8
breq L11
.dbline 249
; RESET;
jmp 0x00000
L11:
.dbline 250
; can_init ();
xcall _can_init
.dbline 252
;
; DI_handle(); //读取开关状态 去抖动处理
xcall _DI_handle
.dbline 253
; for(i=0;i<12;i++)
clr R10
xjmp L16
L13:
.dbline 254
.dbline 255
ldi R24,<_DI_data_cur
ldi R25,>_DI_data_cur
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_DI_data_pre
ldi R25,>_DI_data_pre
mov R30,R10
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 256
ldi R24,<_DI_data_cur
ldi R25,>_DI_data_cur
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_DI_data
ldi R25,>_DI_data
mov R30,R10
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 257
L14:
.dbline 253
inc R10
L16:
.dbline 253
mov R24,R10
cpi R24,12
brlo L13
.dbline 258
; {
; DI_data_pre[i] =DI_data_cur[i];
; DI_data[i] =DI_data_cur[i];
; }
; SEI();
sei
.dbline 259
; watchdog_init();
xcall _watchdog_init
.dbline 260
; WDR();
wdr
.dbline 261
; WDR();
wdr
xjmp L18
L17:
.dbline 264
;
; while(1)
; {
.dbline 266
;
; WDR();
wdr
.dbline 267
; ID_nu = get_id(); //读取拨码开关的值
xcall _get_id
sts _ID_nu,R16
.dbline 268
; ID_net = ID_nu; //计算网络ID号
mov R2,R16
sts _ID_net,R2
.dbline 269
; if(tempp!=ID_nu*256)
mov R18,R2
clr R19
ldi R16,256
ldi R17,1
xcall empy16s
movw R2,R16
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
ldd R6,y+0
ldd R7,y+1
ldd R8,y+2
ldd R9,y+3
cp R6,R2
cpc R7,R3
cpc R8,R4
cpc R9,R5
brne X1
xjmp L20
X1:
.dbline 270
; {
.dbline 271
; CLI();
cli
.dbline 272
; tempp = ID_net*256;
lds R18,_ID_net
clr R19
ldi R16,256
ldi R17,1
xcall empy16s
movw R2,R16
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
std y+0,R2
std y+1,R3
std y+2,R4
std y+3,R5
.dbline 273
; Pass_Flag = 0x01;
ldi R24,1
sts _Pass_Flag,R24
.dbline 274
; id1 = BASE_ADDR+tempp;
ldi R20,0
ldi R21,0
ldi R22,40
ldi R23,0
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _id1+1,R3
sts _id1,R2
sts _id1+2+1,R5
sts _id1+2,R4
.dbline 275
; id2 = BASE_ADDR+1+tempp;
ldi R20,1
ldi R21,0
ldi R22,40
ldi R23,0
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _id2+1,R3
sts _id2,R2
sts _id2+2+1,R5
sts _id2+2,R4
.dbline 276
; Pass_Flag <<= 1;
mov R2,R24
lsl R2
sts _Pass_Flag,R2
.dbline 277
; WDR();
wdr
.dbline 278
; id3 = BASE_ADDR/256+tempp*256;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldi R20,0
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
ldi R20,0
ldi R21,40
ldi R22,0
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _id3+1,R3
sts _id3,R2
sts _id3+2+1,R5
sts _id3+2,R4
.dbline 279
; Pass_Flag <<= 1;
lds R2,_Pass_Flag
lsl R2
sts _Pass_Flag,R2
.dbline 280
; id4 = BASE_ADDR/256+tempp*256+1;
ldd R2,y+0
ldd R3,y+1
ldd R4,y+2
ldd R5,y+3
ldi R20,0
ldi R21,1
ldi R22,0
ldi R23,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
xcall empy32s
ldi R20,1
ldi R21,40
ldi R22,0
ldi R23,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -