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

📄 128can.lst

📁 工业开关量检测模块的原代码,带断线检测功能
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    00CB EFCF      LDI	R28,0xFF
    00CC E1D0      LDI	R29,0x10
    00CD BFCD      OUT	0x3D,R28
    00CE BFDE      OUT	0x3E,R29
    00CF 52C0      SUBI	R28,0x20
    00D0 40D0      SBCI	R29,0
    00D1 EA0A      LDI	R16,0xAA
    00D2 8308      STD	Y+0,R16
    00D3 2400      CLR	R0
    00D4 EFE0      LDI	R30,0xF0
    00D5 E0F1      LDI	R31,1
    00D6 E012      LDI	R17,2
    00D7 37E6      CPI	R30,0x76
    00D8 07F1      CPC	R31,R17
    00D9 F011      BEQ	0x00DC
    00DA 9201      ST	R0,Z+
    00DB CFFB      RJMP	0x00D7
    00DC 8300      STD	Z+0,R16
    00DD EAE6      LDI	R30,0xA6
    00DE E0F0      LDI	R31,0
    00DF E0A0      LDI	R26,0
    00E0 E0B1      LDI	R27,1
    00E1 E011      LDI	R17,1
    00E2 39E6      CPI	R30,0x96
    00E3 07F1      CPC	R31,R17
    00E4 F021      BEQ	0x00E9
    00E5 95C8      LPM
    00E6 9631      ADIW	R30,1
    00E7 920D      ST	R0,X+
    00E8 CFF9      RJMP	0x00E2
    00E9 940E0123  CALL	_main
_exit:
    00EB CFFF      RJMP	_exit
_timer0_ovf_isr:
    00EC 940E0C22  CALL	push_lset
FILE: D:\报警系统设计资料\报警系统软件\测量模块基于CAN的系统网程序\开关量CAN网\main.c
(0001) #include "main.h"
(0002) 
(0003) VCI_CAN_OBJ msg[2],rece_data[3];
(0004) long id1,id2,id3,id4,id5;
(0005) 
(0006) unsigned char ID_nu,ID_net;
(0007) unsigned char Pass_Flag,Send_Flag,Temp_Flag,Time;
(0008) extern Uchar DI_Status[3],send_count;
(0009) extern Uchar PINA_temp,PINB_temp,PINE_temp,PINF_temp;
(0010) extern unsigned char DI_data_cur[12],DI_data[12],DI_data_pre[12];
(0011) unsigned int RUN;
(0012) 
(0013) extern unsigned long CANMOBID[15];
(0014) extern unsigned long CANMOBMD[15];
(0015) 
(0016) 
(0017) 
(0018) #pragma abs_address: 0x29B0     
(0019)   asm("nop");
(0020)   asm("nop");
(0021)   RESET;
(0022) #pragma end_abs_address
(0023) 
(0024) #pragma abs_address: 0x39B0     
(0025)   asm("nop");
(0026)   asm("nop");
(0027)   RESET;
(0028) #pragma end_abs_address
(0029) 
(0030) #pragma abs_address: 0x49B0     
(0031)   asm("nop");
(0032)   asm("nop");
(0033)   RESET;
(0034) #pragma end_abs_address
(0035) 
(0036) #pragma abs_address: 0x59B0     
(0037)   asm("nop");
(0038)   asm("nop");
(0039)   RESET;
(0040) #pragma end_abs_address
(0041) 
(0042) #pragma abs_address: 0x69B0     
(0043)   asm("nop");
(0044)   asm("nop");
(0045)   RESET;
(0046) #pragma end_abs_address
(0047) 
(0048) #pragma abs_address: 0x79B0     
(0049)   asm("nop");
(0050)   asm("nop");
(0051)   RESET;
(0052) #pragma end_abs_address
(0053) 
(0054) #pragma abs_address: 0x89B0     
(0055)   asm("nop");
(0056)   asm("nop");
(0057)   RESET;
(0058) #pragma end_abs_address
(0059) 
(0060) #pragma abs_address: 0x99B0     
(0061)   asm("nop");
(0062)   asm("nop");
(0063)   RESET;
(0064) #pragma end_abs_address
(0065) 
(0066) #pragma abs_address: 0xA9B0     
(0067)   asm("nop");
(0068)   asm("nop");
(0069)   RESET;
(0070) #pragma end_abs_address
(0071) 
(0072) #pragma abs_address: 0xB9B0     
(0073)   asm("nop");
(0074)   asm("nop");
(0075)   RESET;
(0076) #pragma end_abs_address
(0077) 
(0078) #pragma abs_address: 0xC9B0     
(0079)   asm("nop");
(0080)   asm("nop");
(0081)   RESET;
(0082) #pragma end_abs_address
(0083) 
(0084) #pragma abs_address: 0xD9B0     
(0085)   asm("nop");
(0086)   asm("nop");
(0087)   RESET;
(0088) #pragma end_abs_address
(0089) 
(0090) #pragma abs_address: 0xE9B0     
(0091)   asm("nop");
(0092)   asm("nop");
(0093)   RESET;
(0094) #pragma end_abs_address
(0095) 
(0096) #pragma abs_address: 0xF9B0     
(0097)   asm("nop");
(0098)   asm("nop");
(0099)   RESET;
(0100) #pragma end_abs_address
(0101) 
(0102) 
(0103) #pragma abs_address: 0x0004     
(0104)   asm("nop");
(0105)   asm("nop");
(0106)   RESET;
(0107) #pragma end_abs_address
(0108) 
(0109) #pragma abs_address: 0x000C    
(0110)   asm("nop");
(0111)   asm("nop");
(0112)   RESET;
(0113) #pragma end_abs_address
(0114) 
(0115) #pragma abs_address: 0x0014  
(0116)   asm("nop");
(0117)   asm("nop");
(0118)   RESET;
(0119) #pragma end_abs_address
(0120) 
(0121) #pragma abs_address: 0x001C    
(0122)   asm("nop");
(0123)   asm("nop");
(0124)   RESET;
(0125) #pragma end_abs_address
(0126) 
(0127) #pragma abs_address: 0x0024    
(0128)   asm("nop");
(0129)   asm("nop");
(0130)   RESET;
(0131) #pragma end_abs_address
(0132) 
(0133) #pragma abs_address: 0x002C     
(0134)   asm("nop");
(0135)   asm("nop");
(0136)   RESET;
(0137) #pragma end_abs_address
(0138) 
(0139) #pragma abs_address: 0x0034     
(0140)   asm("nop");
(0141)   asm("nop");
(0142)   RESET;
(0143) #pragma end_abs_address
(0144) 
(0145) #pragma abs_address: 0x003C    
(0146)   asm("nop");
(0147)   asm("nop");
(0148)   RESET;
(0149) #pragma end_abs_address
(0150) 
(0151) #pragma abs_address: 0x004C   
(0152)   asm("nop");
(0153)   asm("nop");
(0154)   RESET;
(0155) #pragma end_abs_address
(0156) 
(0157) #pragma abs_address: 0x0054     
(0158)   asm("nop");
(0159)   asm("nop");
(0160)   RESET;
(0161) #pragma end_abs_address
(0162) 
(0163) #pragma abs_address: 0x005C     
(0164)   asm("nop");
(0165)   asm("nop");
(0166)   RESET;
(0167) #pragma end_abs_address
(0168) 
(0169) #pragma abs_address: 0x0064     
(0170)   asm("nop");
(0171)   asm("nop");
(0172)   RESET;
(0173) #pragma end_abs_address
(0174) 
(0175) #pragma abs_address: 0x006C    
(0176)   asm("nop");
(0177)   asm("nop");
(0178)   RESET;
(0179) #pragma end_abs_address
(0180) 
(0181) #pragma abs_address: 0x0074     
(0182)   asm("nop");
(0183)   asm("nop");
(0184)   RESET;
(0185) #pragma end_abs_address
(0186) 
(0187) #pragma abs_address: 0x007C    
(0188)   asm("nop");
(0189)   asm("nop");
(0190)   RESET;
(0191) #pragma end_abs_address
(0192) 
(0193) #pragma abs_address: 0x0084     
(0194)   asm("nop");
(0195)   asm("nop");
(0196)   RESET;
(0197) #pragma end_abs_address
(0198) 
(0199) 
(0200) 
(0201) #pragma interrupt_handler timer0_ovf_isr:18
(0202) void timer0_ovf_isr(void)                              //定时1毫秒
(0203) {
(0204)  TCNT0 = 0x83; //reload counter value
    00EE E883      LDI	R24,0x83
    00EF BD86      OUT	0x26,R24
(0205)  Time++;
    00F0 918001F2  LDS	R24,Time
    00F2 5F8F      SUBI	R24,0xFF
    00F3 938001F2  STS	Time,R24
(0206)  RUN++;
    00F5 918001F0  LDS	R24,RUN
    00F7 919001F1  LDS	R25,RUN+1
    00F9 9601      ADIW	R24,1
    00FA 939001F1  STS	RUN+1,R25
    00FC 938001F0  STS	RUN,R24
(0207)  if(Time>25)
    00FE E189      LDI	R24,0x19
    00FF 902001F2  LDS	R2,Time
    0101 1582      CP	R24,R2
    0102 F440      BCC	0x010B
(0208)  {
(0209)  Time = 0;
    0103 2422      CLR	R2
    0104 922001F2  STS	Time,R2
(0210)  Temp_Flag = 0x5a;
    0106 E58A      LDI	R24,0x5A
    0107 938001F3  STS	Temp_Flag,R24
(0211)  RUN_LED();
    0109 940E0878  CALL	_RUN_LED
(0212)  }
(0213)  if(RUN>50)
    010B E382      LDI	R24,0x32
    010C E090      LDI	R25,0
    010D 902001F0  LDS	R2,RUN
    010F 903001F1  LDS	R3,RUN+1
    0111 1582      CP	R24,R2
    0112 0593      CPC	R25,R3
    0113 F460      BCC	0x0120
(0214)  {
(0215)  WDR();
    0114 95A8      WDR
(0216)  RUN_LED();
    0115 940E0878  CALL	_RUN_LED
(0217)  RUN = 0;
    0117 2422      CLR	R2
    0118 2433      CLR	R3
    0119 923001F1  STS	RUN+1,R3
    011B 922001F0  STS	RUN,R2
(0218)  Send_Flag = 0x5a;
    011D E58A      LDI	R24,0x5A
    011E 938001F4  STS	Send_Flag,R24
(0219)  }
    0120 940E0C39  CALL	pop_lset
    0122 9518      RETI
_main:
  tempp                --> Y,+0
  i                    --> R10
    0123 976C      SBIW	R28,0x1C
(0220) }
(0221) 
(0222) void main(void)
(0223) {
(0224)  unsigned char i;
(0225)  long tempp;
(0226)  CLI();
    0124 94F8      BCLR	7
(0227)  init_devices();                                             //器件初始化
    0125 940E0B07  CALL	_init_devices
(0228)  init_data();                                                //数据初始化
    0127 940E088C  CALL	_init_data
(0229)  
(0230)  ID_nu = get_id();                                           //读取拨码开关的值
    0129 940E0881  CALL	_get_id
    012B 930001F7  STS	ID_nu,R16
(0231)  ID_net = ID_nu;                                             //计算网络ID号
    012D 2E20      MOV	R2,R16
    012E 922001F6  STS	ID_net,R2
(0232) 
(0233)  Pass_Flag = 0x01;
    0130 E081      LDI	R24,1
    0131 938001F5  STS	Pass_Flag,R24
(0234)  tempp = ID_net*256;
    0133 2D22      MOV	R18,R2
    0134 2733      CLR	R19
    0135 E000      LDI	R16,0
    0136 E011      LDI	R17,1
    0137 940E0B88  CALL	empy16s
    0139 0118      MOVW	R2,R16
    013A 2444      CLR	R4
    013B FC37      SBRC	R3,7
    013C 9440      COM	R4
    013D 2455      CLR	R5
    013E FC47      SBRC	R4,7
    013F 9450      COM	R5
    0140 8228      STD	Y+0,R2
    0141 8239      STD	Y+1,R3
    0142 824A      STD	Y+2,R4
    0143 825B      STD	Y+3,R5
(0235)  Pass_Flag <<= 1;
    0144 902001F5  LDS	R2,Pass_Flag
    0146 0C22      LSL	R2
    0147 922001F5  STS	Pass_Flag,R2
(0236)  id1 = BASE_ADDR+tempp;
    0149 E040      LDI	R20,0
    014A E050      LDI	R21,0
    014B E268      LDI	R22,0x28
    014C E070      LDI	R23,0
    014D 8028      LDD	R2,Y+0
    014E 8039      LDD	R3,Y+1
    014F 804A      LDD	R4,Y+2
    0150 805B      LDD	R5,Y+3
    0151 0E24      ADD	R2,R20
    0152 1E35      ADC	R3,R21
    0153 1E46      ADC	R4,R22
    0154 1E57      ADC	R5,R23
    0155 92300209  STS	id1+1,R3
    0157 92200208  STS	id1,R2
    0159 9250020B  STS	id1+3,R5
    015B 9240020A  STS	id1+2,R4
(0237)  id2 = BASE_ADDR+1+tempp;
    015D E041      LDI	R20,1
    015E E050      LDI	R21,0
    015F E268      LDI	R22,0x28
    0160 E070      LDI	R23,0
    0161 8028      LDD	R2,Y+0
    0162 8039      LDD	R3,Y+1
    0163 804A      LDD	R4,Y+2
    0164 805B      LDD	R5,Y+3
    0165 0E24      ADD	R2,R20
    0166 1E35      ADC	R3,R21
    0167 1E46      ADC	R4,R22
    0168 1E57      ADC	R5,R23
    0169 92300205  STS	id2+1,R3
    016B 92200204  STS	id2,R2
    016D 92500207  STS	id2+3,R5
    016F 92400206  STS	id2+2,R4
(0238)  id3 = BASE_ADDR/256+tempp*256;
    0171 8028      LDD	R2,Y+0
    0172 8039      LDD	R3,Y+1
    0173 804A      LDD	R4,Y+2
    0174 805B      LDD	R5,Y+3
    0175 E040      LDI	R20,0
    0176 E051      LDI	R21,1
    0177 E060      LDI	R22,0
    0178 E070      LDI	R23,0
    0179 925A      ST	R5,-Y
    017A 924A      ST	R4,-Y
    017B 923A      ST	R3,-Y
    017C 922A      ST	R2,-Y
    017D 018A      MOVW	R16,R20
    017E 019B      MOVW	R18,R22
    017F 940E0B98  CALL	empy32s
    0181 E040      LDI	R20,0
    0182 E258      LDI	R21,0x28
    0183 E060      LDI	R22,0
    0184 E070      LDI	R23,0
    0185 0118      MOVW	R2,R16
    0186 0129      MOVW	R4,R18
    0187 0E24      ADD	R2,R20
    0188 1E35      ADC	R3,R21
    0189 1E46      ADC	R4,R22
    018A 1E57      ADC	R5,R23
    018B 92300201  STS	id3+1,R3
    018D 92200200  STS	id3,R2
    018F 92500203  STS	id3+3,R5
    0191 92400202  STS	id3+2,R4
(0239)  Pass_Flag <<= 1;
    0193 902001F5  LDS	R2,Pass_Flag
    0195 0C22      LSL	R2
    0196 922001F5  STS	Pass_Flag,R2
(0240)  id4 = BASE_ADDR/256+tempp*256+1;
    0198 8028      LDD	R2,Y+0
    0199 8039      LDD	R3,Y+1
    019A 804A      LDD	R4,Y+2
    019B 805B      LDD	R5,Y+3
    019C E040      LDI	R20,0
    019D E051      LDI	R21,1
    019E E060      LDI	R22,0
    019F E070      LDI	R23,0
    01A0 925A      ST	R5,-Y
    01A1 924A      ST	R4,-Y
    01A2 923A      ST	R3,-Y

⌨️ 快捷键说明

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