📄 128can.lst
字号:
__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 + -