📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\main.c
.area vector(rom, abs)
.org 68
jmp _timer0_ovf_isr
.area text(rom, con, rel)
.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\main.c
.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
_timer0_ovf_isr::
xcall push_lset
.dbline -1
.dbline 21
; #include "main.h"
;
;
; VCI_CAN_OBJ msg[3],rece_data[49];
; extern unsigned long CANMOBID[15];
; extern unsigned long CANMOBMD[15];
; unsigned char ID_nu,ID_net,Time,T1,channel,RUN,T2,alarm_process_flag,T3;
; unsigned char sysrst,Pass_Flag;
; extern SHD_LED pannel_led[48];
; long id1,id2,id3,id4,id5,id6;
; unsigned char mode_flag ;
; unsigned char key_temp1,key_temp2,key_temp3,ted;
; unsigned char soundoff_flag,ack_flag,alarm_flag;
; extern unsigned char key[8];
;
;
;
;
; #pragma interrupt_handler timer0_ovf_isr:18
; void timer0_ovf_isr(void) //定时1毫秒
; {
.dbline 22
; TCNT0 = 0x83; //reload counter value
ldi R24,131
out 0x26,R24
.dbline 23
; Time++;
lds R24,_Time
subi R24,255 ; addi 1
sts _Time,R24
.dbline 24
; RUN++;
lds R24,_RUN
subi R24,255 ; addi 1
sts _RUN,R24
.dbline 25
; T2++;
lds R24,_T2
subi R24,255 ; addi 1
sts _T2,R24
.dbline 26
; T3++;
lds R24,_T3
subi R24,255 ; addi 1
sts _T3,R24
.dbline 27
; if(T2==12)
lds R24,_T2
cpi R24,12
brne L3
.dbline 28
; {
.dbline 29
; RUN_led();
xcall _RUN_led
.dbline 30
; T2=0;
clr R2
sts _T2,R2
.dbline 31
; }
L3:
.dbline 32
; if(T3==alarm_delay)
lds R24,_T3
cpi R24,20
brne L5
.dbline 33
; {
.dbline 34
; alarm_process_flag=on;
ldi R24,90
sts _alarm_process_flag,R24
.dbline 35
; T3=0;
clr R2
sts _T3,R2
.dbline 36
; }
L5:
.dbline 37
; if(RUN==2)
lds R24,_RUN
cpi R24,2
brne L7
.dbline 38
; {
.dbline 39
; key_temp1 =get_key();
xcall _get_key
sts _key_temp1,R16
.dbline 40
; }
L7:
.dbline 41
; if(RUN==4)
lds R24,_RUN
cpi R24,4
breq X0
xjmp L9
X0:
.dbline 42
; {
.dbline 43
; if(key_temp2!=key_temp1)
lds R2,_key_temp1
lds R3,_key_temp2
cp R3,R2
brne X1
xjmp L11
X1:
.dbline 44
; {
.dbline 45
; key_temp2 =get_key();
xcall _get_key
sts _key_temp2,R16
.dbline 46
; if((key_temp1==key_temp2)&&(key_temp1!=0xff))
lds R3,_key_temp1
cp R3,R16
breq X2
xjmp L13
X2:
mov R24,R3
cpi R24,255
brne X3
xjmp L13
X3:
.dbline 47
; {
.dbline 49
; //WDR();
; ted= ~(key_temp1);
mov R2,R24
com R2
sts _ted,R2
.dbline 50
; if(ted&0x80)
sbrs R2,7
rjmp L15
.dbline 51
; key[7]=on;
ldi R24,90
sts _key+7,R24
xjmp L16
L15:
.dbline 53
; else
; key[7]=off;
ldi R24,165
sts _key+7,R24
L16:
.dbline 54
; if(ted&0x40)
lds R2,_ted
sbrs R2,6
rjmp L19
.dbline 55
; key[6]=on;
ldi R24,90
sts _key+6,R24
xjmp L20
L19:
.dbline 57
; else
; key[6]=off;
ldi R24,165
sts _key+6,R24
L20:
.dbline 58
; if(ted&0x20)
lds R2,_ted
sbrs R2,5
rjmp L23
.dbline 59
; key[5]=on;
ldi R24,90
sts _key+5,R24
xjmp L24
L23:
.dbline 61
; else
; key[5]=off;
ldi R24,165
sts _key+5,R24
L24:
.dbline 62
; if(ted&0x10)
lds R2,_ted
sbrs R2,4
rjmp L27
.dbline 63
; key[4]=on;
ldi R24,90
sts _key+4,R24
xjmp L28
L27:
.dbline 65
; else
; key[4]=off;
ldi R24,165
sts _key+4,R24
L28:
.dbline 66
; if(ted&0x08)
lds R2,_ted
sbrs R2,3
rjmp L31
.dbline 67
; key[3]=on;
ldi R24,90
sts _key+3,R24
xjmp L32
L31:
.dbline 69
; else
; key[3]=off;
ldi R24,165
sts _key+3,R24
L32:
.dbline 70
; if(ted&0x04)
lds R2,_ted
sbrs R2,2
rjmp L35
.dbline 71
; key[2]=on;
ldi R24,90
sts _key+2,R24
xjmp L36
L35:
.dbline 73
; else
; key[2]=off;
ldi R24,165
sts _key+2,R24
L36:
.dbline 74
; if(ted&0x02)
lds R2,_ted
sbrs R2,1
rjmp L39
.dbline 75
; key[1]=on;
ldi R24,90
sts _key+1,R24
xjmp L40
L39:
.dbline 77
; else
; key[1]=off;
ldi R24,165
sts _key+1,R24
L40:
.dbline 78
; if(ted&0x01)
lds R2,_ted
sbrs R2,0
rjmp L43
.dbline 79
; key[0]=on;
ldi R24,90
sts _key,R24
xjmp L44
L43:
.dbline 81
; else
; key[0]=off;
ldi R24,165
sts _key,R24
L44:
.dbline 83
; //WDR();
; }
L13:
.dbline 84
; }
L11:
.dbline 85
; RUN=0;
clr R2
sts _RUN,R2
.dbline 86
; }
L9:
.dbline 87
; if(Time>100)
ldi R24,100
lds R2,_Time
cp R24,R2
brsh L45
.dbline 88
; {
.dbline 89
; Time = 0;
clr R2
sts _Time,R2
.dbline 90
; if(T1)
lds R2,_T1
tst R2
breq L47
.dbline 91
; T1=0;
clr R2
sts _T1,R2
xjmp L48
L47:
.dbline 93
; else
; T1=0x5a;
ldi R24,90
sts _T1,R24
L48:
.dbline 94
; if(mode_flag==off)
lds R24,_mode_flag
cpi R24,165
brne L49
.dbline 95
; {
.dbline 96
; if(channel<47)
lds R24,_channel
cpi R24,47
brsh L51
.dbline 97
; channel++;
subi R24,255 ; addi 1
sts _channel,R24
xjmp L52
L51:
.dbline 99
; else
; channel=0;
clr R2
sts _channel,R2
L52:
.dbline 100
; }
L49:
.dbline 101
L45:
.dbline -2
L2:
xcall pop_lset
.dbline 0 ; func end
reti
.dbend
.dbfunc e main _main fV
; tempp -> y+2
; i -> R10
.even
_main::
sbiw R28,6
.dbline -1
.dbline 108
; }
;
; }
;
;
;
; void main(void)
; {
.dbline 112
; unsigned char i;
; long tempp;
;
; CLI();
cli
.dbline 113
; init_devices();
xcall _init_devices
.dbline 114
; hardware_reset();
xcall _hardware_reset
.dbline 115
; id_int();
xcall _id_int
.dbline 116
; shd_led_init();
xcall _shd_led_init
.dbline 118
;
; watchdog_init();
xcall _watchdog_init
.dbline 119
; WDR();
wdr
.dbline 120
; WDR();
wdr
.dbline 122
;
; mode_flag=off;
ldi R24,165
sts _mode_flag,R24
.dbline 123
; alarm_process_flag=off;
sts _alarm_process_flag,R24
.dbline 124
; soundoff_flag=off;
sts _soundoff_flag,R24
.dbline 125
; ack_flag=off;
sts _ack_flag,R24
.dbline 126
; alarm_flag=off;
sts _alarm_flag,R24
.dbline 128
;
; ID_nu = get_id(); //读取拨码开关的值
xcall _get_id
sts _ID_nu,R16
.dbline 129
; ID_net = ID_nu; //计算网络ID号
mov R2,R16
sts _ID_net,R2
.dbline 130
; Pass_Flag = 0x01;
ldi R24,1
sts _Pass_Flag,R24
.dbline 131
; tempp = ID_net;
clr R3
clr R4
clr R5
std y+2,R2
std y+3,R3
std y+4,R4
std y+5,R5
.dbline 132
; Pass_Flag <<= 1;
mov R2,R24
lsl R2
sts _Pass_Flag,R2
.dbline 133
; id4 = BASE_ADDR+tempp;
ldi R20,0
ldi R21,40
ldi R22,40
ldi R23,0
ldd R2,y+2
ldd R3,y+3
ldd R4,y+4
ldd R5,y+5
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 134
; id5 = BASE_ADDR+tempp+0x01000000;
ldi R20,0
ldi R21,40
ldi R22,40
ldi R23,1
ldd R2,y+2
ldd R3,y+3
ldd R4,y+4
ldd R5,y+5
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 135
; id6 = BASE_ADDR+tempp+0x02000000; //发送ID地址
ldi R20,0
ldi R21,40
ldi R22,40
ldi R23,2
ldd R2,y+2
ldd R3,y+3
ldd R4,y+4
ldd R5,y+5
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _id6+1,R3
sts _id6,R2
sts _id6+2+1,R5
sts _id6+2,R4
.dbline 136
; id1 = 0x02280000;
ldi R20,0
ldi R21,0
ldi R22,40
ldi R23,2
sts _id1+1,R21
sts _id1,R20
sts _id1+2+1,R23
sts _id1+2,R22
.dbline 137
; Pass_Flag <<= 1;
lds R2,_Pass_Flag
lsl R2
sts _Pass_Flag,R2
.dbline 138
; id2 = 0x02280001;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -