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

📄 can.lis

📁 不可多得的atmel公司canbus通讯程序(at90can128)
💻 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 + -