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

📄 int.src

📁 2个F040之间的CAN通讯
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; 
; //-----------------------------------------------------------------------------
; // CAN_Init
; // CAN0CN  :  Automatic Retransmission is Disable. Error and Status Interrrupt 
; //            is Disabled. Module Interrrup is eabled.
; // BITREG  :  BaudRate is 1M/8(b/s).
; // CAN0TST :  Tx1, Tx0, LBack and Silenct are all 0. Use Basic Mode.
; //-----------------------------------------------------------------------------
; void CAN_Init (void) 

	RSEG  ?PR?CAN_Init?INT
CAN_Init:
			; SOURCE LINE # 67
; {
			; SOURCE LINE # 68
;   SFRPAGE = CAN0_PAGE;
			; SOURCE LINE # 69
	MOV  	SFRPAGE,#01H
;   CAN0CN = 0xC3;
			; SOURCE LINE # 70
	MOV  	CAN0CN,#0C3H
;   CAN0ADR = 0x03;
			; SOURCE LINE # 71
	MOV  	CAN0ADR,#03H
;   CAN0DATH = 0x5E;
			; SOURCE LINE # 72
	MOV  	CAN0DATH,#05EH
;   CAN0DATL = 0xC7;
			; SOURCE LINE # 73
	MOV  	CAN0DATL,#0C7H
;   CAN0TST = 0x10;      //LBack
			; SOURCE LINE # 74
	MOV  	CAN0TST,#010H
;   CAN0CN = 0x82;		//disable automatic retransmission
			; SOURCE LINE # 75
	MOV  	CAN0CN,#082H
; }
			; SOURCE LINE # 76
	RET  	
; END OF CAN_Init

; 
; //-----------------------------------------------------------------------------
; // CAN_Transmit_Init
; //-----------------------------------------------------------------------------
; void CAN_Transmit_Init (unsigned char MsgNum , unsigned char id) 

	RSEG  ?PR?_CAN_Transmit_Init?INT
_CAN_Transmit_Init:
	USING	0
			; SOURCE LINE # 81
;---- Variable 'id?441' assigned to Register 'R5' ----
;---- Variable 'MsgNum?440' assigned to Register 'R7' ----
; {  
			; SOURCE LINE # 82
;   unsigned char id_temp;
;   id_temp = id << 2;          //  id & 0x0F) << 2
			; SOURCE LINE # 84
	MOV  	A,R5
	ADD  	A,ACC
	ADD  	A,ACC
	MOV  	R6,A
;---- Variable 'id_temp?442' assigned to Register 'R6' ----
; 
;   SFRPAGE = CAN0_PAGE;
			; SOURCE LINE # 86
	MOV  	SFRPAGE,#01H
;   CAN0ADR = IF1CMDMSK;
			; SOURCE LINE # 87
	MOV  	CAN0ADR,#09H
;   CAN0DATL = 0xb3;    //wr/rd=1,mask=0,arb=1,control=1,,clrintpnd=0,txrqet=0,dataa=1,datab=1
			; SOURCE LINE # 88
	MOV  	CAN0DATL,#0B3H
; 
; //  CAN0ADR = IF1MSK1;
; //  CAN0DATH = 0x00;
;  // CAN0DATL = 0x00;
; //  CAN0DATH = 0x00;					//!!bit 13  :not use
; //  CAN0DATL = 0x00;           //IF1MSK
; 
;   CAN0ADR = IF1ARB1;
			; SOURCE LINE # 96
	MOV  	CAN0ADR,#0CH
;   CAN0DATH = 0x00;
			; SOURCE LINE # 97
	CLR  	A
	MOV  	CAN0DATH,A
;   CAN0DATL = 0x00;
			; SOURCE LINE # 98
	MOV  	CAN0DATL,A
;   CAN0DATH = 0xA0;      //101(01)00
			; SOURCE LINE # 99
	MOV  	CAN0DATH,#0A0H
;   CAN0DATL = id_temp;    //0x80 | (((DO_Address & 0x0F) << 2)); //IF1ARB
			; SOURCE LINE # 100
	MOV  	CAN0DATL,R6
;                  //MsgVal=1, Xad=0,Dir=1:send 
;   CAN0DATH = 0x00;           // use the filter,UMask=1,RmtEn=1
			; SOURCE LINE # 102
	MOV  	CAN0DATH,A
;   CAN0DATL = 0x88;           //IF1MSGC: eob=1, dlc =8
			; SOURCE LINE # 103
	MOV  	CAN0DATL,#088H
; 
;   CAN0ADR = IF1CMDRQST;      
			; SOURCE LINE # 105
	MOV  	CAN0ADR,#08H
;   CAN0DATL = MsgNum;           //
			; SOURCE LINE # 106
	MOV  	CAN0DATL,R7
; }
			; SOURCE LINE # 107
	RET  	
; END OF _CAN_Transmit_Init

; 
; //-----------------------------------------------------------------------------
; // CAN_Receive_Init
; //-----------------------------------------------------------------------------
; void CAN_Receive_Init (unsigned char MsgNum , unsigned char id) 

	RSEG  ?PR?_CAN_Receive_Init?INT
_CAN_Receive_Init:
	USING	0
			; SOURCE LINE # 112
;---- Variable 'id?544' assigned to Register 'R5' ----
;---- Variable 'MsgNum?543' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 113
;   unsigned char id_temp;
;   id_temp = id << 2;          //  id & 0x0F) << 2
			; SOURCE LINE # 115
	MOV  	A,R5
	ADD  	A,ACC
	ADD  	A,ACC
	MOV  	R6,A
;---- Variable 'id_temp?545' assigned to Register 'R6' ----
; 
;   SFRPAGE = CAN0_PAGE;
			; SOURCE LINE # 117
	MOV  	SFRPAGE,#01H
;   CAN0ADR = IF2CMDMSK;
			; SOURCE LINE # 118
	MOV  	CAN0ADR,#021H
;   CAN0DATL = 0xbb;
			; SOURCE LINE # 119
	MOV  	CAN0DATL,#0BBH
; 
; //  CAN0ADR = IF2MSK1;
; //  CAN0DATH = 0x00;
; //  CAN0DATL = 0x00;
; //  CAN0DATH = 0x00;				//0x23;
; //  CAN0DATL = 0xF4;           //IF2MSK  0xco;
; 
;   CAN0ADR = IF2ARB1;
			; SOURCE LINE # 127
	MOV  	CAN0ADR,#024H
;   CAN0DATH = 0x00;
			; SOURCE LINE # 128
	CLR  	A
	MOV  	CAN0DATH,A
;   CAN0DATL = 0x00;
			; SOURCE LINE # 129
	MOV  	CAN0DATL,A
;   CAN0DATH = 0x80;
			; SOURCE LINE # 130
	MOV  	CAN0DATH,#080H
;   CAN0DATL = id_temp;           //IF2ARB
			; SOURCE LINE # 131
	MOV  	CAN0DATL,R6
;                  //MsgVal=1, Xad=0,Dir=0:get  id= 0x001
;   CAN0DATH = 0x14;           //use the filter,RxEn=1
			; SOURCE LINE # 133
	MOV  	CAN0DATH,#014H
;   CAN0DATL = 0x88;           //IF2MSGC
			; SOURCE LINE # 134
	MOV  	CAN0DATL,#088H
; 
;   CAN0ADR = IF2CMDRQST;      
			; SOURCE LINE # 136
	MOV  	CAN0ADR,#020H
;   CAN0DATL = MsgNum;           //
			; SOURCE LINE # 137
	MOV  	CAN0DATL,R7
; }
			; SOURCE LINE # 138
	RET  	
; END OF _CAN_Receive_Init

; 
; //-----------------------------------------------------------------------------
; // Timer_Init
; // Timer0 For CAN Error -- If there is no CAN information form the bus for
; //                         10ms, CPU will close all the outputs.
; //-----------------------------------------------------------------------------
; void Timer_Init (void) {

	RSEG  ?PR?Timer_Init?INT
Timer_Init:
			; SOURCE LINE # 145
;   SFRPAGE = TIMER01_PAGE;
			; SOURCE LINE # 146
	CLR  	A
	MOV  	SFRPAGE,A
;   TMOD |= 0x01;
			; SOURCE LINE # 147
	ORL  	TMOD,#01H
;   CKCON |= 0x02;
			; SOURCE LINE # 148
	ORL  	CKCON,#02H
;   TH0 = 0xFF;
			; SOURCE LINE # 149
	MOV  	TH0,#0FFH
;   TL0 = 0xFF;
			; SOURCE LINE # 150
	MOV  	TL0,#0FFH
; }
			; SOURCE LINE # 151
	RET  	
; END OF Timer_Init

; 
; //-----------------------------------------------------------------------------
; // CAN_send
; //-----------------------------------------------------------------------------
; void CAN_send(unsigned char MsgNum,unsigned char *p )

	RSEG  ?PR?_CAN_send?INT
_CAN_send:
	USING	0
			; SOURCE LINE # 156
	MOV  	p?747,R3
	MOV  	p?747+01H,R2
	MOV  	p?747+02H,R1
;---- Variable 'MsgNum?746' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 157
;   unsigned char num;
; 
;   SFRPAGE = CAN0_PAGE;
			; SOURCE LINE # 160
	MOV  	SFRPAGE,#01H
;   CAN0ADR = IF1CMDMSK;
			; SOURCE LINE # 161
	MOV  	CAN0ADR,#09H
;   CAN0DATL = 0x87;    //wr/rd=1,mask=0,arb=0,control=0,,clrintpnd=0,txrqet=1,dataa=1,datab=1
			; SOURCE LINE # 162
	MOV  	CAN0DATL,#087H
; 
;   CAN0ADR = IF1DATA1;
			; SOURCE LINE # 164
	MOV  	CAN0ADR,#0FH
;   for(num=0;num<8;num++)
			; SOURCE LINE # 165
;---- Variable 'num?748' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0012:
;   {
			; SOURCE LINE # 166
;   	CAN0DATH=p[num];
			; SOURCE LINE # 167
	MOV  	R3,p?747
	MOV  	R2,p?747+01H
	MOV  	R1,p?747+02H
	MOV  	DPL,R6
	MOV  	DPH,#00H
	LCALL	?C?CLDOPTR
	MOV  	CAN0DATH,A
; 	num++;
			; SOURCE LINE # 168
	INC  	R6
; 	CAN0DATL=p[num];
			; SOURCE LINE # 169
	MOV  	DPL,R6
	MOV  	DPH,#00H
	LCALL	?C?CLDOPTR
	MOV  	CAN0DATL,A
;   }
			; SOURCE LINE # 170
	INC  	R6
	MOV  	A,R6
	CLR  	C
	SUBB 	A,#08H
	JC   	?C0012
?C0013:
;   
;   CAN0ADR = IF1CMDRQST;      
			; SOURCE LINE # 172
	MOV  	CAN0ADR,#08H
;   CAN0DATL = MsgNum;           //
			; SOURCE LINE # 173
	MOV  	CAN0DATL,R7
; }
			; SOURCE LINE # 174
	RET  	
; END OF _CAN_send

; 
; 
; //-----------------------------------------------------------------------------
; // CAN_receive
; //-----------------------------------------------------------------------------
; void CAN_receive (unsigned char MsgNum,unsigned char *p )

	RSEG  ?PR?_CAN_receive?INT
_CAN_receive:
	USING	0
			; SOURCE LINE # 180
	MOV  	p?850,R3
	MOV  	p?850+01H,R2
	MOV  	p?850+02H,R1
;---- Variable 'MsgNum?849' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 181
;   unsigned char num;
; 
;   SFRPAGE = CAN0_PAGE;
			; SOURCE LINE # 184
	MOV  	SFRPAGE,#01H
;   CAN0ADR = IF2CMDMSK;
			; SOURCE LINE # 185
	MOV  	CAN0ADR,#021H
;   CAN0DATL = 0x0F;
			; SOURCE LINE # 186
	MOV  	CAN0DATL,#0FH
;   CAN0ADR = IF2CMDRQST;
			; SOURCE LINE # 187
	MOV  	CAN0ADR,#020H
;   CAN0DATL = MsgNum;
			; SOURCE LINE # 188
	MOV  	CAN0DATL,R7
; 
;   CAN0ADR = IF2DATA1;
			; SOURCE LINE # 190
	MOV  	CAN0ADR,#027H
;   for(num=0;num<8;num++)
			; SOURCE LINE # 191
;---- Variable 'num?851' assigned to Register 'R7' ----
	CLR  	A
	MOV  	R7,A
?C0016:
;   {
			; SOURCE LINE # 192
;   	p[num] = CAN0DATH;
			; SOURCE LINE # 193
	MOV  	R3,p?850
	MOV  	R2,p?850+01H
	MOV  	R1,p?850+02H
	MOV  	DPL,R7
	MOV  	DPH,#00H
	MOV  	A,CAN0DATH
	LCALL	?C?CSTOPTR
; 	num++;
			; SOURCE LINE # 194
	INC  	R7
; 	p[num] = CAN0DATL;
			; SOURCE LINE # 195
	MOV  	DPL,R7
	MOV  	DPH,#00H
	MOV  	A,CAN0DATL
	LCALL	?C?CSTOPTR
;   }
			; SOURCE LINE # 196
	INC  	R7
	MOV  	A,R7
	CLR  	C
	SUBB 	A,#08H
	JC   	?C0016
; }
			; SOURCE LINE # 197
?C0019:
	RET  	
; END OF _CAN_receive

; 
; //-----------------------------------------------------------------------------
; // remote_rqst_int
; //-----------------------------------------------------------------------------
; void remote_rqst_int(unsigned char MsgNum , unsigned char id)        //id=1

	RSEG  ?PR?_remote_rqst_int?INT
_remote_rqst_int:
	USING	0
			; SOURCE LINE # 202
;---- Variable 'id?953' assigned to Register 'R5' ----
;---- Variable 'MsgNum?952' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 203
;   unsigned char id_temp;
;   id_temp = id << 2;          //  id & 0x0F) << 2
			; SOURCE LINE # 205
	MOV  	A,R5
	ADD  	A,ACC
	ADD  	A,ACC
	MOV  	R6,A
;---- Variable 'id_temp?954' assigned to Register 'R6' ----
; 
;   SFRPAGE = CAN0_PAGE;
			; SOURCE LINE # 207
	MOV  	SFRPAGE,#01H
;   CAN0ADR = IF1CMDMSK;
			; SOURCE LINE # 208
	MOV  	CAN0ADR,#09H
;   CAN0DATL = 0xb3;    //wr/rd=1,mask=0,arb=1,control=1,,clrintpnd=0,txrqet=0,dataa=1,datab=1
			; SOURCE LINE # 209
	MOV  	CAN0DATL,#0B3H
;   //?? remote data??
; 
;   CAN0ADR = IF1ARB1;
			; SOURCE LINE # 212
	MOV  	CAN0ADR,#0CH
;   CAN0DATH = 0x00;
			; SOURCE LINE # 213
	CLR  	A
	MOV  	CAN0DATH,A
;   CAN0DATL = 0x00;
			; SOURCE LINE # 214
	MOV  	CAN0DATL,A
;   CAN0DATH = 0x80;
			; SOURCE LINE # 215
	MOV  	CAN0DATH,#080H
;   CAN0DATL = id_temp;           //IF2ARB
			; SOURCE LINE # 216
	MOV  	CAN0DATL,R6
;                  //MsgVal=1, Xad=0,Dir=0:get  id= 0x001
; 
;   CAN0DATH = 0x04;           //not use the filter,RxEn=1
			; SOURCE LINE # 219
	MOV  	CAN0DATH,#04H
;   CAN0DATL = 0x88;           //IF2MSGC
			; SOURCE LINE # 220
	MOV  	CAN0DATL,#088H
; 
;   CAN0ADR = IF1CMDRQST;      
			; SOURCE LINE # 222
	MOV  	CAN0ADR,#08H
;   CAN0DATL = MsgNum;
			; SOURCE LINE # 223
	MOV  	CAN0DATL,R7
; 
; #pragma asm
; #pragma endasm         	
; }
			; SOURCE LINE # 227
	RET  	
; END OF _remote_rqst_int

; 
; 
; //-----------------------------------------------------------------------------
; // remote_rqst
; //-----------------------------------------------------------------------------
; void remote_rqst(unsigned char MsgNum)

	RSEG  ?PR?_remote_rqst?INT
_remote_rqst:
			; SOURCE LINE # 233
;---- Variable 'MsgNum?1055' assigned to Register 'R7' ----
; {
			; SOURCE LINE # 234
;   SFRPAGE = CAN0_PAGE;
			; SOURCE LINE # 235
	MOV  	SFRPAGE,#01H
; 
;   CAN0ADR = IF1CMDMSK;
			; SOURCE LINE # 237
	MOV  	CAN0ADR,#09H
;   CAN0DATL = 0x87;    //wr/rd=1,mask=0,arb=0,control=0,,clrintpnd=0,txrqet=1,dataa=1,datab=1
			; SOURCE LINE # 238
	MOV  	CAN0DATL,#087H
;   //?? remote data??
; 
;   CAN0ADR = IF1CMDRQST;      
			; SOURCE LINE # 241
	MOV  	CAN0ADR,#08H
;   CAN0DATL = MsgNum;    
			; SOURCE LINE # 242
	MOV  	CAN0DATL,R7
; }
			; SOURCE LINE # 243
	RET  	
; END OF _remote_rqst

	END

⌨️ 快捷键说明

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