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

📄 alarm_pannel.lst

📁 LED显示面板
💻 LST
📖 第 1 页 / 共 5 页
字号:
    023C 922006C9  STS	Pass_Flag,R2
(0116)    for (i=0; i<3; i++)
    023E 2744      CLR	R20
    023F C068      RJMP	0x02A8
(0117)    {
(0118) 	 CANPAGE = (i<<4);                   //MOb 0,1,2设置为接收模式模式
    0240 2F84      MOV	R24,R20
    0241 708F      ANDI	R24,0xF
    0242 9582      SWAP	R24
    0243 EEED      LDI	R30,0xED
    0244 E0F0      LDI	R31,0
    0245 8380      STD	Z+0,R24
(0119)      CANIDT1 = CANIDT[i][0];        		//初始化 ID
    0246 E084      LDI	R24,4
    0247 9F84      MUL	R24,R20
    0248 01F0      MOVW	R30,R0
    0249 E788      LDI	R24,0x78
    024A E091      LDI	R25,1
    024B 0FE8      ADD	R30,R24
    024C 1FF9      ADC	R31,R25
    024D 8020      LDD	R2,Z+0
    024E EFE3      LDI	R30,0xF3
    024F E0F0      LDI	R31,0
    0250 8220      STD	Z+0,R2
(0120)      CANIDT2 = CANIDT[i][1];
    0251 E084      LDI	R24,4
    0252 9F84      MUL	R24,R20
    0253 01F0      MOVW	R30,R0
    0254 E789      LDI	R24,0x79
    0255 E091      LDI	R25,1
    0256 0FE8      ADD	R30,R24
    0257 1FF9      ADC	R31,R25
    0258 8020      LDD	R2,Z+0
    0259 EFE2      LDI	R30,0xF2
    025A E0F0      LDI	R31,0
    025B 8220      STD	Z+0,R2
(0121)      CANIDT3 = CANIDT[i][2];
    025C E084      LDI	R24,4
    025D 9F84      MUL	R24,R20
    025E 01F0      MOVW	R30,R0
    025F E78A      LDI	R24,0x7A
    0260 E091      LDI	R25,1
    0261 0FE8      ADD	R30,R24
    0262 1FF9      ADC	R31,R25
    0263 8020      LDD	R2,Z+0
    0264 EFE1      LDI	R30,0xF1
    0265 E0F0      LDI	R31,0
    0266 8220      STD	Z+0,R2
(0122)      CANIDT4 = CANIDT[i][3];
    0267 E084      LDI	R24,4
    0268 9F84      MUL	R24,R20
    0269 01F0      MOVW	R30,R0
    026A E78B      LDI	R24,0x7B
    026B E091      LDI	R25,1
    026C 0FE8      ADD	R30,R24
    026D 1FF9      ADC	R31,R25
    026E 8020      LDD	R2,Z+0
    026F EFE0      LDI	R30,0xF0
    0270 E0F0      LDI	R31,0
    0271 8220      STD	Z+0,R2
(0123)      CANIDM1 = CANIDM[i][0];            	//初始化 mask
    0272 E084      LDI	R24,4
    0273 9F84      MUL	R24,R20
    0274 01F0      MOVW	R30,R0
    0275 EB84      LDI	R24,0xB4
    0276 E091      LDI	R25,1
    0277 0FE8      ADD	R30,R24
    0278 1FF9      ADC	R31,R25
    0279 8020      LDD	R2,Z+0
    027A EFE7      LDI	R30,0xF7
    027B E0F0      LDI	R31,0
    027C 8220      STD	Z+0,R2
(0124)      CANIDM2 = CANIDM[i][1];
    027D E084      LDI	R24,4
    027E 9F84      MUL	R24,R20
    027F 01F0      MOVW	R30,R0
    0280 EB85      LDI	R24,0xB5
    0281 E091      LDI	R25,1
    0282 0FE8      ADD	R30,R24
    0283 1FF9      ADC	R31,R25
    0284 8020      LDD	R2,Z+0
    0285 EFE6      LDI	R30,0xF6
    0286 E0F0      LDI	R31,0
    0287 8220      STD	Z+0,R2
(0125)      CANIDM3 = CANIDM[i][2];
    0288 E084      LDI	R24,4
    0289 9F84      MUL	R24,R20
    028A 01F0      MOVW	R30,R0
    028B EB86      LDI	R24,0xB6
    028C E091      LDI	R25,1
    028D 0FE8      ADD	R30,R24
    028E 1FF9      ADC	R31,R25
    028F 8020      LDD	R2,Z+0
    0290 EFE5      LDI	R30,0xF5
    0291 E0F0      LDI	R31,0
    0292 8220      STD	Z+0,R2
(0126)      CANIDM4 = CANIDM[i][3];               //0 = ignore bit
    0293 E084      LDI	R24,4
    0294 9F84      MUL	R24,R20
    0295 01F0      MOVW	R30,R0
    0296 EB87      LDI	R24,0xB7
    0297 E091      LDI	R25,1
    0298 0FE8      ADD	R30,R24
    0299 1FF9      ADC	R31,R25
    029A 8020      LDD	R2,Z+0
    029B EFE4      LDI	R30,0xF4
    029C E0F0      LDI	R31,0
    029D 8220      STD	Z+0,R2
(0127)     //CANIDM4 = (1<<IDEMSK);                          //identifier extention mask
(0128)      CANCDMOB = (2<<CONMOB0)|(1<<IDE)|(8<<DLC0);     //reception, ext. ID,rev2.0B
    029E E988      LDI	R24,0x98
    029F EEEF      LDI	R30,0xEF
    02A0 8380      STD	Z+0,R24
(0129) 	 NOP();
    02A1 0000      NOP
(0130) 	 Pass_Flag = Pass_Flag + 1;		
    02A2 918006C9  LDS	R24,Pass_Flag
    02A4 5F8F      SUBI	R24,0xFF
    02A5 938006C9  STS	Pass_Flag,R24
    02A7 9543      INC	R20
    02A8 3043      CPI	R20,3
    02A9 F408      BCC	0x02AB
    02AA CF95      RJMP	0x0240
(0131) 	}
(0132) 	 
(0133) 	  if(Pass_Flag!=0x03)
    02AB 918006C9  LDS	R24,Pass_Flag
    02AD 3083      CPI	R24,3
    02AE F011      BEQ	0x02B1
(0134) 	    RESET;
    02AF 940C0000  JMP	0x0
(0135) 		
(0136) 	 WDR();
    02B1 95A8      WDR
(0137) 	 
(0138) 	  Pass_Flag = 0x00;
    02B2 2422      CLR	R2
    02B3 922006C9  STS	Pass_Flag,R2
(0139) 	for(i=3;i<6;i++)                       
    02B5 E043      LDI	R20,3
    02B6 C068      RJMP	0x031F
(0140) 	{
(0141) 	 CANPAGE = (i<<4);                   //MOb3,4,5设置为发送模式
    02B7 2F84      MOV	R24,R20
    02B8 708F      ANDI	R24,0xF
    02B9 9582      SWAP	R24
    02BA EEED      LDI	R30,0xED
    02BB E0F0      LDI	R31,0
    02BC 8380      STD	Z+0,R24
(0142)      CANIDT1 = CANIDT[i][0];        		//初始化 ID
    02BD E084      LDI	R24,4
    02BE 9F84      MUL	R24,R20
    02BF 01F0      MOVW	R30,R0
    02C0 E788      LDI	R24,0x78
    02C1 E091      LDI	R25,1
    02C2 0FE8      ADD	R30,R24
    02C3 1FF9      ADC	R31,R25
    02C4 8020      LDD	R2,Z+0
    02C5 EFE3      LDI	R30,0xF3
    02C6 E0F0      LDI	R31,0
    02C7 8220      STD	Z+0,R2
(0143)      CANIDT2 = CANIDT[i][1];
    02C8 E084      LDI	R24,4
    02C9 9F84      MUL	R24,R20
    02CA 01F0      MOVW	R30,R0
    02CB E789      LDI	R24,0x79
    02CC E091      LDI	R25,1
    02CD 0FE8      ADD	R30,R24
    02CE 1FF9      ADC	R31,R25
    02CF 8020      LDD	R2,Z+0
    02D0 EFE2      LDI	R30,0xF2
    02D1 E0F0      LDI	R31,0
    02D2 8220      STD	Z+0,R2
(0144)      CANIDT3 = CANIDT[i][2];
    02D3 E084      LDI	R24,4
    02D4 9F84      MUL	R24,R20
    02D5 01F0      MOVW	R30,R0
    02D6 E78A      LDI	R24,0x7A
    02D7 E091      LDI	R25,1
    02D8 0FE8      ADD	R30,R24
    02D9 1FF9      ADC	R31,R25
    02DA 8020      LDD	R2,Z+0
    02DB EFE1      LDI	R30,0xF1
    02DC E0F0      LDI	R31,0
    02DD 8220      STD	Z+0,R2
(0145)      CANIDT4 = CANIDT[i][3];
    02DE E084      LDI	R24,4
    02DF 9F84      MUL	R24,R20
    02E0 01F0      MOVW	R30,R0
    02E1 E78B      LDI	R24,0x7B
    02E2 E091      LDI	R25,1
    02E3 0FE8      ADD	R30,R24
    02E4 1FF9      ADC	R31,R25
    02E5 8020      LDD	R2,Z+0
    02E6 EFE0      LDI	R30,0xF0
    02E7 E0F0      LDI	R31,0
    02E8 8220      STD	Z+0,R2
(0146)      CANIDM1 = CANIDM[i][0];            	//初始化 mask
    02E9 E084      LDI	R24,4
    02EA 9F84      MUL	R24,R20
    02EB 01F0      MOVW	R30,R0
    02EC EB84      LDI	R24,0xB4
    02ED E091      LDI	R25,1
    02EE 0FE8      ADD	R30,R24
    02EF 1FF9      ADC	R31,R25
    02F0 8020      LDD	R2,Z+0
    02F1 EFE7      LDI	R30,0xF7
    02F2 E0F0      LDI	R31,0
    02F3 8220      STD	Z+0,R2
(0147)      CANIDM2 = CANIDM[i][1];
    02F4 E084      LDI	R24,4
    02F5 9F84      MUL	R24,R20
    02F6 01F0      MOVW	R30,R0
    02F7 EB85      LDI	R24,0xB5
    02F8 E091      LDI	R25,1
    02F9 0FE8      ADD	R30,R24
    02FA 1FF9      ADC	R31,R25
    02FB 8020      LDD	R2,Z+0
    02FC EFE6      LDI	R30,0xF6
    02FD E0F0      LDI	R31,0
    02FE 8220      STD	Z+0,R2
(0148)      CANIDM3 = CANIDM[i][2];
    02FF E084      LDI	R24,4
    0300 9F84      MUL	R24,R20
    0301 01F0      MOVW	R30,R0
    0302 EB86      LDI	R24,0xB6
    0303 E091      LDI	R25,1
    0304 0FE8      ADD	R30,R24
    0305 1FF9      ADC	R31,R25
    0306 8020      LDD	R2,Z+0
    0307 EFE5      LDI	R30,0xF5
    0308 E0F0      LDI	R31,0
    0309 8220      STD	Z+0,R2
(0149)      CANIDM4 = CANIDM[i][3];               //0 = ignore bit
    030A E084      LDI	R24,4
    030B 9F84      MUL	R24,R20
    030C 01F0      MOVW	R30,R0
    030D EB87      LDI	R24,0xB7
    030E E091      LDI	R25,1
    030F 0FE8      ADD	R30,R24
    0310 1FF9      ADC	R31,R25
    0311 8020      LDD	R2,Z+0
    0312 EFE4      LDI	R30,0xF4
    0313 E0F0      LDI	R31,0
    0314 8220      STD	Z+0,R2
(0150)      CANCDMOB = (1<<IDE)|(8<<DLC0);    
    0315 E188      LDI	R24,0x18
    0316 EEEF      LDI	R30,0xEF
    0317 8380      STD	Z+0,R24
(0151) 	 NOP();
    0318 0000      NOP
(0152) 	  Pass_Flag = Pass_Flag + 1;		
    0319 918006C9  LDS	R24,Pass_Flag
    031B 5F8F      SUBI	R24,0xFF
    031C 938006C9  STS	Pass_Flag,R24
    031E 9543      INC	R20
    031F 3046      CPI	R20,6
    0320 F408      BCC	0x0322
    0321 CF95      RJMP	0x02B7
(0153) 	}
(0154) 	   if(Pass_Flag!=0x03)
    0322 918006C9  LDS	R24,Pass_Flag
    0324 3083      CPI	R24,3
    0325 F011      BEQ	0x0328
(0155) 	    RESET;
    0326 940C0000  JMP	0x0
(0156) 		
(0157) 	CANGCON = (1<<ENASTB);                //start CAN interface, enable mod
    0328 E082      LDI	R24,2
    0329 EDE8      LDI	R30,0xD8
    032A E0F0      LDI	R31,0
    032B 8380      STD	Z+0,R24
(0158) 	
(0159) 	CANGIE = (1<<ENIT)| (1<<ENRX)|(1<<ENTX);    //enable receive interrupt and transmitte interrupt 
    032C EB80      LDI	R24,0xB0
    032D EDEB      LDI	R30,0xDB
    032E 8380      STD	Z+0,R24
(0160) 	CANIE1 = 0x00;                  
    032F 2422      CLR	R2
    0330 EDEF      LDI	R30,0xDF
    0331 8220      STD	Z+0,R2
(0161) 	CANIE2 = 0x3f;                              //enable ALL MObs interrupt
    0332 E38F      LDI	R24,0x3F
    0333 EDEE      LDI	R30,0xDE
    0334 8380      STD	Z+0,R24
(0162)     
(0163) 	 WDR();
    0335 95A8      WDR
(0164)     while (!(CANGSTA & (1<<ENFG)));         //wait until module ready
    0336 EDE9      LDI	R30,0xD9
    0337 E0F0      LDI	R31,0
    0338 8020      LDD	R2,Z+0
    0339 FE22      SBRS	R2,2
    033A CFFB      RJMP	0x0336
(0165) 	
(0166)     CANGCON |= (1<<ENA);      //enable CAN controller
    033B 918000D8  LDS	R24,0xD8
    033D 6082      ORI	R24,2
    033E 938000D8  STS	0xD8,R24
(0167) 	
(0168) 	SEI();
    0340 9478      BSET	7
    0341 9624      ADIW	R28,4
    0342 940E224B  CALL	pop_gset3
    0344 9508      RET
_can_tx:
  temp_id              --> Y+0
  index                --> R14
  pass_Flag            --> R12
  i                    --> R12
  msg                  --> R10
    0345 940E2254  CALL	push_gset5
    0347 0158      MOVW	R10,R16
    0348 9724      SBIW	R28,4
(0169) }
(0170) 
(0171) 
(0172) 
(0173) /*******************************************************************
(0174) CAN transmission via mailbox 1 (polling)
(0175) *******************************************************************/
(0176) void can_tx (VCI_CAN_OBJ msg)
(0177) {
(0178)     unsigned char i,index,pass_Flag;
(0179) 	long temp_id;
(0180) 	
(0181) 	pass_Flag = 0x01;
    0349 24CC      CLR	R12
    034A 94C3      INC	R12
(0182) 	pass_Flag <<= 1;
    034B 0CCC      LSL	R12
(0183) 	msg.ID <<= 3;    
    034C E083      LDI	R24,3
    034D E090      LDI	R25,0
    034E 01F5      MOVW	R30,R10
    034F 8100      LDD	R16,Z+0
    0350 8111      LDD	R17,Z+1
    0351 8122      LDD	R18,Z+2
    0352 8133      LDD	R19,Z+3
    0353 938A      ST	R24,-Y
    0354 940E22C5  CALL	lsl32
    0356 01F5      MOVW	R30,R10
    0357 8300      STD	Z+0,R16
    0358 8311      STD	Z+1,R17
    0359 8322      STD	Z+2,R18
    035A 8333      STD	Z+3,R19
(0184) 	temp_id = msg.ID&0x0f000000 ;
    035B E040      LDI	R20,0
    035C E050      LDI	R21,0
    035D E060      LDI	R22,0
    035E E07F      LDI	R23,0xF
    035F 8020      LDD	R2,Z+0
    0360 8031      LDD	R3,Z+1
    0361 8042      LDD	R4,Z+2
    0362 8053      LDD	R5,Z+3
    0363 2224      AND	R2,R20
    0364 2235      AND	R3,R21
    0365 2246      AND	R4,R22
    0366 2257      AND	R5,R23
    0367 8228      STD	Y+0,R2
    0368 8239      STD	Y+1,R3
    0369 824A      STD	Y+2,R4
    036A 825B      STD	Y+3,R5
(0185) 	index =( unsigned char )(temp_id>>24);
    036B E188      LDI	R24,0x18
    036C E090      LDI	R25,0
    036D 8108      LDD	R16,Y+0
    036E 8119      LDD	R17,Y+1
    036F 812A      LDD	R18,Y+2
    0370 813B      LDD	R19,Y+3
    0371 938A      ST	R24,-Y
    0372 940E21F8  CALL	asr32
    0374 2EE0      MOV	R14,R16
(0186) 	index = index + 3;
    0375 2D8E      MOV	R24,R14
    0376 5F8D      SUBI	R24,0xFD
    0377 2EE8      MOV	R14,R24
(0187)     CANPAGE = (index<<4);
    0378 708F      ANDI	R24,0xF
    0379 9582      SWAP	R24
    037A EEED      LDI	R30,0xED
    037B E0F0      LDI	R31,0
    037C 8380      STD	Z+0,R24
(0188)     CANCDMOB = (1<<IDE) |(8<<DLC0);   
    037D E188      LDI	R24,0x18
    037E EEEF      LDI	R30,0xEF
    037F 8380      STD	Z+0,R24
(0189) 	pass_Flag <<= 1;                                               
    0380 0CCC      LSL	R12
(0190)     CANIDT4 = (unsigned char) (msg.ID&0xF8);
    0381 EF48      LDI	R20,0xF8
    0382 E050      LDI	R21,0
    0383 E060      LDI	R22,0
    0384 E070      LDI	R23,0
    0385 01F5      MOVW	R30,R10
    0386 8020      LDD	R2,Z+0
    0387 8031      LDD	R3,Z+1
    0388 8042      LDD	R4,Z+2
    0389 8053      LDD	R5,Z+3
    038A 2224      AND	R2,R20

⌨️ 快捷键说明

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