📄 function.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 + -