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

📄 function.lis

📁 工业开关量检测模块的原代码,带断线检测功能
💻 LIS
字号:
                        .module function.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\开关量CAN网\function.c
 0000                   .dbfunc e RUN_LED _RUN_LED fV
                        .even
 0000           _RUN_LED::
 0000                   .dbline -1
 0000                   .dbline 8
 0000           ; #include "main.h"
 0000           ; 
 0000           ; extern unsigned char Pass_Flag,ID_net,DI_data[12],Send_Flag,DI_Status[3],send_count;
 0000           ; extern unsigned char Time,Temp_Flag,DI_data_pre[12],DI_data_cur[12];
 0000           ; extern unsigned int RUN;
 0000           ; extern long id1,id2,id3,id4,id5;
 0000           ; void RUN_LED(void)                            //运行指示灯
 0000           ; {
 0000                   .dbline 9
 0000           ;  if(PORTB&0X20)
 0000 85B1              in R24,0x5
 0002 8072              andi R24,32
 0004 21F0              breq L2
 0006                   .dbline 10
 0006           ;   PORTB&=0xDF;
 0006 85B1              in R24,0x5
 0008 8F7D              andi R24,223
 000A 85B9              out 0x5,R24
 000C 01C0              xjmp L3
 000E           L2:
 000E                   .dbline 12
 000E 2D9A              sbi 0x5,5
 0010           L3:
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbend
 0012                   .dbfunc e get_id _get_id fc
 0012           ;           temp -> R16
                        .even
 0012           _get_id::
 0012                   .dbline -1
 0012                   .dbline 17
 0012           ;  else
 0012           ;   PORTB|=0x20;
 0012           ; }
 0012           ; 
 0012           ; 
 0012           ; unsigned char get_id(void)                          //读取拨码开关
 0012           ; {
 0012                   .dbline 19
 0012           ;  unsigned char temp;
 0012           ;  PORTG &= 0xf7;
 0012 84B3              in R24,0x14
 0014 877F              andi R24,247
 0016 84BB              out 0x14,R24
 0018                   .dbline 20
 0018           ;  asm("nop");
 0018 0000              nop
 001A                   .dbline 21
 001A           ;  asm("nop");
 001A 0000              nop
 001C                   .dbline 22
 001C           ;  temp = PINC;
 001C 06B1              in R16,0x6
 001E                   .dbline 23
 001E           ;  temp = temp+1;
 001E 0395              inc R16
 0020                   .dbline 24
 0020           ;  temp = ~(temp);
 0020 0095              com R16
 0022                   .dbline 25
 0022           ;  temp = temp>>1;
 0022 0695              lsr R16
 0024                   .dbline 26
 0024           ;  PORTG |= 0x08;
 0024 A39A              sbi 0x14,3
 0026                   .dbline 27
 0026           ;  return temp;
 0026                   .dbline -2
 0026           L4:
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbsym r temp 16 c
 0028                   .dbend
 0028                   .dbfunc e init_data _init_data fV
 0028           ;              i -> R16
                        .even
 0028           _init_data::
 0028 0E940000          xcall push_gset2
 002C                   .dbline -1
 002C                   .dbline 32
 002C           ; }
 002C           ; 
 002C           ; 
 002C           ; void init_data(void)
 002C           ; {
 002C                   .dbline 35
 002C           ;  unsigned char i;
 002C           ; 
 002C           ;  for(i=0;i<12;i++)
 002C 0027              clr R16
 002E 19C0              xjmp L9
 0030           L6:
 0030                   .dbline 36
 0030                   .dbline 37
 0030 80E0              ldi R24,<_DI_data
 0032 90E0              ldi R25,>_DI_data
 0034 E02F              mov R30,R16
 0036 FF27              clr R31
 0038 E80F              add R30,R24
 003A F91F              adc R31,R25
 003C 8FEF              ldi R24,255
 003E 8083              std z+0,R24
 0040                   .dbline 38
 0040 80E0              ldi R24,<_DI_data_pre
 0042 90E0              ldi R25,>_DI_data_pre
 0044 E02F              mov R30,R16
 0046 FF27              clr R31
 0048 E80F              add R30,R24
 004A F91F              adc R31,R25
 004C 8FEF              ldi R24,255
 004E 8083              std z+0,R24
 0050                   .dbline 39
 0050 80E0              ldi R24,<_DI_data_cur
 0052 90E0              ldi R25,>_DI_data_cur
 0054 E02F              mov R30,R16
 0056 FF27              clr R31
 0058 E80F              add R30,R24
 005A F91F              adc R31,R25
 005C 8FEF              ldi R24,255
 005E 8083              std z+0,R24
 0060                   .dbline 40
 0060           L7:
 0060                   .dbline 35
 0060 0395              inc R16
 0062           L9:
 0062                   .dbline 35
 0062 0C30              cpi R16,12
 0064 28F3              brlo L6
 0066                   .dbline 41
 0066           ;  {
 0066           ;  DI_data[i] = 0xff;
 0066           ;   DI_data_pre[i] = 0xff;
 0066           ;    DI_data_cur[i] = 0xff;
 0066           ;  }
 0066           ;  for(i=0;i<3;i++)
 0066 0027              clr R16
 0068 09C0              xjmp L13
 006A           L10:
 006A                   .dbline 42
 006A 80E0              ldi R24,<_DI_Status
 006C 90E0              ldi R25,>_DI_Status
 006E E02F              mov R30,R16
 0070 FF27              clr R31
 0072 E80F              add R30,R24
 0074 F91F              adc R31,R25
 0076 2224              clr R2
 0078 2082              std z+0,R2
 007A           L11:
 007A                   .dbline 41
 007A 0395              inc R16
 007C           L13:
 007C                   .dbline 41
 007C 0330              cpi R16,3
 007E A8F3              brlo L10
 0080                   .dbline 43
 0080           ;  DI_Status[i]= 0;
 0080           ;  Time = 0;
 0080 2224              clr R2
 0082 20920000          sts _Time,R2
 0086                   .dbline 44
 0086           ;  Temp_Flag = 0;
 0086 20920000          sts _Temp_Flag,R2
 008A                   .dbline 45
 008A           ;  Send_Flag = 0;
 008A 20920000          sts _Send_Flag,R2
 008E                   .dbline 46
 008E           ;  Pass_Flag = 0;
 008E 20920000          sts _Pass_Flag,R2
 0092                   .dbline 47
 0092           ;  RUN = 0;
 0092 3324              clr R3
 0094 30920100          sts _RUN+1,R3
 0098 20920000          sts _RUN,R2
 009C                   .dbline 48
 009C           ;  id1 = 0;
 009C 40E0              ldi R20,0
 009E 50E0              ldi R21,0
 00A0 60E0              ldi R22,0
 00A2 70E0              ldi R23,0
 00A4 50930100          sts _id1+1,R21
 00A8 40930000          sts _id1,R20
 00AC 70930300          sts _id1+2+1,R23
 00B0 60930200          sts _id1+2,R22
 00B4                   .dbline 49
 00B4           ;  id2 = 0;
 00B4 40E0              ldi R20,0
 00B6 50E0              ldi R21,0
 00B8 60E0              ldi R22,0
 00BA 70E0              ldi R23,0
 00BC 50930100          sts _id2+1,R21
 00C0 40930000          sts _id2,R20
 00C4 70930300          sts _id2+2+1,R23
 00C8 60930200          sts _id2+2,R22
 00CC                   .dbline 50
 00CC           ;  id3 = 0;
 00CC 40E0              ldi R20,0
 00CE 50E0              ldi R21,0
 00D0 60E0              ldi R22,0
 00D2 70E0              ldi R23,0
 00D4 50930100          sts _id3+1,R21
 00D8 40930000          sts _id3,R20
 00DC 70930300          sts _id3+2+1,R23
 00E0 60930200          sts _id3+2,R22
 00E4                   .dbline 51
 00E4           ;  id4 = 0;
 00E4 40E0              ldi R20,0
 00E6 50E0              ldi R21,0
 00E8 60E0              ldi R22,0
 00EA 70E0              ldi R23,0
 00EC 50930100          sts _id4+1,R21
 00F0 40930000          sts _id4,R20
 00F4 70930300          sts _id4+2+1,R23
 00F8 60930200          sts _id4+2,R22
 00FC                   .dbline 52
 00FC           ;  id5 = 0;
 00FC 40E0              ldi R20,0
 00FE 50E0              ldi R21,0
 0100 60E0              ldi R22,0
 0102 70E0              ldi R23,0
 0104 50930100          sts _id5+1,R21
 0108 40930000          sts _id5,R20
 010C 70930300          sts _id5+2+1,R23
 0110 60930200          sts _id5+2,R22
 0114                   .dbline 53
 0114           ;  send_count = 0;
 0114 20920000          sts _send_count,R2
 0118                   .dbline -2
 0118           L5:
 0118 0E940000          xcall pop_gset2
 011C                   .dbline 0 ; func end
 011C 0895              ret
 011E                   .dbsym r i 16 c
 011E                   .dbend

⌨️ 快捷键说明

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