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

📄 can.s

📁 不可多得的atmel公司canbus通讯程序(at90can128)
💻 S
字号:
	.module CAN.C
	.area text(rom, con, rel)
	.dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\CAN.C
	.dbfunc e CAN_ClrMailBox _CAN_ClrMailBox fV
;    mob_channel -> R16
;       mob_data -> R18
	.even
_CAN_ClrMailBox::
	.dbline -1
	.dbline 19
; //////////////////////////////////////////////////////////
; //单向查询
; //说明:
; //		本程序是结点1,只负责接收
; //////////////////////////////////////////////////////////
; #define _CAN_H
; #include "AT90CAN128.H"
; 
; #define SIT0		0
; #define SIT1		1
; #define SIT2		2
; #define SIT3		3
; #define SIT4		4
; #define SIT5		5
; #define SIT6		6
; #define SIT7		7
; 
; void CAN_ClrMailBox(void) 
; { 
	.dbline 23
; 	uint8 mob_channel;
; 	uint8 mob_data; 
; 
; 	for (mob_channel = 0 ; mob_channel < 15 ; mob_channel++)
	clr R16
	xjmp L7
L4:
	.dbline 24
; 	{
	.dbline 25
; 		CANPAGE = (mob_channel << 4);
	mov R24,R16
	andi R24,#0x0F
	swap R24
	sts 237,R24
	.dbline 26
; 		CANIDT4        = 0; 
	clr R2
	sts 240,R2
	.dbline 27
; 		CANIDT3        = 0; 
	sts 241,R2
	.dbline 28
; 		CANIDT2        = 0; 
	sts 242,R2
	.dbline 29
; 		CANIDT1        = 0; 
	sts 243,R2
	.dbline 30
; 		CANIDM4        = 0; 
	sts 244,R2
	.dbline 31
; 		CANIDM3        = 0; 
	sts 245,R2
	.dbline 32
; 		CANIDM2        = 0; 
	sts 246,R2
	.dbline 33
; 		CANIDM1        = 0; 
	sts 247,R2
	.dbline 34
; 		CANSTMOB = 0; 
	sts 238,R2
	.dbline 35
; 		CANCDMOB = 0; 
	sts 239,R2
	.dbline 36
; 		for (mob_data = 0; mob_data < 8; mob_data++) 
	clr R18
	xjmp L11
L8:
	.dbline 37
;    			CANMSG = 0; 
	clr R2
	sts 250,R2
L9:
	.dbline 36
	inc R18
L11:
	.dbline 36
	cpi R18,8
	brlo L8
X0:
	.dbline 38
; 	}
L5:
	.dbline 23
	inc R16
L7:
	.dbline 23
	cpi R16,15
	brlo L4
X1:
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbsym r mob_channel 16 c
	.dbsym r mob_data 18 c
	.dbend
	.dbfunc e CAN_Init _CAN_Init fV
;              i -> <dead>
	.even
_CAN_Init::
	.dbline -1
	.dbline 42
; } 
; 
; void CAN_Init(void)
; {
	.dbline 45
; 	uint8 i;
;    
; 	CANGCON = BIT(SWRES);
	ldi R24,1
	sts 216,R24
L13:
	.dbline 46
; 	while (CANGSTA & BIT(ENFG));
L14:
	.dbline 46
	lds R2,217
	sbrc R2,2
	rjmp L13
X2:
	.dbline 47
; 	CAN_ClrMailBox();
	xcall _CAN_ClrMailBox
	.dbline 48
; 	CANBT1 = 0x02;
	ldi R24,2
	sts 226,R24
	.dbline 49
; 	CANBT2 = 0x04;
	ldi R24,4
	sts 227,R24
	.dbline 50
; 	CANBT3 = 0x13;
	ldi R24,19
	sts 228,R24
	.dbline 51
; 	CANTCON = 0xFF;
	ldi R24,255
	sts 229,R24
	.dbline 53
; 
; 	CANPAGE = 0x00;
	clr R2
	sts 237,R2
	.dbline 54
; 	CANSTMOB = 0x00;
	sts 238,R2
	.dbline 55
; 	CANIDT4 = 0x00;
	sts 240,R2
	.dbline 56
; 	CANIDT3 = 0x00; 
	sts 241,R2
	.dbline 57
; 	CANIDT2 = 0x40;
	ldi R24,64
	sts 242,R24
	.dbline 58
; 	CANIDT1 = 0x02;
	ldi R24,2
	sts 243,R24
	.dbline 60
;    
;   	CANIDM4  = 0xFF;
	ldi R24,255
	sts 244,R24
	.dbline 61
;   	CANIDM3  = 0xFF; 
	sts 245,R24
	.dbline 62
;   	CANIDM2  = 0xFF;
	sts 246,R24
	.dbline 63
;   	CANIDM1  = 0xFF;
	sts 247,R24
	.dbline 64
; 	CANCDMOB = 0x88;
	ldi R24,136
	sts 239,R24
	.dbline 66
; 	
; 	CANGCON = 0x02;
	ldi R24,2
	sts 216,R24
L16:
	.dbline 67
; 	while (!(CANGSTA & BIT(ENFG)));
L17:
	.dbline 67
	lds R2,217
	sbrs R2,2
	rjmp L16
X3:
	.dbline -2
L12:
	.dbline 0 ; func end
	ret
	.dbsym l i 1 c
	.dbend
; }

⌨️ 快捷键说明

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