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

📄 at90can128.s

📁 不可多得的atmel公司canbus通讯程序(at90can128)
💻 S
📖 第 1 页 / 共 2 页
字号:
	ld R24,y+
	ld R19,y+
	ld R18,y+
	ld R17,y+
	ld R16,y+
	ld R9,y+
	ld R8,y+
	ld R7,y+
	ld R6,y+
	ld R5,y+
	ld R4,y+
	ld R3,y+
	ld R2,y+
	ld R1,y+
	ld R0,y+
	reti
	.dbend
	.area vector(rom, abs)
	.org 36
	jmp _TIMER2_COMP_ISR
	.area text(rom, con, rel)
	.dbfile D:\CANBUS\数据帧\查询\单向通讯\结点2\AT90CAN128.C
	.dbfunc e TIMER2_COMP_ISR _TIMER2_COMP_ISR fV
	.even
_TIMER2_COMP_ISR::
	st -y,R2
	st -y,R3
	st -y,R24
	st -y,R25
	st -y,R26
	st -y,R30
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 202
; }
; 
; 
; #pragma interrupt_handler TIMER2_COMP_ISR:iv_TIMER2_COMP
; void TIMER2_COMP_ISR(void)
; {
	.dbline 203
; 	if (!send_mark)
	lds R2,_send_mark
	tst R2
	brne L44
X12:
	.dbline 204
; 	{
	.dbline 205
; 		send_time++;
	lds R24,_send_time
	lds R25,_send_time+1
	adiw R24,1
	sts _send_time+1,R25
	sts _send_time,R24
	.dbline 206
; 		if (send_time >= 100)
	cpi R24,100
	ldi R30,0
	cpc R25,R30
	brlo L46
X13:
	.dbline 207
; 		{
	.dbline 208
; 			send_mark = TRUE;
	ldi R24,1
	sts _send_mark,R24
	.dbline 209
; 			send_time = 0;
	clr R2
	clr R3
	sts _send_time+1,R3
	sts _send_time,R2
	.dbline 210
; 		}
L46:
	.dbline 211
; 	}
L44:
	.dbline 212
; 	if (!display_mark)
	lds R2,_display_mark
	tst R2
	brne L48
X14:
	.dbline 213
; 	{
	.dbline 214
; 			display_time++;
	lds R24,_display_time
	lds R25,_display_time+1
	adiw R24,1
	sts _display_time+1,R25
	sts _display_time,R24
	.dbline 215
; 			if (display_time >= 25)
	cpi R24,25
	ldi R30,0
	cpc R25,R30
	brlo L50
X15:
	.dbline 216
; 			{
	.dbline 217
; 			    display_time = 0;
	clr R2
	clr R3
	sts _display_time+1,R3
	sts _display_time,R2
	.dbline 218
; 				display_mark = TRUE;
	ldi R24,1
	sts _display_mark,R24
	.dbline 219
; 			}
L50:
	.dbline 220
; 		}
L48:
	.dbline -2
L43:
	.dbline 0 ; func end
	ld R2,y+
	out 0x3f,R2
	ld R30,y+
	ld R26,y+
	ld R25,y+
	ld R24,y+
	ld R3,y+
	ld R2,y+
	reti
	.dbend
	.dbfunc e CHA_Init _CHA_Init fV
	.even
_CHA_Init::
	.dbline -1
	.dbline 225
; }
; 
; 
; void CHA_Init(void)
; {
	.dbline 226
; 		CHA++;
	lds R24,_CHA
	subi R24,255    ; addi 1
	sts _CHA,R24
	.dbline 227
; 		if (CHA >= 100)
	lds R24,_CHA
	cpi R24,100
	brlo L53
X16:
	.dbline 228
; 			CHA = 0;
	clr R2
	sts _CHA,R2
L53:
	.dbline -2
L52:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;              i -> R20
	.even
_main::
	.dbline -1
	.dbline 232
; }
; 
; void main(void)
; {
	.dbline 235
; 	uint8 i;
;    
; 	CLI();
	cli
	.dbline 236
; 	PORT_Init();
	xcall _PORT_Init
	.dbline 237
; 	TIMER0_Init();	 
	xcall _TIMER0_Init
	.dbline 238
; 	TIMER2_Init();	 
	xcall _TIMER2_Init
	.dbline 240
; //	USART1_Init();
; 	TJA1040_DISABLE();
	sbi 0xb,4
	.dbline 241
; 	NOP();
	nop
	.dbline 242
; 	NOP();   
	nop
	.dbline 243
; 	TJA1040_ENABLE();
	cbi 0xb,4
	.dbline 244
; 	NOP();
	nop
	.dbline 245
; 	NOP();
	nop
	.dbline 246
; 	CAN_Init();
	xcall _CAN_Init
	.dbline 247
; 	Watchdog_Init();
	xcall _Watchdog_Init
	.dbline 248
; 	SEI();
	sei
	xjmp L57
L56:
	.dbline 250
; 	while (1)
; 	{
	.dbline 287
; /*
;   00000000:  02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00   .A..............
;   00000010:  02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00   .B..............
;   00000020:  02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00   .C..............
;   00000030:  02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00   .D..............
;   00000040:  02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00   .E..............
;   00000050:  02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00   .F..............
;   00000060:  02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00   .G..............
;   00000070:  02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00   .H..............
;   00000080:  02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00   .A..............
;   00000090:  02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00   .B..............
;   000000A0:  02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00   .C..............
;   000000B0:  02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00   .D..............
;   000000C0:  02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00   .E..............
;   000000D0:  02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00   .F..............
;   000000E0:  02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00   .G..............
;   000000F0:  02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00   .H..............
;   00000100:  02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00   .A..............
;   00000110:  02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00   .B..............
;   00000120:  02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00   .C..............
;   00000130:  02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00   .D..............
;   00000140:  02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00   .E..............
;   00000150:  02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00   .F..............
;   00000160:  02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00   .G..............
;   00000170:  02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00   .H..............
;   00000180:  02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00   .A..............
;   00000190:  02 42 00 03 03 03 00 00 00 00 00 00 00 00 00 00   .B..............
;   000001A0:  02 43 00 04 04 04 04 00 00 00 00 00 00 00 00 00   .C..............
;   000001B0:  02 44 00 05 05 05 05 05 00 00 00 00 00 00 00 00   .D..............
;   000001C0:  02 45 00 06 06 06 06 06 06 00 00 00 00 00 00 00   .E..............
;   000001D0:  02 46 00 07 07 07 07 07 07 07 00 00 00 00 00 00   .F..............
;   000001E0:  02 47 00 08 08 08 08 08 08 08 08 00 00 00 00 00   .G..............
;   000001F0:  02 48 00 01 00 00 00 00 00 00 00 00 00 00 00 00   .H..............
;   00000200:  02 41 00 02 02 00 00 00 00 00 00 00 00 00 00 00   .A..............
; 
; */ 
; 		if (send_mark)
	lds R2,_send_mark
	tst R2
	brne X38
	xjmp L59
X38:
X17:
	.dbline 288
; 		{
	.dbline 289
;    			send_mark = FALSE;
	clr R2
	sts _send_mark,R2
	.dbline 290
; 			if (!(CANGSTA & (1 << TXBSY)))
	lds R2,217
	sbrc R2,4
	rjmp L61
X18:
	.dbline 291
; 			{        
	.dbline 292
; 				CANPAGE = 0x00;
	clr R2
	sts 237,R2
	.dbline 293
; 				if (CANSTMOB & BIT(TXOK))
	lds R2,238
	sbrs R2,6
	rjmp L63
X19:
	.dbline 294
; 				{
	.dbline 295
; 					CANSTMOB &= ~ BIT(TXOK);
	lds R24,238
	andi R24,191
	sts 238,R24
	.dbline 296
; 					me_DLC++;
	lds R24,_me_DLC
	subi R24,255    ; addi 1
	sts _me_DLC,R24
	.dbline 297
; 					if (me_DLC >= 9)
	cpi R24,9
	brlo L65
X20:
	.dbline 298
; 						me_DLC = 1;
	ldi R24,1
	sts _me_DLC,R24
L65:
	.dbline 299
; 					switch (me_DLC)
	lds R20,_me_DLC
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L70
X21:
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L71
X22:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L76
X23:
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	brne X39
	xjmp L81
X39:
X24:
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	brne X40
	xjmp L86
X40:
X25:
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	brne X41
	xjmp L91
X41:
X26:
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	brne X42
	xjmp L96
X42:
X27:
	cpi R20,8
	ldi R30,0
	cpc R21,R30
	brne X43
	xjmp L101
X43:
X28:
	xjmp L67
L70:
	.dbline 302
; 					{
; 						case 1:
; 							CANMSG = 1;
	ldi R24,1
	sts 250,R24
	.dbline 303
; 							CANCDMOB = 0x41;
	ldi R24,65
	sts 239,R24
	.dbline 304
; 							break;
	xjmp L68
L71:
	.dbline 306
; 						case 2:
; 							for (i = 0 ; i < 2 ; i++)
	clr R20
	xjmp L75
L72:
	.dbline 307
; 								CANMSG = 2;
	ldi R24,2
	sts 250,R24
L73:
	.dbline 306
	inc R20
L75:
	.dbline 306
	cpi R20,2
	brlo L72
X29:
	.dbline 308
; 								CANCDMOB = 0x42;
	ldi R24,66
	sts 239,R24
	.dbline 309
; 								break;
	xjmp L68
L76:
	.dbline 311
; 						case 3:
; 							for (i = 0 ; i < 3 ; i++)
	clr R20
	xjmp L80
L77:
	.dbline 312
; 								CANMSG = 3;
	ldi R24,3
	sts 250,R24
L78:
	.dbline 311
	inc R20
L80:
	.dbline 311
	cpi R20,3
	brlo L77
X30:
	.dbline 313
; 								CANCDMOB = 0x43;
	ldi R24,67
	sts 239,R24
	.dbline 314
; 								break;
	xjmp L68
L81:
	.dbline 316
; 						case 4:
; 							for (i = 0 ; i < 4 ; i++)
	clr R20
	xjmp L85
L82:
	.dbline 317
; 								CANMSG = 4;
	ldi R24,4
	sts 250,R24
L83:
	.dbline 316
	inc R20
L85:
	.dbline 316
	cpi R20,4
	brlo L82
X31:
	.dbline 318
; 								CANCDMOB = 0x44;
	ldi R24,68
	sts 239,R24
	.dbline 319
; 								break;
	xjmp L68
L86:
	.dbline 321
; 						case 5:
; 							for (i = 0 ; i < 5 ; i++)
	clr R20
	xjmp L90
L87:
	.dbline 322
; 								CANMSG = 5;
	ldi R24,5
	sts 250,R24
L88:
	.dbline 321
	inc R20
L90:
	.dbline 321
	cpi R20,5
	brlo L87
X32:
	.dbline 323
; 								CANCDMOB = 0x45;
	ldi R24,69
	sts 239,R24
	.dbline 324
; 								break;
	xjmp L68
L91:
	.dbline 326
; 						case 6:
; 							for (i = 0 ; i < 6 ; i++)
	clr R20
	xjmp L95
L92:
	.dbline 327
; 								CANMSG = 6;
	ldi R24,6
	sts 250,R24
L93:
	.dbline 326
	inc R20
L95:
	.dbline 326
	cpi R20,6
	brlo L92
X33:
	.dbline 328
; 								CANCDMOB = 0x46;
	ldi R24,70
	sts 239,R24
	.dbline 329
; 								break;
	xjmp L68
L96:
	.dbline 331
; 						case 7:
; 							for (i = 0 ; i < 7 ; i++)
	clr R20
	xjmp L100
L97:
	.dbline 332
; 								CANMSG = 7;
	ldi R24,7
	sts 250,R24
L98:
	.dbline 331
	inc R20
L100:
	.dbline 331
	cpi R20,7
	brlo L97
X34:
	.dbline 333
; 								CANCDMOB = 0x47;
	ldi R24,71
	sts 239,R24
	.dbline 334
; 								break;
	xjmp L68
L101:
	.dbline 336
; 						case 8:
; 							for (i = 0 ; i < 8 ; i++)
	clr R20
	xjmp L105
L102:
	.dbline 337
; 								CANMSG = 8;
	ldi R24,8
	sts 250,R24
L103:
	.dbline 336
	inc R20
L105:
	.dbline 336
	cpi R20,8
	brlo L102
X35:
	.dbline 338
; 								CANCDMOB = 0x48;
	ldi R24,72
	sts 239,R24
	.dbline 339
; 								break;
L67:
L68:
	.dbline 341
; 					}
; 				}
L63:
	.dbline 342
; 			}
L61:
	.dbline 343
; 		}
L59:
	.dbline 344
;         CHA = CANGIT & 0x7F;
	lds R24,218
	andi R24,127
	sts _CHA,R24
	.dbline 346
; //		DISPLAY_LED();
; 		if (display_mark)
	lds R2,_display_mark
	tst R2
	breq L106
X36:
	.dbline 347
; 		{	
	.dbline 348
; 			display_mark = FALSE;
	clr R2
	sts _display_mark,R2
	.dbline 349
; 			DISPLAY_Init(CHA);
	lds R16,_CHA
	clr R17
	xcall _DISPLAY_Init
	.dbline 350
; 		}
L106:
	.dbline 351
; 		WDR();
	wdr
	.dbline 352
; 	}
L57:
	.dbline 249
	xjmp L56
X37:
	.dbline -2
L55:
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
; }
; 
; 
; //熔丝位配置(打勾表示0,不打勾表示1)
; //                 1                              0
; //WDTON	        WDT关闭	                        WDT打开
; //CKDIV8	禁止系统时钟8分频	           允许系统时钟8分频
; //EESAVE	全片擦除时擦除EERROM数据	全片擦除时保留EERROM数据	
; //DWEN	       禁止单线调试					  使能单线调试	
; 
; //BOD检测电平选择:
; //BODLEVEL2..0	BOD门槛电压
; //111	BOD禁止
; //110	1.8V
; //101	2.7V
; //100	4.3V   			   (选择4.3V)
; //其余	保留
; 
; //时钟源选择:
; //系统时钟源	CKSEL3..0
; //低功耗晶振(小振幅)	1111-1000
; //大振幅晶振	0111-0110
; //低频晶振	0101-0100
; //128kHz内部RC振荡	0011
; //可校准内部RC振荡	0010
; //外部时钟	0000
; //保留选项	0001	

⌨️ 快捷键说明

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