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

📄 can.lst

📁 英飞凌的CAN驱动。英飞凌的CAN非常复杂
💻 LST
📖 第 1 页 / 共 2 页
字号:
 212   1        P1_OD      = 0x00;
 213   1        PORT_PAGE  = 0x00;
 214   1        //1.3out,1.4in
 215   1        P1_DIR=0x08;
 216   1      
 217   1        //设置rxsel
 218   1        set_bit(NCR1,CCE,1);
 219   1        can_write_0(NPCR1,0X03,0);
 220   1        PORT_PAGE=0x02;
 221   1           P1_ALTSEL0 = 0x02;
 222   1        P1_ALTSEL1 =  0x02; //p477,端口选择
 223   1          //写面板控制寄存器,静态分配,将报文对象0给节点1
 224   1           write_pancom(0x02,0x00,0x02);
 225   1                //位时序控制,CCE置位
 226   1      
 227   1          can_write(NBTR1,0X3487);
 228   1          //设置ncr1(p495),使能can1节点
 229   1         can_write(NCR1,0x0e);
 230   1         //set_bit(NCR1,CCE,0);
 231   1           return;
 232   1       }
 233          //can初始化
 234          /*********选择节点0 ,直接使用复位值(由npcr0控制)
 235          p1.0(in) p1.1(out)
 236          ******************************/
 237          void can_init()
 238          {
 239   1      #ifdef _can_0_
                //漏极开路选择
                  PORT_PAGE  = 0x03;
C51 COMPILER V7.09   CAN                                                                   05/15/2008 08:28:24 PAGE 5   

                P1_OD      = 0x00;
                PORT_PAGE  = 0x00;
                P1_DIR=0xfe;
                //设置rxsel
                  set_bit(NCR0,CCE,1);
                can_write_0(NPCR0,0X00,0);
                PORT_PAGE=0x02;
                   P1_ALTSEL0 = 0x02;
                P1_ALTSEL1 =  0x02; //p477,端口选择
                  //写面板控制寄存器,静态分配,将报文对象0给节点1
                   write_pancom(0x02,0x00,0x01);
              
              
                   //测试是否给list1分配报文对象
                      /*
                      can_read(MOSTAT0);
                      if((CAN_DATA1&0xf0)==0x10)
                      {
                    PORT_PAGE=0;
                       P3_DATA=0x55;
                      }
                      if(read_bit(0x0104,24)==0)
                       {
                       PORT_PAGE=0;
                       P3_DATA=0XFF;
                       }*/
              
                    //位时序控制,CCE置位
              
                  can_write(NBTR0,0X3487);
                   //设置ncr0 (p495),使能can0节点
                 can_write(0x0200,0x0e);
                 //set_bit(NCR0,CCE,0);
                  //can_write(NBTR0,0X2240);
                  #else
 277   1          can1_init();
 278   1          #endif
 279   1          //发送数据写入
 280   1           a.leibie=0;
 281   1          a.signal=0x05;
 282   1          a.length=2;
 283   1          a.data0[0]=0x01;
 284   1           a.data0[1]=0x02;
 285   1          write_send_data(a);
 286   1      
 287   1         //报文发送请求,数据侦
 288   1          set_bit(MOCTR0 ,SETDIR,1);
 289   1          //set_bit(MOCTR0 ,RESDIR,1);
 290   1          //set_bit(MOCTR0 ,SETMSGVAL,1);
 291   1         //set_bit(MOCTR0 ,RESNEWDAT,0);
 292   1           set_bit(MOCTR0 ,SETNEWDAT,1);
 293   1            set_bit(MOCTR0 ,SETMSGVAL,1);
 294   1         // set_bit(MOCTR0 ,RESMSGVAL,0);
 295   1          set_bit(MOCTR0 ,SETTXEN0,1);
 296   1          //set_bit(MOCTR0 ,RESTXEN0,0);
 297   1          set_bit(MOCTR0 ,SETTXEN1,1);
 298   1          //set_bit(MOCTR0 ,RESTXEN1,0);
 299   1          set_bit(MOCTR0 ,SETTXRQ,1);
 300   1          //set_bit(MOCTR0 ,RESTXRQ,0);
 301   1          //set_bit(NSR0,RXOK,1);
 302   1      
 303   1          //can_write(0x0200,0x004e);
C51 COMPILER V7.09   CAN                                                                   05/15/2008 08:28:24 PAGE 6   

 304   1         // PORT_PAGE=0;
 305   1         // P3_DATA=0X01;
 306   1          //while(read_bit(MOSTAT0,RTSEL)==0);
 307   1          if(read_bit(MOSTAT0,NEWDAT)!=0)
 308   1          {
 309   2          PORT_PAGE=0;
 310   2          P3_DATA=0X02;}
 311   1          //while(read_bit(MOSTAT0,RTSEL)==0);
 312   1          while(read_bit(MOSTAT0,NEWDAT)!=0);
 313   1           while(read_bit(NSR0,TXOK)==0);
 314   1           //set_bit(NSR0,TXOK,0);
 315   1      
 316   1      
 317   1      
 318   1           //set_bit(MOSTAT0,MSGVAL,1);
 319   1           //set_bit(MOSTAT0,DIR,1);
 320   1           //set_bit(MOSTAT0,TXEN0,1);
 321   1           //set_bit(MOSTAT0,TXEN1,1);
 322   1            //set_bit(MOSTAT0,TXRQ,1);
 323   1      
 324   1            //set_bit(MOSTAT0,RTSEL,1);
 325   1            //while(read_bit(MOSTAT0,RTSEL)==0);//RTSEL位1,选中报文对象进行接收
 326   1           // set_bit(MOSTAT0,NEWDAT,1);
 327   1            //报文对象发送
 328   1           // while(read_bit(MOSTAT0,NEWDAT)==1);
 329   1      
 330   1       }
 331          
 332          
 333          void main()
 334          {
 335   1      
 336   1        P3_init();
 337   1       can_init();
 338   1       PORT_PAGE=0X00;
 339   1       P3_DATA=0X21;
 340   1       while(1);
 341   1      }
C51 COMPILER V7.09   CAN                                                                   05/15/2008 08:28:24 PAGE 7   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P3_DATA. . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
CAN_DATA0. . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00DBH  1
CAN_DATA1. . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00DCH  1
CAN_DATA2. . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00DDH  1
CAN_ADH. . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00DAH  1
CAN_DATA3. . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00DEH  1
CAN_ADL. . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D9H  1
V0 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00DCH  1
V1 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00DDH  1
V2 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00DEH  1
V3 . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00DFH  1
_can_read. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  addr . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0004H  2
size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
P3_init. . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
CAN_ADCON. . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D8H  1
_read_bit. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0006H  -----
  addr . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
  bitnum . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
_can_write . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0006H  -----
  addr . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0004H  2
  value. . . . . . . . . . . . . . . .  AUTO     DATA   U_LONG   0002H  4
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
can_data . . . . . . . . . . . . . . .  TYPEDEF  -----  STRUCT   -----  14
  leibie . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0000H  1
  signal . . . . . . . . . . . . . . .  MEMBER   -----  U_LONG   0001H  4
  length . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0005H  1
  data0. . . . . . . . . . . . . . . .  MEMBER   -----  ARRAY    0006H  8
receive_message. . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_can_write_0 . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  addr . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
  value. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  reg. . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0003H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0002H  1
write_send_data. . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  data1. . . . . . . . . . . . . . . .  AUTO     DATA   STRUCT   0000H  14
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0002H  1
  k. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   000EH  1
  p. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0001H  1
can_struct . . . . . . . . . . . . . .  * TAG *  -----  STRUCT   -----  14
  leibie . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0000H  1
  signal . . . . . . . . . . . . . . .  MEMBER   -----  U_LONG   0001H  4
  length . . . . . . . . . . . . . . .  MEMBER   -----  U_CHAR   0005H  1
  data0. . . . . . . . . . . . . . . .  MEMBER   -----  ARRAY    0006H  8
RWEN . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D8H  1
P1_DIR . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0091H  1
PORT_PAGE. . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B2H  1
can_init . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_set_bit . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0006H  -----
  addr . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0000H  2
  bitnum . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  value. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0003H  1
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0004H  1
P1_ALTSEL0 . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P1_ALTSEL1 . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0091H  1
a. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   STRUCT   0000H  14
C51 COMPILER V7.09   CAN                                                                   05/15/2008 08:28:24 PAGE 8   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


b. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   STRUCT   000EH  14
BSY. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D9H  1
_write_pancom. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  pancmd . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  panar1 . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  panar2 . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0003H  1
P1_OD. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
can1_init. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    972    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     28      26
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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