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

📄 int.lst

📁 2个F040之间的CAN通讯
💻 LST
📖 第 1 页 / 共 2 页
字号:
 172          // Timer0 For CAN Error -- If there is no CAN information form the bus for
 173          //                         10ms, CPU will close all the outputs.
 174          //-----------------------------------------------------------------------------
 175          void Timer_Init (void) {
 176   1        SFRPAGE = TIMER01_PAGE;
 177   1        TMOD |= 0x01;
 178   1        CKCON |= 0x02;
 179   1        TH0 = 0xFF;
C51 COMPILER V7.10   INT                                                                   07/27/2008 17:14:41 PAGE 4   

 180   1        TL0 = 0xFF;
 181   1      }
 182          
 183          
 184          /*
 185          //-----------------------------------------------------------------------------
 186          // CAN_send(unsigned char MsgNum,unsigned char *p )  :update the data & start send
 187          //-----------------------------------------------------------------------------
 188          void CAN_Transmit(unsigned char MsgNum,unsigned char *p_data )
 189          {
 190            unsigned char num;
 191          
 192            SFRPAGE = CAN0_PAGE;
 193            CAN0ADR = IF1CMDMSK;
 194            CAN0DATL = 0x87;    //wr/rd=1,mask=0,arb=0,control=0,,clrintpnd=0,txrqet=1,dataa=1,datab=1
 195          
 196            CAN0ADR = IF1DATA1;
 197            for(num=0;num<8;num++)
 198            {
 199                  CAN0DATH=p_data[num];
 200                  num++;
 201                  CAN0DATL=p_data[num];
 202            }
 203            
 204            CAN0ADR = IF1CMDRQST;      
 205            CAN0DATL = MsgNum;           //
 206          }
 207          
 208          
 209          //-----------------------------------------------------------------------------
 210          // CAN_receive(unsigned char MsgNum,unsigned char *p )
 211          //-----------------------------------------------------------------------------
 212          void CAN_Receive (unsigned char MsgNum, unsigned char *p )
 213          {
 214            unsigned char num;
 215           
 216            SFRPAGE = CAN0_PAGE;
 217            CAN0ADR = IF2CMDMSK;
 218            CAN0DATL = 0x0F;
 219            CAN0ADR = IF2CMDRQST;
 220            CAN0DATL = MsgNum;
 221          
 222            CAN0ADR = IF2DATA1;
 223            for(num=0;num<4;num++)
 224            {
 225                  *p++ = CAN0DATH;
 226                  *p++ = CAN0DATL;
 227            }
 228          }
 229          */
 230          
 231          /*
 232          //-----------------------------------------------------------------------------
 233          // remote_rqst_int(unsigned char MsgNum , unsigned char id)
 234          //wr/rd=1,mask=0,arb=1,control=1,,clrintpnd=0,txrqet=0,dataa=1,datab=1
 235          //-----------------------------------------------------------------------------
 236          void CAN_RemoteRqst_Init(unsigned char MsgNum , unsigned char id)        //id=1
 237          {
 238          
 239          //  unsigned char id_tempL,id_tempH;
 240          //  id_tempL = id << 2;          //  id & 0x0F) << 2
 241          //  id_tempH = id >> 6;
C51 COMPILER V7.10   INT                                                                   07/27/2008 17:14:41 PAGE 5   

 242          //  id_tempH = id_tempH || 0x80;  // MsgVal=1, Dir =0
 243          
 244            SFRPAGE = CAN0_PAGE;
 245            CAN0ADR = IF1CMDMSK;
 246            CAN0DATL = 0xb3;    //wr/rd=1,mask=0,arb=1,control=1,,clrintpnd=0,txrqet=0,dataa=1,datab=1
 247            //?? remote data??
 248          
 249            CAN0ADR = IF1ARB1;
 250            CAN0DATH = 0x00;
 251            CAN0DATL = 0x00;
 252            CAN0DATH = 0x80;  // MsgVal=1, Dir =0
 253            CAN0DATL = (id << 2 ) & 0x3C;           //IF2ARB
 254                           //MsgVal=1, Xad=0,Dir=0:receive
 255          
 256            CAN0DATH = 0x04;           //not use the filter,RxEn=1
 257            CAN0DATL = 0x88;           //IF2MSGC
 258          
 259            CAN0ADR = IF1CMDRQST;      
 260            CAN0DATL = MsgNum;            
 261          }
 262          */
 263          
 264          /*
 265          //-----------------------------------------------------------------------------
 266          // remote_rqst(unsigned char MsgNum)
 267          //-----------------------------------------------------------------------------
 268          void CAN_RemoteRqst(unsigned char MsgNum)
 269          {
 270            SFRPAGE = CAN0_PAGE;
 271          
 272            CAN0ADR = IF1CMDMSK;
 273            CAN0DATL = 0x87;    //wr/rd=1,mask=0,arb=0,control=0,,clrintpnd=0,txrqet=1,dataa=1,datab=1
 274            //?? remote data??
 275          
 276            CAN0ADR = IF1CMDRQST;      
 277            CAN0DATL = MsgNum;    
 278          }
 279          */
 280          
 281          void CAN_Remote_Send_Init(unsigned char MsgNum,unsigned char id )
 282          {
 283   1      SFRPAGE = CAN0_PAGE;
 284   1        CAN0ADR = IF1CMDMSK;
 285   1        CAN0DATL = 0xb3;    //wr/rd=1,mask=0,arb=1,control=1,,clrintpnd=0,txrqet=0,dataa=1,datab=1
 286   1      
 287   1        CAN0ADR = IF1ARB1;
 288   1        CAN0DATH = 0x00;
 289   1        CAN0DATL = 0x00;
 290   1        CAN0DATH = 0xA0;      //
 291   1        CAN0DATL =  (id << 2 ) & 0x3C;    //0x80 | (((DO_Address & 0x0F) << 2)); //IF1ARB
 292   1                       //MsgVal=1, Xad=0,Dir=1:send 
 293   1        CAN0DATH = 0x0a;           // not use the filter,UMask=0,RmtEn=1,TxIE=1
 294   1        CAN0DATL = 0x88;           //IF1MSGC: eob=1, dlc =8
 295   1      
 296   1        CAN0DATH = 0x00;
 297   1        CAN0DATL = 0x00;                      //data A1
 298   1        CAN0DATH = 0x00;
 299   1        CAN0DATL = 0x00;                      //data A2                                               
 300   1        CAN0DATH = 0x00;
 301   1        CAN0DATL = 0x00;                      //data B1
 302   1        CAN0DATH = 0x00;
 303   1        CAN0DATL = 0x00;          //data B2
C51 COMPILER V7.10   INT                                                                   07/27/2008 17:14:41 PAGE 6   

 304   1      
 305   1        CAN0ADR = IF1CMDRQST;      
 306   1        CAN0DATL = MsgNum;           //
 307   1      }
 308          
 309          
 310          void CAN_Remote_Updata(unsigned char MsgNum,unsigned char *p_data )
 311          {
 312   1        unsigned char num;
 313   1      
 314   1        SFRPAGE = CAN0_PAGE;
 315   1        CAN0ADR = IF2CMDMSK;
 316   1        CAN0DATL = 0x08;    //wr/rd=0,mask=0,arb=0,control=0,,clrintpnd=1,txrqet=0,dataa=0,datab=0
 317   1        CAN0ADR = IF2CMDRQST;      
 318   1        CAN0DATL = MsgNum;           //
 319   1      
 320   1        CAN0ADR = IF1CMDMSK;
 321   1        CAN0DATL = 0x8b;    //wr/rd=1,mask=0,arb=0,control=0,,clrintpnd=1,txrqet=0,dataa=1,datab=1
 322   1      
 323   1        CAN0ADR = IF1DATA1;
 324   1        for(num=0;num<8;num++)
 325   1        {
 326   2              CAN0DATH=p_data[num];
 327   2              num++;
 328   2              CAN0DATL=p_data[num];
 329   2        }
 330   1        
 331   1        CAN0ADR = IF1CMDRQST;      
 332   1        CAN0DATL = MsgNum;     
 333   1      }
 334          


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