📄 can.lis
字号:
.module CAN.C
.area text(rom, con, rel)
0000 .dbfile D:\CANBUS\数据帧\查询\单向通讯\结点1-串口\CAN.C
0000 .dbfunc e CAN_ClrMailBox _CAN_ClrMailBox fV
0000 ; mob_channel -> R16
0000 ; mob_data -> R18
.even
0000 _CAN_ClrMailBox::
0000 .dbline -1
0000 .dbline 19
0000 ; //////////////////////////////////////////////////////////
0000 ; //单向查询
0000 ; //说明:
0000 ; // 本程序是结点1,只负责接收
0000 ; //////////////////////////////////////////////////////////
0000 ; #define _CAN_H
0000 ; #include "AT90CAN128.H"
0000 ;
0000 ; #define SIT0 0
0000 ; #define SIT1 1
0000 ; #define SIT2 2
0000 ; #define SIT3 3
0000 ; #define SIT4 4
0000 ; #define SIT5 5
0000 ; #define SIT6 6
0000 ; #define SIT7 7
0000 ;
0000 ; void CAN_ClrMailBox(void)
0000 ; {
0000 .dbline 23
0000 ; uint8 mob_channel;
0000 ; uint8 mob_data;
0000 ;
0000 ; for (mob_channel = 0 ; mob_channel < 15 ; mob_channel++)
0000 0027 clr R16
0002 23C0 xjmp L7
0004 L4:
0004 .dbline 24
0004 ; {
0004 .dbline 25
0004 ; CANPAGE = (mob_channel << 4);
0004 802F mov R24,R16
0006 8F70 andi R24,#0x0F
0008 8295 swap R24
000A 8093ED00 sts 237,R24
000E .dbline 26
000E ; CANIDT4 = 0;
000E 2224 clr R2
0010 2092F000 sts 240,R2
0014 .dbline 27
0014 ; CANIDT3 = 0;
0014 2092F100 sts 241,R2
0018 .dbline 28
0018 ; CANIDT2 = 0;
0018 2092F200 sts 242,R2
001C .dbline 29
001C ; CANIDT1 = 0;
001C 2092F300 sts 243,R2
0020 .dbline 30
0020 ; CANIDM4 = 0;
0020 2092F400 sts 244,R2
0024 .dbline 31
0024 ; CANIDM3 = 0;
0024 2092F500 sts 245,R2
0028 .dbline 32
0028 ; CANIDM2 = 0;
0028 2092F600 sts 246,R2
002C .dbline 33
002C ; CANIDM1 = 0;
002C 2092F700 sts 247,R2
0030 .dbline 34
0030 ; CANSTMOB = 0;
0030 2092EE00 sts 238,R2
0034 .dbline 35
0034 ; CANCDMOB = 0;
0034 2092EF00 sts 239,R2
0038 .dbline 36
0038 ; for (mob_data = 0; mob_data < 8; mob_data++)
0038 2227 clr R18
003A 04C0 xjmp L11
003C L8:
003C .dbline 37
003C ; CANMSG = 0;
003C 2224 clr R2
003E 2092FA00 sts 250,R2
0042 L9:
0042 .dbline 36
0042 2395 inc R18
0044 L11:
0044 .dbline 36
0044 2830 cpi R18,8
0046 D0F3 brlo L8
0048 X0:
0048 .dbline 38
0048 ; }
0048 L5:
0048 .dbline 23
0048 0395 inc R16
004A L7:
004A .dbline 23
004A 0F30 cpi R16,15
004C D8F2 brlo L4
004E X1:
004E .dbline -2
004E L3:
004E .dbline 0 ; func end
004E 0895 ret
0050 .dbsym r mob_channel 16 c
0050 .dbsym r mob_data 18 c
0050 .dbend
0050 .dbfunc e CAN_Init _CAN_Init fV
0050 ; i -> <dead>
.even
0050 _CAN_Init::
0050 .dbline -1
0050 .dbline 42
0050 ; }
0050 ;
0050 ; void CAN_Init(void)
0050 ; {
0050 .dbline 45
0050 ; uint8 i;
0050 ;
0050 ; CANGCON = BIT(SWRES);
0050 81E0 ldi R24,1
0052 8093D800 sts 216,R24
0056 L13:
0056 .dbline 46
0056 ; while (CANGSTA & BIT(ENFG));
0056 L14:
0056 .dbline 46
0056 2090D900 lds R2,217
005A 22FC sbrc R2,2
005C FCCF rjmp L13
005E X2:
005E .dbline 47
005E ; CAN_ClrMailBox();
005E D0DF xcall _CAN_ClrMailBox
0060 .dbline 48
0060 ; CANBT1 = 0x02;
0060 82E0 ldi R24,2
0062 8093E200 sts 226,R24
0066 .dbline 49
0066 ; CANBT2 = 0x04;
0066 84E0 ldi R24,4
0068 8093E300 sts 227,R24
006C .dbline 50
006C ; CANBT3 = 0x13;
006C 83E1 ldi R24,19
006E 8093E400 sts 228,R24
0072 .dbline 51
0072 ; CANTCON = 0xFF;
0072 8FEF ldi R24,255
0074 8093E500 sts 229,R24
0078 .dbline 53
0078 ;
0078 ; CANPAGE = 0x00;
0078 2224 clr R2
007A 2092ED00 sts 237,R2
007E .dbline 54
007E ; CANSTMOB = 0x00;
007E 2092EE00 sts 238,R2
0082 .dbline 55
0082 ; CANIDT4 = 0x00;
0082 2092F000 sts 240,R2
0086 .dbline 56
0086 ; CANIDT3 = 0x00;
0086 2092F100 sts 241,R2
008A .dbline 57
008A ; CANIDT2 = 0x40;
008A 80E4 ldi R24,64
008C 8093F200 sts 242,R24
0090 .dbline 58
0090 ; CANIDT1 = 0x02;
0090 82E0 ldi R24,2
0092 8093F300 sts 243,R24
0096 .dbline 60
0096 ;
0096 ; CANIDM4 = 0xFF;
0096 8FEF ldi R24,255
0098 8093F400 sts 244,R24
009C .dbline 61
009C ; CANIDM3 = 0xFF;
009C 8093F500 sts 245,R24
00A0 .dbline 62
00A0 ; CANIDM2 = 0xFF;
00A0 8093F600 sts 246,R24
00A4 .dbline 63
00A4 ; CANIDM1 = 0xFF;
00A4 8093F700 sts 247,R24
00A8 .dbline 64
00A8 ; CANCDMOB = 0x88;
00A8 88E8 ldi R24,136
00AA 8093EF00 sts 239,R24
00AE .dbline 66
00AE ;
00AE ; CANGCON = 0x02;
00AE 82E0 ldi R24,2
00B0 8093D800 sts 216,R24
00B4 L16:
00B4 .dbline 67
00B4 ; while (!(CANGSTA & BIT(ENFG)));
00B4 L17:
00B4 .dbline 67
00B4 2090D900 lds R2,217
00B8 22FE sbrs R2,2
00BA FCCF rjmp L16
00BC X3:
00BC .dbline -2
00BC L12:
00BC .dbline 0 ; func end
00BC 0895 ret
00BE .dbsym l i 1 c
00BE .dbend
00BE ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -