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

📄 can_receive.lst

📁 英飞凌的CAN驱动。英飞凌的CAN非常复杂
💻 LST
📖 第 1 页 / 共 2 页
字号:
 205   1        //设置rxsel
 206   1        set_bit(NCR1,CCE,1);
 207   1        can_write_0(NPCR1,0X03,0);
 208   1        PORT_PAGE=0x02;
 209   1           P1_ALTSEL0 = 0x02;
 210   1        P1_ALTSEL1 =  0x02; //p477,端口选择
 211   1          //写面板控制寄存器,静态分配,将报文对象0给节点1
 212   1           write_pancom(0x02,0x00,0x02);
 213   1          //can_read(MOSTAT0);
 214   1      
 215   1           //测试是否给list1分配报文对象
 216   1              /*
 217   1              if((CAN_DATA1&0xf0)==0x10)
 218   1              {
 219   1            PORT_PAGE=0;
 220   1               P3_DATA=0x55;
 221   1              }
 222   1              if(read_bit(0x0104,24)==0)
 223   1               {
 224   1               PORT_PAGE=0;
 225   1               P3_DATA=0XFF;
 226   1               }*/
 227   1      
 228   1            //位时序控制,CCE置位
 229   1      
 230   1          can_write(NBTR1,0X3487);
 231   1          //设置ncr1(p495),使能can0节点
 232   1         can_write(NCR1,0x0e);
 233   1         //set_bit(NCR1,CCE,0);
 234   1         //侦设置
 235   1              set_bit(MOAMR0,MIDE,1);
 236   1             set_bit(MOAR0,IDE,0);//标准侦
 237   1           return;
 238   1       }
 239           set_singal(ulong singal)
 240           {
 241   1         if(read_bit(MOAR0,IDE)!=0)
C51 COMPILER V7.06   CAN_RECEIVE                                                           05/15/2008 00:51:25 PAGE 5   

 242   1        can_write(MOAR0,(singal|0x20000000));
 243   1        else
 244   1        can_write(MOAR0,((singal<<18)&0XDFFFFFFF));
 245   1       }
 246          
 247           //接受函数
 248           void can_receive()
 249           {
 250   1       #ifdef _can_0_
               PORT_PAGE  = 0x03;
                P1_OD      = 0x00;
                 PORT_PAGE  = 0x00;
                  set_bit(NCR0,CCE,1);
                P1_DIR=0xfe;
                PORT_PAGE=0x02;
                   P1_ALTSEL0 = 0x02;
                P1_ALTSEL1 =  0x02; //p477,端口选择
                //写面板控制寄存器,静态分配
                   write_pancom(0x02,0x00,0x01);
                   //位时序控制
              
                  can_write(NBTR0,0X3487);
                 //设置ncr0 (p495)
                 can_write(NCR0,0X0E);
                 //侦设置
                      set_bit(MOAMR0,MIDE,1);
                     set_bit(MOAR0,IDE,0);//标准侦
                     #else
 270   1                can1_init();
 271   1             #endif
 272   1                //设置接受滤波信号
 273   1                  set_singal(0x05);
 274   1           //接受验收滤波dir,TXRQ,不发送远程侦
 275   1            // set_bit(MOCTR0 ,SETDIR,0);
 276   1          set_bit(MOCTR0 ,RESDIR,1);
 277   1          //set_bit(MOCTR0 ,SETTXRQ,0);
 278   1          set_bit(MOCTR0 ,RESTXRQ,1);
 279   1          set_bit(MOCTR0 ,SETMSGVAL,1);
 280   1          //set_bit(MOCTR0 ,RESMSGVAL,0);
 281   1          set_bit(MOCTR0 ,SETRXEN,1);
 282   1          //set_bit(MOCTR0 ,RESRXEN,0);
 283   1          //while(read_bit(MOSTAT0,RTSEL)==0);
 284   1           while(read_bit(MOSTAT0,NEWDAT)==0);
 285   1           //while(read_bit(MOSTAT0,RXUPD)==0);
 286   1          while(read_bit(NSR0,RXOK)==0);
 287   1          //set_bit(NSR0,RXOK,0);
 288   1        //   set_bit(MOCTR0 ,SETRTSEL,1);
 289   1          //set_bit(MOCTR0 ,RESRTSEL,0);
 290   1            //set_bit(MOSTAT0,DIR,0);
 291   1             //set_bit(MOSTAT0,TXRQ,0);
 292   1      
 293   1             //while(read_bit(MOSTAT0,RTSEL)==0);//RTSEL位1,选中报文对象进行接收
 294   1             //set_bit(MOSTAT0,DIR,1);
 295   1          //设置MSGVAL,RXEN
 296   1          //set_bit(MOSTAT0,RXEN,1);//接受使能
 297   1          //set_bit(MOSTAT0,MSGVAL,1);
 298   1          //set_bit(MOSTAT0,DIR,1);
 299   1           //读取newdat位
 300   1            //while(read_bit(MOSTAT0,NEWDAT)==0);
 301   1            //set_bit(MOSTAT0,NEWDAT,0);
 302   1            return;
 303   1       }
C51 COMPILER V7.06   CAN_RECEIVE                                                           05/15/2008 00:51:25 PAGE 6   

 304          void delay()
 305          {
 306   1      int i,j;
 307   1      for( i=250;i>0;i--)
 308   1           for( j=250;j>0;j--);
 309   1      }
 310          
 311          int main()
 312          {
 313   1      
 314   1          P3_init1();
 315   1           PORT_PAGE  = 0x00;
 316   1          P3_DATA=0X11;
 317   1      
 318   1         delay();
 319   1           can_receive();
 320   1                PORT_PAGE  = 0x00;
 321   1                 can_read(MOFCR0);
 322   1                 P3_DATA=CAN_DATA3;//数据长度
 323   1             //P3_DATA=read_datalen();
 324   1              while(1);
 325   1      return 0;
 326   1      }
C51 COMPILER V7.06   CAN_RECEIVE                                                           05/15/2008 00:51:25 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
_set_singal. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  singal . . . . . . . . . . . . . . .  AUTO     DATA   U_LONG   0000H  4
delay. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0006H  2
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0004H  2
_can_read. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  addr . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0004H  2
CAN_ADCON. . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D8H  1
AUAD . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00DBH  1
_read_bit. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  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     0000H  -----
  addr . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0004H  2
  value. . . . . . . . . . . . . . . .  AUTO     DATA   U_LONG   0002H  4
main . . . . . . . . . . . . . . . . .  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
P3_PUDSEL. . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
RWEN . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D8H  1
_can_res . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  addr . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
  value. . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0004H  2
_can_set . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  addr . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0002H  2
  value. . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0004H  2
P1_DIR . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0091H  1
P3_DIR . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B1H  1
PORT_PAGE. . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B2H  1
P3_init1 . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_set_bit . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0004H  -----
  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
P3_ALTSEL0 . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
read_datalen . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
P3_ALTSEL1 . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B1H  1
P3_PUDEN . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B1H  1
BSY. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00D9H  1
C51 COMPILER V7.06   CAN_RECEIVE                                                           05/15/2008 00:51:25 PAGE 8   

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


_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
P3_OD. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
can_receive. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
can1_init. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1004    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      15
   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 + -