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

📄 function.s

📁 工业开关量检测模块的原代码,带断线检测功能
💻 S
字号:
	.module function.c
	.area text(rom, con, rel)
	.dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\开关量CAN网\function.c
	.dbfunc e RUN_LED _RUN_LED fV
	.even
_RUN_LED::
	.dbline -1
	.dbline 8
; #include "main.h"
; 
; extern unsigned char Pass_Flag,ID_net,DI_data[12],Send_Flag,DI_Status[3],send_count;
; extern unsigned char Time,Temp_Flag,DI_data_pre[12],DI_data_cur[12];
; extern unsigned int RUN;
; extern long id1,id2,id3,id4,id5;
; void RUN_LED(void)                            //运行指示灯
; {
	.dbline 9
;  if(PORTB&0X20)
	in R24,0x5
	andi R24,32
	breq L2
	.dbline 10
;   PORTB&=0xDF;
	in R24,0x5
	andi R24,223
	out 0x5,R24
	xjmp L3
L2:
	.dbline 12
	sbi 0x5,5
L3:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e get_id _get_id fc
;           temp -> R16
	.even
_get_id::
	.dbline -1
	.dbline 17
;  else
;   PORTB|=0x20;
; }
; 
; 
; unsigned char get_id(void)                          //读取拨码开关
; {
	.dbline 19
;  unsigned char temp;
;  PORTG &= 0xf7;
	in R24,0x14
	andi R24,247
	out 0x14,R24
	.dbline 20
;  asm("nop");
	nop
	.dbline 21
;  asm("nop");
	nop
	.dbline 22
;  temp = PINC;
	in R16,0x6
	.dbline 23
;  temp = temp+1;
	inc R16
	.dbline 24
;  temp = ~(temp);
	com R16
	.dbline 25
;  temp = temp>>1;
	lsr R16
	.dbline 26
;  PORTG |= 0x08;
	sbi 0x14,3
	.dbline 27
;  return temp;
	.dbline -2
L4:
	.dbline 0 ; func end
	ret
	.dbsym r temp 16 c
	.dbend
	.dbfunc e init_data _init_data fV
;              i -> R16
	.even
_init_data::
	xcall push_gset2
	.dbline -1
	.dbline 32
; }
; 
; 
; void init_data(void)
; {
	.dbline 35
;  unsigned char i;
; 
;  for(i=0;i<12;i++)
	clr R16
	xjmp L9
L6:
	.dbline 36
	.dbline 37
	ldi R24,<_DI_data
	ldi R25,>_DI_data
	mov R30,R16
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,255
	std z+0,R24
	.dbline 38
	ldi R24,<_DI_data_pre
	ldi R25,>_DI_data_pre
	mov R30,R16
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,255
	std z+0,R24
	.dbline 39
	ldi R24,<_DI_data_cur
	ldi R25,>_DI_data_cur
	mov R30,R16
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,255
	std z+0,R24
	.dbline 40
L7:
	.dbline 35
	inc R16
L9:
	.dbline 35
	cpi R16,12
	brlo L6
	.dbline 41
;  {
;  DI_data[i] = 0xff;
;   DI_data_pre[i] = 0xff;
;    DI_data_cur[i] = 0xff;
;  }
;  for(i=0;i<3;i++)
	clr R16
	xjmp L13
L10:
	.dbline 42
	ldi R24,<_DI_Status
	ldi R25,>_DI_Status
	mov R30,R16
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
L11:
	.dbline 41
	inc R16
L13:
	.dbline 41
	cpi R16,3
	brlo L10
	.dbline 43
;  DI_Status[i]= 0;
;  Time = 0;
	clr R2
	sts _Time,R2
	.dbline 44
;  Temp_Flag = 0;
	sts _Temp_Flag,R2
	.dbline 45
;  Send_Flag = 0;
	sts _Send_Flag,R2
	.dbline 46
;  Pass_Flag = 0;
	sts _Pass_Flag,R2
	.dbline 47
;  RUN = 0;
	clr R3
	sts _RUN+1,R3
	sts _RUN,R2
	.dbline 48
;  id1 = 0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _id1+1,R21
	sts _id1,R20
	sts _id1+2+1,R23
	sts _id1+2,R22
	.dbline 49
;  id2 = 0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _id2+1,R21
	sts _id2,R20
	sts _id2+2+1,R23
	sts _id2+2,R22
	.dbline 50
;  id3 = 0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _id3+1,R21
	sts _id3,R20
	sts _id3+2+1,R23
	sts _id3+2,R22
	.dbline 51
;  id4 = 0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _id4+1,R21
	sts _id4,R20
	sts _id4+2+1,R23
	sts _id4+2,R22
	.dbline 52
;  id5 = 0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _id5+1,R21
	sts _id5,R20
	sts _id5+2+1,R23
	sts _id5+2,R22
	.dbline 53
;  send_count = 0;
	sts _send_count,R2
	.dbline -2
L5:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbend

⌨️ 快捷键说明

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