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

📄 display.s

📁 LED显示面板
💻 S
📖 第 1 页 / 共 3 页
字号:
	.module display.c
	.area text(rom, con, rel)
	.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\display.c
	.area data(ram, con, rel)
	.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\display.c
_key::
	.blkb 2
	.area idata
	.byte 165,165
	.area data(ram, con, rel)
	.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\display.c
	.blkb 2
	.area idata
	.byte 165,165
	.area data(ram, con, rel)
	.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\display.c
	.blkb 2
	.area idata
	.byte 165,165
	.area data(ram, con, rel)
	.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\display.c
	.blkb 2
	.area idata
	.byte 165,165
	.area data(ram, con, rel)
	.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\display.c
	.dbsym e key _key A[8:8]c
	.area text(rom, con, rel)
	.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\CAN网可配置型报警灯板程序\display.c
	.dbfunc e key_process _key_process fV
;              i -> R20
	.even
_key_process::
	xcall push_gset1
	sbiw R28,12
	.dbline -1
	.dbline 13
; #include "main.h"
; 
; extern long id4;
; extern unsigned int addr_led7[6];
; extern unsigned char led7_data[18];
; unsigned char key[8]={off,off,off,off,off,off,off,off};
; extern unsigned mode_flag;
; VCI_CAN_OBJ sendmsg;
; extern SHD_LED  pannel_led[48];
; extern unsigned char channel,T1;
; 
; void key_process(void)                 //键处理函数
; {
	.dbline 15
; unsigned char i;
;  WDR();
	wdr
	.dbline 16
; if(key[0]==on)                         //模式设置处理
	lds R24,_key
	cpi R24,90
	brne L3
	.dbline 17
; { 
	.dbline 18
;  key[0]=off;
	ldi R24,165
	sts _key,R24
	.dbline 19
;  if(mode_flag==on)
	lds R24,_mode_flag
	lds R25,_mode_flag+1
	cpi R24,90
	ldi R30,0
	cpc R25,R30
	brne L5
	.dbline 20
;  { 
	.dbline 21
;  mode_flag=off;
	ldi R24,165
	ldi R25,0
	sts _mode_flag+1,R25
	sts _mode_flag,R24
	.dbline 22
;   PORTF&=0xf7;
	in R24,0x11
	andi R24,247
	out 0x11,R24
	.dbline 23
;  }
	xjmp L6
L5:
	.dbline 25
;  else
;  {
	.dbline 26
;   mode_flag = on; 
	ldi R24,90
	ldi R25,0
	sts _mode_flag+1,R25
	sts _mode_flag,R24
	.dbline 27
;   PORTF|=0x08;
	sbi 0x11,3
	.dbline 28
;   }
L6:
	.dbline 29
; }
L3:
	.dbline 31
; 
; WDR();
	wdr
	.dbline 32
; if(key[1]==on)                          //消声处理
	lds R24,_key+1
	cpi R24,90
	breq X0
	xjmp L7
X0:
	.dbline 33
; {
	.dbline 34
;  key[1]=off;
	ldi R24,165
	sts _key+1,R24
	.dbline 35
;  buzzer_off();
	xcall _buzzer_off
	.dbline 36
;  relay1_off();
	xcall _relay1_off
	.dbline 37
;  sendmsg.ID=id4;
	lds R4,_id4+2
	lds R5,_id4+2+1
	lds R2,_id4
	lds R3,_id4+1
	sts _sendmsg+1,R3
	sts _sendmsg,R2
	sts _sendmsg+2+1,R5
	sts _sendmsg+2,R4
	.dbline 38
;  for(i=0;i<8;i++)
	clr R20
	xjmp L14
L11:
	.dbline 39
	ldi R24,<_sendmsg+4
	ldi R25,>_sendmsg+4
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,90
	std z+0,R24
L12:
	.dbline 38
	inc R20
L14:
	.dbline 38
	cpi R20,8
	brlo L11
	.dbline 40
;  sendmsg.Data[i]=0x5a;
;  can_tx (sendmsg);
	ldi R24,<_sendmsg
	ldi R25,>_sendmsg
	movw R30,R28
	ldi R16,12
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	xcall asgnblk
	movw R16,R28
	xcall _can_tx
	.dbline 42
;  
; for(i=0;i<48;i++)
	clr R20
	xjmp L19
L16:
	.dbline 43
;  {
	.dbline 44
;  if(pannel_led[i].soundoff==noack)
	ldi R24,20
	mul R24,R20
	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 L20
	.dbline 45
;     pannel_led[i].soundoff=acked;           //清除声音标志
	ldi R24,20
	mul R24,R20
	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
L20:
	.dbline 46
L17:
	.dbline 42
	inc R20
L19:
	.dbline 42
	cpi R20,48
	brlo L16
	.dbline 47
;  }
; }
L7:
	.dbline 49
; 
;  WDR();
	wdr
	.dbline 50
; if(key[2]==on)                            //消闪处理
	lds R24,_key+2
	cpi R24,90
	breq X1
	xjmp L24
X1:
	.dbline 51
; {
	.dbline 52
;  key[2]=off;
	ldi R24,165
	sts _key+2,R24
	.dbline 53
;  sendmsg.ID=id4;
	lds R4,_id4+2
	lds R5,_id4+2+1
	lds R2,_id4
	lds R3,_id4+1
	sts _sendmsg+1,R3
	sts _sendmsg,R2
	sts _sendmsg+2+1,R5
	sts _sendmsg+2,R4
	.dbline 54
;  for(i=0;i<8;i++)
	clr R20
	xjmp L31
L28:
	.dbline 55
	ldi R24,<_sendmsg+4
	ldi R25,>_sendmsg+4
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,165
	std z+0,R24
L29:
	.dbline 54
	inc R20
L31:
	.dbline 54
	cpi R20,8
	brlo L28
	.dbline 56
;  sendmsg.Data[i]=0xa5;
;  can_tx (sendmsg);
	ldi R24,<_sendmsg
	ldi R25,>_sendmsg
	movw R30,R28
	ldi R16,12
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	xcall asgnblk
	movw R16,R28
	xcall _can_tx
	.dbline 57
;  for(i=0;i<48;i++)
	clr R20
	xjmp L36
L33:
	.dbline 58
; {
	.dbline 59
;  if(pannel_led[i].state==noack)
	ldi R24,20
	mul R24,R20
	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 L37
	.dbline 60
;   pannel_led[i].state=acked;
	ldi R24,20
	mul R24,R20
	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
L37:
	.dbline 61
L34:
	.dbline 57
	inc R20
L36:
	.dbline 57
	cpi R20,48
	brlo L33
	.dbline 62
; }
; }
L24:
	.dbline 64
; 
; if(key[4]==on)              //通道号加一
	lds R24,_key+4
	cpi R24,90
	brne L41
	.dbline 65
; {
	.dbline 66
;  key[4]=off;
	ldi R24,165
	sts _key+4,R24
	.dbline 67
;  if(mode_flag==on)
	lds R24,_mode_flag
	lds R25,_mode_flag+1
	cpi R24,90
	ldi R30,0
	cpc R25,R30
	brne L45
	.dbline 68
;    {
	.dbline 69
;    if(channel<47)
	lds R24,_channel
	cpi R24,47
	brsh L47
	.dbline 70
;    channel++;
	subi R24,255    ; addi 1
	sts _channel,R24
	xjmp L48
L47:
	.dbline 72
;    else
;    channel =0;
	clr R2
	sts _channel,R2
L48:
	.dbline 73
;    }
L45:
	.dbline 74
; }
L41:
	.dbline 75
;  WDR();
	wdr
	.dbline 76
; if(key[5]==on)              //通道号减一
	lds R24,_key+5
	cpi R24,90
	brne L49
	.dbline 77
; {
	.dbline 78
;  key[5]=off;
	ldi R24,165
	sts _key+5,R24
	.dbline 79
;  if(mode_flag==on)
	lds R24,_mode_flag
	lds R25,_mode_flag+1
	cpi R24,90
	ldi R30,0
	cpc R25,R30
	brne L53
	.dbline 80
;  {
	.dbline 81
;  if(channel>0)
	ldi R24,0
	lds R2,_channel
	cp R24,R2
	brsh L55
	.dbline 82
;  channel--;
	mov R24,R2
	subi R24,1
	sts _channel,R24
	xjmp L56
L55:
	.dbline 84
;  else
;  channel=47;
	ldi R24,47
	sts _channel,R24
L56:
	.dbline 85
;  }
L53:
	.dbline 86
; }
L49:
	.dbline 88
; 
; if(key[6]==on)              //通道号减16
	lds R24,_key+6
	cpi R24,90
	brne L57
	.dbline 89
; {
	.dbline 90
;  key[6]=off;
	ldi R24,165
	sts _key+6,R24
	.dbline 91
;  if(mode_flag==on)
	lds R24,_mode_flag
	lds R25,_mode_flag+1
	cpi R24,90
	ldi R30,0
	cpc R25,R30
	brne L61
	.dbline 92
;  {
	.dbline 93
;  if(channel>15)
	ldi R24,15
	lds R2,_channel
	cp R24,R2
	brsh L63
	.dbline 94
;  channel=channel-16;
	mov R24,R2
	subi R24,16
	sts _channel,R24
L63:
	.dbline 95
;  }
L61:
	.dbline 96
; }
L57:
	.dbline 97
;  WDR();
	wdr
	.dbline 98
; if(key[7]==on)              //通道号加16
	lds R24,_key+7
	cpi R24,90
	brne L65
	.dbline 99
; {
	.dbline 100
;  key[7]=off;
	ldi R24,165
	sts _key+7,R24
	.dbline 101
;  if(mode_flag==on)
	lds R24,_mode_flag
	lds R25,_mode_flag+1
	cpi R24,90
	ldi R30,0
	cpc R25,R30
	brne L69
	.dbline 102
;  {
	.dbline 103
;  if(channel<32)
	lds R24,_channel
	cpi R24,32
	brsh L71
	.dbline 104
;  channel=channel+16;
	subi R24,240    ; addi 16
	sts _channel,R24
L71:
	.dbline 105
;  }
L69:
	.dbline 106
L65:
	.dbline -2
L2:
	adiw R28,12
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e led7_display _led7_display fV
;              p -> R20,R21
;             tt -> y+4
;          point -> y+2
;             ds -> R18
;              i -> R16
	.even
_led7_display::
	xcall push_gset1
	.dbline -1
	.dbline 111
; }
; 
; }
; 
; void led7_display(unsigned char i,unsigned char ds,unsigned char point,unsigned char tt)   //七段码显示
; {
	.dbline 112
;  unsigned char *p= (unsigned char *) (addr_led7[ds]);
	ldi R24,2
	mul R24,R18
	movw R30,R0
	ldi R24,<_addr_led7
	ldi R25,>_addr_led7
	add R30,R24
	adc R31,R25
	ldd R20,z+0
	ldd R21,z+1
	.dbline 113
;  WDR();
	wdr
	.dbline 114
;  if(tt)
	ldd R0,y+4
	tst R0
	breq L74
	.dbline 115
;  {
	.dbline 116
;  if(point)
	ldd R0,y+2
	tst R0
	breq L76
	.dbline 117
;  *p = (led7_data[i]&0x7f);
	ldi R24,<_led7_data
	ldi R25,>_led7_data
	mov R30,R16
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	andi R24,127
	movw R30,R20
	std z+0,R24
	xjmp L75
L76:
	.dbline 119
;  else
;  *p = led7_data[i];
	ldi R24,<_led7_data
	ldi R25,>_led7_data
	mov R30,R16
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	movw R30,R20
	std z+0,R2
	.dbline 120
;  }
	xjmp L75
L74:
	.dbline 122
	lds R2,_led7_data+12
	movw R30,R20
	std z+0,R2
L75:
	.dbline -2
L73:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r p 20 pc
	.dbsym l tt 4 c
	.dbsym l point 2 c
	.dbsym r ds 18 c
	.dbsym r i 16 c
	.dbend
	.dbfunc e led_display _led_display fV
;             dd -> R22
;              d -> R10
;              j -> R20
;              i -> R12
	.even
_led_display::
	xcall push_gset4
	sbiw R28,3
	.dbline -1
	.dbline 127
;  else
;  *p= led7_data[12];
; }
; 
; 
; void led_display(void)
; {
	.dbline 130
; unsigned char i,j,d,dd;
; 
; WDR();
	wdr
	.dbline 131
; PORTD&=0x7f;
	in R24,0xb
	andi R24,127
	out 0xb,R24
	.dbline 132
; asm("nop");
	nop
	.dbline 133
; asm("nop");
	nop
	.dbline 134
; for(j=0;j<6;j++)
	clr R20
	xjmp L83
L80:
	.dbline 135
; {
	.dbline 136
;  d=0;
	clr R10
	.dbline 137
;  dd=0;
	clr R22
	.dbline 138
;  for(i=0;i<8;i++)
	clr R12
	xjmp L87
L84:
	.dbline 139
;  {WDR();
	.dbline 139
	wdr
	.dbline 140
;   if(pannel_led[j*8+i].state==noack)                   //报警显示
	ldi R24,8
	mul R24,R20
	mov R17,R0
	add R17,R12
	ldi R16,20
	muls R16,R17
	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 L88
	.dbline 141
;    {
	.dbline 142
;       if(pannel_led[j*8+i].cut_off==off)               //无闭锁则输出
	ldi R24,8
	mul R24,R20
	mov R17,R0
	add R17,R12
	muls R16,R17
	movw R30,R0
	ldi R24,<_pannel_led+16
	ldi R25,>_pannel_led+16
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,165
	brne L91
	.dbline 143
;       {
	.dbline 144
;       d|=(1<<i);                 
	ldi R16,1
	mov R17,R12
	xcall lsl8
	or R10,R16
	.dbline 145
;       dd&= ~(1<<i);
	ldi R16,1
	mov R17,R12
	xcall lsl8
	mov R2,R16
	com R2
	and R22,R2
	.dbline 146
;       }
	xjmp L89
L91:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -