⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.s

📁 LED显示面板
💻 S
📖 第 1 页 / 共 2 页
字号:
	.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 + -