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

📄 alarm_pannel.lst

📁 LED显示面板
💻 LST
📖 第 1 页 / 共 5 页
字号:
    038B 2235      AND	R3,R21
    038C 2246      AND	R4,R22
    038D 2257      AND	R5,R23
    038E EFE0      LDI	R30,0xF0
    038F E0F0      LDI	R31,0
    0390 8220      STD	Z+0,R2
(0191)     CANIDT3 = (unsigned char) (msg.ID>>8);
    0391 E088      LDI	R24,0x8
    0392 E090      LDI	R25,0
    0393 01F5      MOVW	R30,R10
    0394 8100      LDD	R16,Z+0
    0395 8111      LDD	R17,Z+1
    0396 8122      LDD	R18,Z+2
    0397 8133      LDD	R19,Z+3
    0398 938A      ST	R24,-Y
    0399 940E21F8  CALL	asr32
    039B EFE1      LDI	R30,0xF1
    039C E0F0      LDI	R31,0
    039D 8300      STD	Z+0,R16
(0192)     CANIDT2 = (unsigned char) (msg.ID>>16);
    039E 01F5      MOVW	R30,R10
    039F 8020      LDD	R2,Z+0
    03A0 8031      LDD	R3,Z+1
    03A1 8042      LDD	R4,Z+2
    03A2 8053      LDD	R5,Z+3
    03A3 0112      MOVW	R2,R4
    03A4 EFE2      LDI	R30,0xF2
    03A5 E0F0      LDI	R31,0
    03A6 8220      STD	Z+0,R2
(0193) 	pass_Flag <<= 1;
    03A7 0CCC      LSL	R12
(0194)     CANIDT1 = (unsigned char) (msg.ID>>24);
    03A8 E188      LDI	R24,0x18
    03A9 E090      LDI	R25,0
    03AA 01F5      MOVW	R30,R10
    03AB 8100      LDD	R16,Z+0
    03AC 8111      LDD	R17,Z+1
    03AD 8122      LDD	R18,Z+2
    03AE 8133      LDD	R19,Z+3
    03AF 938A      ST	R24,-Y
    03B0 940E21F8  CALL	asr32
    03B2 EFE3      LDI	R30,0xF3
    03B3 E0F0      LDI	R31,0
    03B4 8300      STD	Z+0,R16
(0195) 	if(pass_Flag!=0x08)
    03B5 2D8C      MOV	R24,R12
    03B6 3088      CPI	R24,0x8
    03B7 F011      BEQ	0x03BA
(0196) 	  RESET;
    03B8 940C0000  JMP	0x0
(0197)     for(i=0;i<8;i++)                               
    03BA 24CC      CLR	R12
    03BB C00B      RJMP	0x03C7
(0198)       {
(0199) 	   
(0200)        CANMSG = msg.Data[i];
    03BC 01C5      MOVW	R24,R10
    03BD 9604      ADIW	R24,4
    03BE 2DEC      MOV	R30,R12
    03BF 27FF      CLR	R31
    03C0 0FE8      ADD	R30,R24
    03C1 1FF9      ADC	R31,R25
    03C2 8020      LDD	R2,Z+0
    03C3 EFEA      LDI	R30,0xFA
    03C4 E0F0      LDI	R31,0
    03C5 8220      STD	Z+0,R2
    03C6 94C3      INC	R12
    03C7 2D8C      MOV	R24,R12
    03C8 3088      CPI	R24,0x8
    03C9 F390      BCS	0x03BC
(0201) 	  }        
(0202)     CANCDMOB |= (1<<CONMOB0);           //enable transmission
    03CA 918000EF  LDS	R24,0xEF
    03CC 6480      ORI	R24,0x40
    03CD 938000EF  STS	0xEF,R24
    03CF 9624      ADIW	R28,4
    03D0 940E2251  CALL	pop_gset5
    03D2 9508      RET
_can_ReceiveData:
  err_temp             --> R10
  sta_temp             --> R10
  jj                   --> R14
  RCtemp2              --> Y+9
  RCF                  --> Y+7
  tempp                --> Y+5
  id_temp              --> Y+0
  i                    --> Y+4
  nb_data              --> R12
    03D3 920A      ST	R0,-Y
    03D4 921A      ST	R1,-Y
    03D5 922A      ST	R2,-Y
    03D6 923A      ST	R3,-Y
    03D7 924A      ST	R4,-Y
    03D8 925A      ST	R5,-Y
    03D9 926A      ST	R6,-Y
    03DA 927A      ST	R7,-Y
    03DB 928A      ST	R8,-Y
    03DC 929A      ST	R9,-Y
    03DD 930A      ST	R16,-Y
    03DE 931A      ST	R17,-Y
    03DF 932A      ST	R18,-Y
    03E0 933A      ST	R19,-Y
    03E1 938A      ST	R24,-Y
    03E2 939A      ST	R25,-Y
    03E3 93AA      ST	R26,-Y
    03E4 93BA      ST	R27,-Y
    03E5 93EA      ST	R30,-Y
    03E6 93FA      ST	R31,-Y
    03E7 B60F      IN	R0,0x3F
    03E8 920A      ST	R0,-Y
    03E9 940E2254  CALL	push_gset5
    03EB 972B      SBIW	R28,0xB
(0203) }
(0204) 
(0205) 
(0206) #pragma interrupt_handler can_ReceiveData:19
(0207) void can_ReceiveData (void)             //receive interrupt 
(0208) {
(0209) 	unsigned char nb_data;
(0210) 	unsigned char i,err_temp,sta_temp,jj;
(0211) 	unsigned int  RCtemp2,tempp,RCF;
(0212) 	long id_temp;
(0213) 	
(0214) 	WDR();
    03EC 95A8      WDR
(0215)     CANGIE &= ~((1<<ENRX)|(1<<ENTX));                  //关接收中断
    03ED 918000DB  LDS	R24,0xDB
    03EF 7C8F      ANDI	R24,0xCF
    03F0 938000DB  STS	0xDB,R24
(0216) 	RCtemp2=CANSIT2;                       //读取中断信息
    03F2 EEE0      LDI	R30,0xE0
    03F3 E0F0      LDI	R31,0
    03F4 8020      LDD	R2,Z+0
    03F5 2433      CLR	R3
    03F6 863A      STD	Y+10,R3
    03F7 8629      STD	Y+9,R2
(0217) 	err_temp = CANTEC;                     //读取发送错误计数器
    03F8 EEEA      LDI	R30,0xEA
    03F9 80A0      LDD	R10,Z+0
(0218) 	
(0219) 	if(err_temp>96)                       
    03FA E680      LDI	R24,0x60
    03FB 158A      CP	R24,R10
    03FC F410      BCC	0x03FF
(0220) 	RESET;
    03FD 940C0000  JMP	0x0
(0221) 	
(0222) 	err_temp = CANREC;                   //读取接收错误计数器
    03FF EEEB      LDI	R30,0xEB
    0400 E0F0      LDI	R31,0
    0401 80A0      LDD	R10,Z+0
(0223) 	if(err_temp>128)
    0402 E880      LDI	R24,0x80
    0403 158A      CP	R24,R10
    0404 F410      BCC	0x0407
(0224) 	RESET;
    0405 940C0000  JMP	0x0
(0225) 	
(0226) 	if(RCtemp2&(0x38))
    0407 8589      LDD	R24,Y+9
    0408 859A      LDD	R25,Y+10
    0409 7388      ANDI	R24,0x38
    040A 7090      ANDI	R25,0
    040B 3080      CPI	R24,0
    040C 0789      CPC	R24,R25
    040D F159      BEQ	0x0439
(0227) 	{
(0228) 	for(i=3;i<6;i++)                    //查询前三个邮箱中断状态
    040E E083      LDI	R24,3
    040F 838C      STD	Y+4,R24
    0410 C024      RJMP	0x0435
(0229) 	{
(0230) 	  tempp=(1<<i);
    0411 812C      LDD	R18,Y+4
    0412 2733      CLR	R19
    0413 E001      LDI	R16,1
    0414 E010      LDI	R17,0
    0415 940E22BE  CALL	lsl16
    0417 831E      STD	Y+6,R17
    0418 830D      STD	Y+5,R16
(0231) 	  RCF=(RCtemp2&tempp);
    0419 8429      LDD	R2,Y+9
    041A 843A      LDD	R3,Y+10
    041B 2220      AND	R2,R16
    041C 2231      AND	R3,R17
    041D 8638      STD	Y+8,R3
    041E 822F      STD	Y+7,R2
(0232) 	   if(RCF!=0)
    041F 0101      MOVW	R0,R2
    0420 2022      TST	R2
    0421 F411      BNE	0x0424
    0422 2033      TST	R3
    0423 F071      BEQ	0x0432
(0233) 	    {  
(0234) 		 CANPAGE = i<<4;
    0424 818C      LDD	R24,Y+4
    0425 708F      ANDI	R24,0xF
    0426 9582      SWAP	R24
    0427 EEED      LDI	R30,0xED
    0428 E0F0      LDI	R31,0
    0429 8380      STD	Z+0,R24
(0235) 		 sta_temp = CANSTMOB;
    042A EEEE      LDI	R30,0xEE
    042B 80A0      LDD	R10,Z+0
(0236) 		 if(sta_temp&0x40)             //是发送完成中断
    042C FEA6      SBRS	R10,6
    042D C004      RJMP	0x0432
(0237) 		 {
(0238) 		     if(LED)
(0239) 	          send_led_on;
    042E 9A89      SBI	0x11,1
    042F C001      RJMP	0x0431
(0240) 		      else 
(0241) 		        send_led_off ;
    0430 9889      CBI	0x11,1
(0242) 		   
(0243) 		    WDR();
    0431 95A8      WDR
    0432 800C      LDD	R0,Y+4
    0433 9403      INC	R0
    0434 820C      STD	Y+4,R0
    0435 818C      LDD	R24,Y+4
    0436 3086      CPI	R24,6
    0437 F2C8      BCS	0x0411
(0244) 		 }
(0245) 		}
(0246) 	}
(0247) 	}
    0438 C465      RJMP	0x089E
(0248) 	else if(RCtemp2&(0x07))
    0439 8589      LDD	R24,Y+9
    043A 859A      LDD	R25,Y+10
    043B 7087      ANDI	R24,7
    043C 7090      ANDI	R25,0
    043D 3080      CPI	R24,0
    043E 0789      CPC	R24,R25
    043F F409      BNE	0x0441
    0440 C45D      RJMP	0x089E
(0249) 	{
(0250)     for(i=0;i<3;i++)                       //判断哪个邮箱产生接收中断
    0441 2400      CLR	R0
    0442 820C      STD	Y+4,R0
    0443 C456      RJMP	0x089A
(0251) 	 {
(0252) 	  tempp=(1<<i);
    0444 812C      LDD	R18,Y+4
    0445 2733      CLR	R19
    0446 E001      LDI	R16,1
    0447 E010      LDI	R17,0
    0448 940E22BE  CALL	lsl16
    044A 831E      STD	Y+6,R17
    044B 830D      STD	Y+5,R16
(0253) 	  RCF=(RCtemp2&tempp);
    044C 8429      LDD	R2,Y+9
    044D 843A      LDD	R3,Y+10
    044E 2220      AND	R2,R16
    044F 2231      AND	R3,R17
    0450 8638      STD	Y+8,R3
    0451 822F      STD	Y+7,R2
(0254) 	  if(RCF!=0)
    0452 0101      MOVW	R0,R2
    0453 2022      TST	R2
    0454 F419      BNE	0x0458
    0455 2033      TST	R3
    0456 F409      BNE	0x0458
    0457 C43F      RJMP	0x0897
(0255) 	    {  
(0256) 		    if(LED)
(0257)               rece_led_on;
    0458 9A88      SBI	0x11,0
    0459 C001      RJMP	0x045B
(0258) 			else
(0259) 		       rece_led_off;
    045A 9888      CBI	0x11,0
(0260) 		  CANPAGE = i<<4;
    045B 818C      LDD	R24,Y+4
    045C 708F      ANDI	R24,0xF
    045D 9582      SWAP	R24
    045E EEED      LDI	R30,0xED
    045F E0F0      LDI	R31,0
    0460 8380      STD	Z+0,R24
(0261) 		   WDR();
    0461 95A8      WDR
(0262) 		 
(0263) 	   id_temp = 0;
    0462 E040      LDI	R20,0
    0463 E050      LDI	R21,0
    0464 E060      LDI	R22,0
    0465 E070      LDI	R23,0
    0466 8348      STD	Y+0,R20
    0467 8359      STD	Y+1,R21
    0468 836A      STD	Y+2,R22
    0469 837B      STD	Y+3,R23
(0264)        id_temp  |= ((unsigned long) CANIDT1<<24);    //get identifier
    046A E188      LDI	R24,0x18
    046B E090      LDI	R25,0
    046C EFE3      LDI	R30,0xF3
    046D 8100      LDD	R16,Z+0
    046E 2711      CLR	R17
    046F 2722      CLR	R18
    0470 2733      CLR	R19
    0471 938A      ST	R24,-Y
    0472 940E22C5  CALL	lsl32
    0474 8028      LDD	R2,Y+0
    0475 8039      LDD	R3,Y+1
    0476 804A      LDD	R4,Y+2
    0477 805B      LDD	R5,Y+3
    0478 2A20      OR	R2,R16
    0479 2A31      OR	R3,R17
    047A 2A42      OR	R4,R18
    047B 2A53      OR	R5,R19
    047C 8228      STD	Y+0,R2
    047D 8239      STD	Y+1,R3
    047E 824A      STD	Y+2,R4
    047F 825B      STD	Y+3,R5
(0265)        id_temp  |= ((unsigned long) CANIDT2<<16);
    0480 EFE2      LDI	R30,0xF2
    0481 E0F0      LDI	R31,0
    0482 8020      LDD	R2,Z+0
    0483 2433      CLR	R3
    0484 2444      CLR	R4
    0485 2455      CLR	R5
    0486 0121      MOVW	R4,R2
    0487 2422      CLR	R2
    0488 2433      CLR	R3
    0489 8068      LDD	R6,Y+0
    048A 8079      LDD	R7,Y+1
    048B 808A      LDD	R8,Y+2
    048C 809B      LDD	R9,Y+3
    048D 2862      OR	R6,R2
    048E 2873      OR	R7,R3
    048F 2884      OR	R8,R4
    0490 2895      OR	R9,R5
    0491 8268      STD	Y+0,R6
    0492 8279      STD	Y+1,R7
    0493 828A      STD	Y+2,R8
    0494 829B      STD	Y+3,R9
(0266)        id_temp  |= ((unsigned long) CANIDT3<<8);
    0495 E088      LDI	R24,0x8
    0496 E090      LDI	R25,0
    0497 EFE1      LDI	R30,0xF1
    0498 8100      LDD	R16,Z+0
    0499 2711      CLR	R17
    049A 2722      CLR	R18
    049B 2733      CLR	R19
    049C 938A      ST	R24,-Y
    049D 940E22C5  CALL	lsl32
    049F 8028      LDD	R2,Y+0
    04A0 8039      LDD	R3,Y+1
    04A1 804A      LDD	R4,Y+2
    04A2 805B      LDD	R5,Y+3
    04A3 2A20      OR	R2,R16
    04A4 2A31      OR	R3,R17
    04A5 2A42      OR	R4,R18
    04A6 2A53      OR	R5,R19
    04A7 8228      STD	Y+0,R2
    04A8 8239      STD	Y+1,R3
    04A9 824A      STD	Y+2,R4
    04AA 825B      STD	Y+3,R5
(0267)        id_temp  |= (CANIDT4&0xF8);
    04AB EFE0      LDI	R30,0xF0
    04AC E0F0      LDI	R31,0
    04AD 8180      LDD	R24,Z+0
    04AE 2799      CLR	R25
    04AF 7F88      ANDI	R24,0xF8
    04B0 7090      ANDI	R25,0
    04B1 011C      MOVW	R2,R24
    04B2 2444      CLR	R4
    04B3 FC37      SBRC	R3,7
    04B4 9440      COM	R4
    04B5 2455      CLR	R5
    04B6 FC47      SBRC	R4,7
    04B7 9450      COM	R5
    04B8 8068      LDD	R6,Y+0
    04B9 8079      LDD	R7,Y+1
    04BA 808A      LDD	R8,Y+2
    04BB 809B      LDD	R9,Y+3
    04BC 2862      OR	R6,R2
    04BD 2873      OR	R7,R3
    04BE 2884      OR	R8,R4
    04BF 2895      OR	R9,R5
    04C0 8268      STD	Y+0,R6
    04C1 8279      STD	Y+1,R7
    04C2 828A      STD	Y+2,R8
    04C3 829B      STD	Y+3,R9
(0268)        id_temp  >>= 3;
    04C4 E083      LDI	R24,3
    04C5 E090      LDI	R25,0
    04C6 8108      LDD	R16,Y+0
    04C7 8119      LDD	R17,Y+1
    04C8 812A      LDD	R18,Y+2
    04C9 813B      LDD	R19,Y+3
    04CA 938A      ST	R24,-Y
    04CB 940E21F8  CALL	asr32
    04CD 8308      STD	Y+0,R16
    04CE 8319      STD	Y+1,R17
    04CF 832A      STD	Y+2,R18
    04D0 833B      STD	Y+3,R19
(0269) 	   WDR();
    04D1 95A8      WDR

⌨️ 快捷键说明

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