📄 main.s
字号:
ldi R20,1
ldi R21,0
ldi R22,40
ldi R23,2
sts _id2+1,R21
sts _id2,R20
sts _id2+2+1,R23
sts _id2+2,R22
.dbline 139
; id3 = 0x02280002; //接收ID地址
ldi R20,2
ldi R21,0
ldi R22,40
ldi R23,2
sts _id3+1,R21
sts _id3,R20
sts _id3+2+1,R23
sts _id3+2,R22
.dbline 140
; Pass_Flag <<= 1;
lsl R2
sts _Pass_Flag,R2
.dbline 141
; WDR();
wdr
.dbline 142
; 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 143
; 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 144
; CANMOBID[2] = id3;
movw R2,R20
movw R4,R22
sts _CANMOBID+8+1,R3
sts _CANMOBID+8,R2
sts _CANMOBID+8+2+1,R5
sts _CANMOBID+8+2,R4
.dbline 145
; CANMOBID[3] = id4;
lds R4,_id4+2
lds R5,_id4+2+1
lds R2,_id4
lds R3,_id4+1
sts _CANMOBID+12+1,R3
sts _CANMOBID+12,R2
sts _CANMOBID+12+2+1,R5
sts _CANMOBID+12+2,R4
.dbline 146
; CANMOBID[4] = id5;
lds R4,_id5+2
lds R5,_id5+2+1
lds R2,_id5
lds R3,_id5+1
sts _CANMOBID+16+1,R3
sts _CANMOBID+16,R2
sts _CANMOBID+16+2+1,R5
sts _CANMOBID+16+2,R4
.dbline 147
; CANMOBID[5] = id6;
lds R4,_id6+2
lds R5,_id6+2+1
lds R2,_id6
lds R3,_id6+1
sts _CANMOBID+20+1,R3
sts _CANMOBID+20,R2
sts _CANMOBID+20+2+1,R5
sts _CANMOBID+20+2,R4
.dbline 148
; if(Pass_Flag!=0x08)
lds R24,_Pass_Flag
cpi R24,8
breq L59
.dbline 149
; RESET;
jmp 0x000
L59:
.dbline 150
; WDR();
wdr
.dbline 151
; can_init ();
xcall _can_init
.dbline 152
; WDR();
wdr
.dbline 153
; XMCRA = 0x80;
ldi R24,128
ldi R30,116
ldi R31,0
std z+0,R24
.dbline 154
; XMCRB = 0x04;
ldi R24,4
ldi R30,117
std z+0,R24
.dbline 156
;
; SEI();
sei
xjmp L62
L61:
.dbline 158
; while(1)
; {
.dbline 159
; WDR();
wdr
.dbline 160
; rece_led_off; //关闭接收指示灯
cbi 0x11,0
.dbline 161
; send_led_off; //关闭发送指示灯
cbi 0x11,1
.dbline 163
;
; ID_nu = get_id(); //读取拨码开关的值
xcall _get_id
sts _ID_nu,R16
.dbline 165
;
; if(ID_net!=ID_nu) //拨码有改变则复位
lds R3,_ID_net
cp R3,R16
breq L64
.dbline 166
; RESET;
jmp 0x000
L64:
.dbline 168
;
; key_process(); //键盘处理
xcall _key_process
.dbline 169
; channel_process(); //通道切换并处理
xcall _channel_process
.dbline 170
; WDR();
wdr
.dbline 171
; led_display(); //灯板显示
xcall _led_display
.dbline 172
; WDR();
wdr
.dbline 173
; turn_display(channel,1,pannel_led[channel].displaydata); //7段码显示
lds R2,_channel
ldi R24,20
mul R24,R2
movw R30,R0
ldi R24,<_pannel_led+18
ldi R25,>_pannel_led+18
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
std y+1,R3
std y+0,R2
ldi R18,1
lds R16,_channel
xcall _turn_display
.dbline 174
; WDR();
wdr
.dbline 176
;
; alarm_out(); //报警输出
xcall _alarm_out
.dbline 178
;
; if(soundoff_flag==on)
lds R24,_soundoff_flag
cpi R24,90
brne L67
.dbline 179
; {
.dbline 180
; WDR();
wdr
.dbline 181
; soundoff_flag=off;
ldi R24,165
sts _soundoff_flag,R24
.dbline 182
; buzzer_off();
xcall _buzzer_off
.dbline 183
; relay1_off();
xcall _relay1_off
.dbline 184
; for(i=0;i<48;i++)
clr R10
xjmp L72
L69:
.dbline 185
; {
.dbline 186
; if(pannel_led[i].soundoff==noack)
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+17
ldi R25,>_pannel_led+17
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,1
brne L73
.dbline 187
; pannel_led[i].soundoff=acked;
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+17
ldi R25,>_pannel_led+17
add R30,R24
adc R31,R25
ldi R24,2
std z+0,R24
L73:
.dbline 188
L70:
.dbline 184
inc R10
L72:
.dbline 184
mov R24,R10
cpi R24,48
brlo L69
.dbline 189
; }
; }
L67:
.dbline 191
;
; if(ack_flag==on)
lds R24,_ack_flag
cpi R24,90
brne L77
.dbline 192
; {
.dbline 193
; WDR();
wdr
.dbline 194
; ack_flag=off;
ldi R24,165
sts _ack_flag,R24
.dbline 195
; for(i=0;i<48;i++)
clr R10
xjmp L82
L79:
.dbline 196
; {
.dbline 197
; if(pannel_led[i].state==noack)
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,1
brne L83
.dbline 198
; pannel_led[i].state=acked;
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
add R30,R24
adc R31,R25
ldi R24,2
std z+0,R24
L83:
.dbline 199
L80:
.dbline 195
inc R10
L82:
.dbline 195
mov R24,R10
cpi R24,48
brlo L79
.dbline 200
; }
; }
L77:
.dbline 202
;
; if(alarm_flag==on)
lds R24,_alarm_flag
cpi R24,90
brne L87
.dbline 203
; {
.dbline 204
; alarm_flag=off;
ldi R24,165
sts _alarm_flag,R24
.dbline 205
; buzzer_on(); //喇叭输出
xcall _buzzer_on
.dbline 206
; relay1_on(); //延生输出
xcall _relay1_on
.dbline 207
; }
L87:
.dbline 210
;
;
; if(alarm_process_flag==on) //去抖处理
lds R24,_alarm_process_flag
cpi R24,90
breq X5
xjmp L89
X5:
.dbline 211
; {
.dbline 212
; alarm_process_flag=off;
ldi R24,165
sts _alarm_process_flag,R24
.dbline 213
; for(i=0;i<48;i++)
clr R10
xjmp L94
L91:
.dbline 214
; {
.dbline 215
; if(pannel_led[i].last_state==pannel_led[i].current_state)
ldi R24,20
mul R24,R10
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_pannel_led+15
ldi R25,>_pannel_led+15
movw R30,R0
add R30,R24
adc R31,R25
ldd R3,z+0
cp R3,R2
brne L95
.dbline 216
; {
.dbline 217
; pannel_led[i].last_state = pannel_led[i].current_state;
ldi R24,20
mul R24,R10
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_pannel_led+15
ldi R25,>_pannel_led+15
movw R30,R0
add R30,R24
adc R31,R25
std z+0,R2
.dbline 218
; pannel_led[i].state = pannel_led[i].current_state;
ldi R24,20
mul R24,R10
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
movw R30,R0
add R30,R24
adc R31,R25
std z+0,R2
.dbline 219
; }
L95:
.dbline 220
L92:
.dbline 213
inc R10
L94:
.dbline 213
mov R24,R10
cpi R24,48
brsh X6
xjmp L91
X6:
.dbline 221
; }
; }
L89:
.dbline 222
L62:
.dbline 157
xjmp L61
X4:
.dbline -2
L53:
adiw R28,6
.dbline 0 ; func end
ret
.dbsym l tempp 2 L
.dbsym r i 10 c
.dbend
.area bss(ram, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\main.c
_alarm_flag::
.blkb 1
.dbsym e alarm_flag _alarm_flag c
_ack_flag::
.blkb 1
.dbsym e ack_flag _ack_flag c
_soundoff_flag::
.blkb 1
.dbsym e soundoff_flag _soundoff_flag c
_ted::
.blkb 1
.dbsym e ted _ted c
_key_temp3::
.blkb 1
.dbsym e key_temp3 _key_temp3 c
_key_temp2::
.blkb 1
.dbsym e key_temp2 _key_temp2 c
_key_temp1::
.blkb 1
.dbsym e key_temp1 _key_temp1 c
_mode_flag::
.blkb 1
.dbsym e mode_flag _mode_flag c
_id6::
.blkb 4
.dbsym e id6 _id6 L
_id5::
.blkb 4
.dbsym e id5 _id5 L
_id4::
.blkb 4
.dbsym e id4 _id4 L
_id3::
.blkb 4
.dbsym e id3 _id3 L
_id2::
.blkb 4
.dbsym e id2 _id2 L
_id1::
.blkb 4
.dbsym e id1 _id1 L
_Pass_Flag::
.blkb 1
.dbsym e Pass_Flag _Pass_Flag c
_sysrst::
.blkb 1
.dbsym e sysrst _sysrst c
_T3::
.blkb 1
.dbsym e T3 _T3 c
_alarm_process_flag::
.blkb 1
.dbsym e alarm_process_flag _alarm_process_flag c
_T2::
.blkb 1
.dbsym e T2 _T2 c
_RUN::
.blkb 1
.dbsym e RUN _RUN c
_channel::
.blkb 1
.dbsym e channel _channel c
_T1::
.blkb 1
.dbsym e T1 _T1 c
_Time::
.blkb 1
.dbsym e Time _Time c
_ID_net::
.blkb 1
.dbsym e ID_net _ID_net c
_ID_nu::
.blkb 1
.dbsym e ID_nu _ID_nu c
_rece_data::
.blkb 588
.dbstruct 0 12 _VCI_CAN_OBJ
.dbfield 0 ID L
.dbfield 4 Data A[8:8]c
.dbend
.dbsym e rece_data _rece_data A[588:49]S[_VCI_CAN_OBJ]
_msg::
.blkb 36
.dbsym e msg _msg A[36:3]S[_VCI_CAN_OBJ]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -