📄 int.src
字号:
;
; //-----------------------------------------------------------------------------
; // 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 + -