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

📄 int.lst

📁 2个F040之间的CAN通讯
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 16:49:17 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          //-----------------------------------------------------------------------------
 211          // CAN_receive(unsigned char MsgNum,unsigned char *p )
 212          //-----------------------------------------------------------------------------
 213          void CAN_Receive (unsigned char MsgNum ,unsigned char *p)
 214          {
 215   1        unsigned char num;
 216   1      
 217   1        SFRPAGE = CAN0_PAGE;
 218   1        CAN0ADR = IF2CMDMSK;
 219   1        CAN0DATL = 0x0F;
 220   1        CAN0ADR = IF2CMDRQST;
 221   1        CAN0DATL = MsgNum;
 222   1      
 223   1        CAN0ADR = IF2DATA1;
 224   1        for(num=0;num<4;num++)
 225   1        {
 226   2              *p++ = CAN0DATH;
 227   2              *p++ = CAN0DATL;
 228   2        }
 229   1      }
 230          
 231          
 232          
 233          //-----------------------------------------------------------------------------
 234          // remote_rqst_int(unsigned char MsgNum , unsigned char id)
 235          //wr/rd=1,mask=0,arb=1,control=1,,clrintpnd=0,txrqet=0,dataa=1,datab=1
 236          //-----------------------------------------------------------------------------
 237          void CAN_RemoteRqst_Init(unsigned char MsgNum , unsigned char id)        //id=1
 238          {
 239   1      
 240   1      //  unsigned char id_tempL,id_tempH;
 241   1      //  id_tempL = id << 2;          //  id & 0x0F) << 2
C51 COMPILER V7.10   INT                                                                   07/27/2008 16:49:17 PAGE 5   

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

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    330    ----
   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 + -