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

📄 can.s

📁 LED显示面板
💻 S
📖 第 1 页 / 共 5 页
字号:
; 	err_temp = CANREC;                   //读取接收错误计数器
	ldi R30,235
	ldi R31,0
	ldd R10,z+0
	.dbline 223
; 	if(err_temp>128)
	ldi R24,128
	cp R24,R10
	brsh L74
	.dbline 224
; 	RESET;
	jmp 0x000
L74:
	.dbline 226
; 	
; 	if(RCtemp2&(0x38))
	ldd R24,y+9
	ldd R25,y+10
	andi R24,56
	andi R25,0
	cpi R24,0
	cpc R24,R25
	breq L76
X5:
	.dbline 227
; 	{
	.dbline 228
; 	for(i=3;i<6;i++)                    //查询前三个邮箱中断状态
	ldi R24,3
	std y+4,R24
	xjmp L81
L78:
	.dbline 229
; 	{
	.dbline 230
; 	  tempp=(1<<i);
	ldd R18,y+4
	clr R19
	ldi R16,1
	ldi R17,0
	xcall lsl16
	std y+6,R17
	std y+5,R16
	.dbline 231
; 	  RCF=(RCtemp2&tempp);
	ldd R2,y+9
	ldd R3,y+10
	and R2,R16
	and R3,R17
	std y+8,R3
	std y+7,R2
	.dbline 232
; 	   if(RCF!=0)
	movw R0,R2
	tst R2
	brne X6
	tst R3
	breq L82
X6:
	.dbline 233
; 	    {  
	.dbline 234
; 		 CANPAGE = i<<4;
	ldd R24,y+4
	andi R24,#0x0F
	swap R24
	ldi R30,237
	ldi R31,0
	std z+0,R24
	.dbline 235
; 		 sta_temp = CANSTMOB;
	ldi R30,238
	ldd R10,z+0
	.dbline 236
; 		 if(sta_temp&0x40)             //是发送完成中断
	sbrs R10,6
	rjmp L84
	.dbline 237
; 		 {
	.dbline 238
; 		     if(LED)
	.dbline 239
; 	          send_led_on;
	sbi 0x11,1
	xjmp L87
L86:
	.dbline 241
; 		      else 
; 		        send_led_off ;
	cbi 0x11,1
L87:
	.dbline 243
; 		   
; 		    WDR();
	wdr
	.dbline 244
; 		 }
L84:
	.dbline 245
; 		}
L82:
	.dbline 246
L79:
	.dbline 228
	ldd R0,y+4
	inc R0
	std y+4,R0
L81:
	.dbline 228
	ldd R24,y+4
	cpi R24,6
	brlo L78
	.dbline 247
; 	}
; 	}
	xjmp L77
L76:
	.dbline 248
; 	else if(RCtemp2&(0x07))
	ldd R24,y+9
	ldd R25,y+10
	andi R24,7
	andi R25,0
	cpi R24,0
	cpc R24,R25
	brne X10
	xjmp L88
X10:
X7:
	.dbline 249
; 	{
	.dbline 250
;     for(i=0;i<3;i++)                       //判断哪个邮箱产生接收中断
	clr R0
	std y+4,R0
	xjmp L93
L90:
	.dbline 251
; 	 {
	.dbline 252
; 	  tempp=(1<<i);
	ldd R18,y+4
	clr R19
	ldi R16,1
	ldi R17,0
	xcall lsl16
	std y+6,R17
	std y+5,R16
	.dbline 253
; 	  RCF=(RCtemp2&tempp);
	ldd R2,y+9
	ldd R3,y+10
	and R2,R16
	and R3,R17
	std y+8,R3
	std y+7,R2
	.dbline 254
; 	  if(RCF!=0)
	movw R0,R2
	tst R2
	brne X8
	tst R3
	brne X11
	xjmp L94
X11:
X8:
	.dbline 255
; 	    {  
	.dbline 256
; 		    if(LED)
	.dbline 257
;               rece_led_on;
	sbi 0x11,0
	xjmp L97
L96:
	.dbline 259
; 			else
; 		       rece_led_off;
	cbi 0x11,0
L97:
	.dbline 260
; 		  CANPAGE = i<<4;
	ldd R24,y+4
	andi R24,#0x0F
	swap R24
	ldi R30,237
	ldi R31,0
	std z+0,R24
	.dbline 261
; 		   WDR();
	wdr
	.dbline 263
; 		 
; 	   id_temp = 0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	std y+0,R20
	std y+1,R21
	std y+2,R22
	std y+3,R23
	.dbline 264
;        id_temp  |= ((unsigned long) CANIDT1<<24);    //get identifier
	ldi R24,24
	ldi R25,0
	ldi R30,243
	ldd R16,z+0
	clr R17
	clr R18
	clr R19
	st -y,R24
	xcall lsl32
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	or R2,R16
	or R3,R17
	or R4,R18
	or R5,R19
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 265
;        id_temp  |= ((unsigned long) CANIDT2<<16);
	ldi R30,242
	ldi R31,0
	ldd R2,z+0
	clr R3
	clr R4
	clr R5
	movw R4,R2
	clr R2
	clr R3
	ldd R6,y+0
	ldd R7,y+1
	ldd R8,y+2
	ldd R9,y+3
	or R6,R2
	or R7,R3
	or R8,R4
	or R9,R5
	std y+0,R6
	std y+1,R7
	std y+2,R8
	std y+3,R9
	.dbline 266
;        id_temp  |= ((unsigned long) CANIDT3<<8);
	ldi R24,8
	ldi R25,0
	ldi R30,241
	ldd R16,z+0
	clr R17
	clr R18
	clr R19
	st -y,R24
	xcall lsl32
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	or R2,R16
	or R3,R17
	or R4,R18
	or R5,R19
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 267
;        id_temp  |= (CANIDT4&0xF8);
	ldi R30,240
	ldi R31,0
	ldd R24,z+0
	clr R25
	andi R24,248
	andi R25,0
	movw R2,R24
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	ldd R6,y+0
	ldd R7,y+1
	ldd R8,y+2
	ldd R9,y+3
	or R6,R2
	or R7,R3
	or R8,R4
	or R9,R5
	std y+0,R6
	std y+1,R7
	std y+2,R8
	std y+3,R9
	.dbline 268
;        id_temp  >>= 3;
	ldi R24,3
	ldi R25,0
	ldd R16,y+0
	ldd R17,y+1
	ldd R18,y+2
	ldd R19,y+3
	st -y,R24
	xcall asr32
	std y+0,R16
	std y+1,R17
	std y+2,R18
	std y+3,R19
	.dbline 269
; 	   WDR();
	wdr
	.dbline 270
; 	   for(i=0;i<50;i++)
	clr R0
	std y+4,R0
	xjmp L101
L98:
	.dbline 271
; 	   {
	.dbline 272
; 	    if(id_temp==id_table[i])
	ldi R24,<_id_table
	ldi R25,>_id_table
	ldd R30,y+4
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	clr R4
	clr R5
	ldd R6,y+0
	ldd R7,y+1
	ldd R8,y+2
	ldd R9,y+3
	cp R6,R2
	cpc R7,R3
	cpc R8,R4
	cpc R9,R5
	brne L102
	.dbline 273
; 		 {
	.dbline 274
; 		 jj=i;
	ldd R14,y+4
	.dbline 275
; 		 break;
	xjmp L100
L102:
	.dbline 277
L99:
	.dbline 270
	ldd R0,y+4
	inc R0
	std y+4,R0
L101:
	.dbline 270
	ldd R24,y+4
	cpi R24,50
	brlo L98
L100:
	.dbline 278
; 		 }
; 	   }
; 	   WDR();
	wdr
	.dbline 279
; 	   switch(jj)
	mov R10,R14
	clr R11
	movw R24,R10
	cpi R24,0
	ldi R30,0
	cpc R25,R30
	brge X12
	xjmp L104
X12:
	ldi R24,48
	cp R24,R10
	cpc R25,R11
	brge X13
	xjmp L104
X13:
	ldi R16,2
	ldi R17,0
	movw R18,R10
	xcall empy16s
	movw R30,R16
	ldi R24,<L461
	ldi R25,>L461
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ijmp
X9:
	.dbline 280
; 	   {
L107:
	.dbline 281
; 	   case  0 :{ 
	.dbline 282
; 	                    for (nb_data = 0; nb_data <8; nb_data++)  
	clr R12
	xjmp L111
L108:
	.dbline 283
	.dbline 284
	ldi R24,<_rece_data+4
	ldi R25,>_rece_data+4
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	ldi R26,250
	ldi R27,0
	ld R2,x
	std z+0,R2
	.dbline 285
L109:
	.dbline 282
	inc R12
L111:
	.dbline 282
	mov R24,R12
	cpi R24,8
	brlo L108
	.dbline 286
; 	                        {
; 	                         rece_data[0].Data[nb_data]=CANMSG;
; 	                           } 
; 							   WDR();
	wdr
	.dbline 287
; 							   break;
	xjmp L105
L113:
	.dbline 289
; 							   }
; 	   case  1 :{
	.dbline 290
; 	                     for (nb_data = 0; nb_data <8; nb_data++)  
	clr R12
	xjmp L117
L114:
	.dbline 291
	.dbline 292
	ldi R24,<_rece_data+12+4
	ldi R25,>_rece_data+12+4
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	ldi R26,250
	ldi R27,0
	ld R2,x
	std z+0,R2
	.dbline 293
L115:
	.dbline 290
	inc R12
L117:
	.dbline 290
	mov R24,R12
	cpi R24,8
	brlo L114
	.dbline 294
; 	                        {
; 	                         rece_data[1].Data[nb_data]=CANMSG;
; 	                           } 
; 							   WDR();	   
	wdr
	.dbline 295
; 							   break;
	xjmp L105
L120:
	.dbline 297
; 							   }
; 	   case  2 :{
	.dbline 298
; 	                     for (nb_data = 0; nb_data <8; nb_data++)  
	clr R12
	xjmp L124
L121:
	.dbline 299
	.dbline 300
	ldi R24,<_rece_data+24+4
	ldi R25,>_rece_data+24+4
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	ldi R26,250
	ldi R27,0
	ld R2,x
	std z+0,R2
	.dbline 301
L122:
	.dbline 298
	inc R12
L124:
	.dbline 298
	mov R24,R12
	cpi R24,8
	brlo L121
	.dbline 302
; 	                        {
; 	                         rece_data[2].Data[nb_data]=CANMSG;
; 	                           } 
; 							   WDR();	   
	wdr
	.dbline 303
; 							   break;
	xjmp L105
L127:
	.dbline 305
; 	                           }
; 	   case  3 :{
	.dbline 306
; 	                     for (nb_data = 0; nb_data <8; nb_data++)  
	clr R12
	xjmp L131
L128:
	.dbline 307
	.dbline 308
	ldi R24,<_rece_data+36+4
	ldi R25,>_rece_data+36+4
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	ldi R26,250
	ldi R27,0
	ld R2,x
	std z+0,R2
	.dbline 309
L129:
	.dbline 306
	inc R12
L131:
	.dbline 306
	mov R24,R12
	cpi R24,8
	brlo L128
	.dbline 310
; 	                        {
; 	                         rece_data[3].Data[nb_data]=CANMSG;
; 	                           } 
; 							   WDR();  
	wdr
	.dbline 311
; 							   break;
	xjmp L105
L134:
	.dbline 313
; 	                            }
; 	   case  4 :{
	.dbline 314
; 	                     for (nb_data = 0; nb_data <8; nb_data++)  
	clr R12
	xjmp L138
L135:
	.dbline 315
	.dbline 316
	ldi R24,<_rece_data+48+4
	ldi R25,>_rece_data+48+4
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	ldi R26,250
	ldi R27,0
	ld R2,x
	std z+0,R2
	.dbline 317
L136:
	.dbline 314
	inc R12
L138:
	.dbline 314
	mov R24,R12
	cpi R24,8
	brlo L135
	.dbline 318
; 	                        {
; 	                         rece_data[4].Data[nb_data]=CANMSG;
; 	                           } 
; 							   WDR();   
	wdr
	.dbline 319
; 							   break;
	xjmp L105
L141:
	.dbline 321
; 	                           }
; 	   case  5 :{
	.dbline 322
; 	                     for (nb_data = 0; nb_data <8; nb_data++)  
	clr R12
	xjmp L145
L142:
	.dbline 323
	.dbline 324
	ldi R24,<_rece_data+60+4
	ldi R25,>_rece_data+60+4
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	ldi R26,250
	ldi R27,0
	ld R2,x
	std z+0,R2
	.dbline 325
L143:
	.dbline 322
	inc R12
L145:
	.dbline 322
	mov R24,R12
	cpi R24,8
	brlo L142
	.dbline 326
; 	                        {
; 	                         rece_data[5].Data[nb_data]=CANMSG;
; 	                           }
; 							   WDR(); 
	wdr
	.dbline 327
; 							   break;
	xjmp L105
L148:
	.dbline 329
; 	                           }
; 	   case  6 :{
	.dbline 330
; 	                     for (nb_data = 0; nb_data <8; nb_data++)  
	clr R12
	xjmp L152
L149:
	.dbline 331
	.dbline 332
	ldi R24,<_rece_data+72+4
	ldi R25,>_rece_data+72+4
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	ldi R26,250
	ldi R27,0
	ld R2,x
	std z+0,R2
	.dbline 333
L150:
	.dbline 330
	inc R12
L152:
	.dbline 330
	mov R24,R12
	cpi R24,8
	brlo L149
	.dbline 334
; 	                        {
; 	                         rece_data[6].Data[nb_data]=CANMSG;
; 	                           } 
; 							   WDR(); 
	wdr
	.dbline 335
; 							   break;
	xjmp L105
L155:
	.dbline 337
; 	                           }
; 	   case  7 :{
	.dbline 338
; 	                     for (nb_data = 0; nb_data <8; nb_data++)  
	clr R12
	xjmp L159
L156:
	.dbline 339
	.dbline 340
	ldi R24,<_rece_data+84+4
	ldi R25,>_rece_data+84+4
	mov R30,R12
	clr R31
	add R30,R24
	adc R31,R25
	ldi R26,250
	ldi R27,0
	ld R2,x
	std z+0,R2
	.dbline 341
L157:
	.dbline 338
	inc R12
L159:
	.dbline 338
	mov R24,R12
	cpi R24,8
	brlo L156
	.dbline 342
; 	                        {

⌨️ 快捷键说明

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