📄 can.asm
字号:
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Version 7.00
*******************************************************
; C:\TIC2XX\C2000\CGTOOLS\BIN\DSPAC.EXE -v2xx can.c C:\WINDOWS\TEMP\can.if
; dspopt NOT RUN
; C:\TIC2XX\C2000\CGTOOLS\BIN\DSPCG.EXE -o -v2xx -o C:\WINDOWS\TEMP\can.if C:\WINDOWS\TEMP\can.asm C:\WINDOWS\TEMP\can.tmp
.port
.file "can.c"
.file "f2407_c.h"
.globl _portFF0F
.globl _portFFFF
.file "can.c"
.globl _port40
.globl _test_can
.text
.sym _can_init,_can_init,32,2,0
.globl _can_init
.func 10
;>>>> void can_init(void)
******************************************************
* FUNCTION DEF : _can_init
******************************************************
_can_init:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 3
;>>>> *CAN_IFR=0xffff;
LARK AR3,28937
SPLK #65535,*
.line 7
;>>>> *MCR=0x1000; /*set CCR=1*/
SBRK 6
SPLK #4096,*
L1:
.line 8
;>>>> while(((*GSR)&0x0010)!=0x0010); /*if CCE=0 then wait*/
LARK AR3,28935
LACK 16
AND *
SUBK 16
BNZ L1
.line 9
;>>>> *BCR1=0x0023/*0x01ab*/;
LACK 35
SBRK 2
SACL *-
.line 10
;>>>> *BCR2=0x0003; /*can clk=1Mhz, 10 TQs*/
LACK 3
SACL *-
.line 11
;>>>> *MCR=(*MCR)&0xefff; /*CCR=0;*/
LACK 61439
AND *
SACL *
L2:
.line 12
;>>>> while(((*GSR)&0x0010)==0x0010); /*if CCE=1 then wait*/
LARK AR3,28935
LACK 16
AND *
SUBK 16
BZ L2
.line 16
;>>>> *MDER=0xff80; /*box0-5 disabled*/
SBRK 7
SPLK #65408,*
.line 19
;>>>> *MCR=(*MCR)|0x0100; /*set CDR=1*/
LACK 256
ADRK 3
OR *
SACL * ,AR4
.line 23
;>>>> *MSGID4H=0x0555;
LARK AR4,29217
SPLK #1365,*-
.line 24
;>>>> *MSGID4L=0xaaaa; /*mailbox4 send*/
SPLK #43690,*
.line 25
;>>>> *MSGCTRL4=0x0008; /*1 byte data */
LACK 8
ADRK 2
SACL *
.line 26
;>>>> *MBX4A=0x7777;
ADRK 2
SPLK #30583,*+
.line 27
;>>>> *MBX4B=0x7777;
SPLK #30583,*+
.line 28
;>>>> *MBX4C=0x7777;
SPLK #30583,*+
.line 29
;>>>> *MBX4D=0x7777;
SPLK #30583,* ,AR3
.line 33
;>>>> *MSGID0H=0x4555; /*mailbox0 receive*/
ADRK 254
SPLK #17749,*-
.line 34
;>>>> *MSGID0L=0xaaaa;
SPLK #43690,*
.line 35
;>>>> *MSGCTRL0=0x0008;
ADRK 2
SACL *
.line 36
;>>>> *MBX0A=0xffff;
ADRK 2
SPLK #65535,*+
.line 37
;>>>> *MBX0B=0xffff;
SPLK #65535,*+
.line 38
;>>>> *MBX0C=0xffff;
SPLK #65535,*+
.line 39
;>>>> *MBX0D=0xffff;
SPLK #65535,*
.line 43
;>>>> *LAM0_H=0x7fff;
SBRK 252
SPLK #32767,*+
.line 44
;>>>> *LAM0_L=0xffff;
SPLK #65535,*+
.line 45
;>>>> *LAM1_H=0x7fff;
SPLK #32767,*+
.line 46
;>>>> *LAM1_L=0xffff;
SPLK #65535,*
.line 47
;>>>> *MCR=(*MCR)&0xfeff; /*CDR=0;*/
LACK 65279
SBRK 11
AND *
SACL * ,AR1
EPI0_1:
.line 50
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 59,000000000H,1
.sym _test_can,_test_can,46,2,0
.globl _test_can
.func 63
;>>>> unsigned int test_can(void)
;>>>> unsigned int data_rec1,data_rec2,data_rec3,data_rec4;
******************************************************
* FUNCTION DEF : _test_can
******************************************************
_test_can:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,5
LAR AR0,*0+
.sym _data_rec1,1,14,1,16
.sym _data_rec2,2,14,1,16
.sym _data_rec3,3,14,1,16
.sym _data_rec4,4,14,1,16
.line 4
;>>>> can_init();
CALL _can_init
.line 6
;>>>> *MDER=(*MDER)|0x0001; /*enable mailbox0*/
LARK AR3,28928
LACK 1
MAR * ,AR3
OR *
SACL *+
.line 9
;>>>> *TCR=(*TCR)|0x0040; /*TRS4=1*/
LACK 64
OR *
SACL *
L3:
.line 16
;>>>> while(((*TCR)&0x4000)!=0x4000); /*if TA4=0 then wait*/
LARK AR3,28929
LACK 16384
AND *
SUBK 16384
BNZ L3
.line 17
;>>>> *TCR=(*TCR)|0x4000; /*set TA4=1*/
LACK 16384
OR *
SACL *
L4:
.line 21
;>>>> while(((*RCR)&0x0010)!=0x0010); /*if RMP0=0 then wait*/
LARK AR3,28930
LACK 16
AND *
SUBK 16
BNZ L4
.line 22
;>>>> *RCR=(*RCR)|0x0010; /*RMP0=1*/
LACK 16
OR *
SACL * ,AR4
.line 25
;>>>> data_rec1=*MBX0A;
LARK AR4,29188
LAC *+,AR2
LARK AR2,1
MAR *0+
SACL *+,AR4
.line 26
;>>>> data_rec2=*MBX0B;
LAC *+,AR2
SACL *+,AR4
.line 27
;>>>> data_rec3=*MBX0C;
LAC *+,AR2
SACL *+,AR4
.line 28
;>>>> data_rec4=*MBX0D;
LAC * ,AR2
SACL *
.line 30
;>>>> if(data_rec1!=0x2222)return(0);
SBRK 3
LAC *
SUBK 8738
BZ L5
LACK 0
B EPI0_2
L5:
.line 31
;>>>> if(data_rec2!=0x5555)return(0);
MAR *+
LAC *
SUBK 21845
BZ L6
LACK 0
B EPI0_2
L6:
.line 32
;>>>> if(data_rec3!=0xaaaa)return(0);
MAR *+
ZALS *
RSXM
SUBK -21846
BZ L7
LACK 0
B EPI0_2
L7:
.line 33
;>>>> if(data_rec4!=0xeeee)return(0);
MAR *+
ZALS *
SUBK -4370
BZ L8
LACK 0
B EPI0_2
L8:
.line 34
;>>>> return(1);
LACK 1
EPI0_2:
.line 35
MAR * ,AR1
SBRK 6
LAR AR0,*-
PSHD *
RET
.endfunc 97,000000000H,5
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -