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

📄 can.lst

📁 PIC单片机的CAN实验程序
💻 LST
字号:
     1: #include "pic18.h"

     2: char CAN_Adress_H,CAN_Adress_L;

     3: char CAN_Adress_EH,CAN_Adress_EL;

     4: int CAN_FLAG;

     5: unsigned int CAN_Delay_count=0;

     6: 

     7: void initial()

     8: {

     9:  INTCON=0X00;

    10:  ADCON1=0X07;

    11:  PIE1=0;

    12:  PIE2=0;

    13:  PIE3=0;

    14:  }

    15:  

    16:  

    17:  void initcan()

    18:  {

    19:          TRISB=(TRISB|0X08)&0XFB;

    20:          CANCON=0x80;

    21:          while((CANSTAT&0X80)==0)

    22:          {;

    23:                  }

    24:         BRGCON1=0X01;

    25:         BRGCON2=0X90;

    26:         BRGCON3=0X42;

    27:         TXB0CON=0x03;

    28:         TXB0SIDL=CAN_Adress_L&0xE0;

    29:         TXB0SIDH=CAN_Adress_H;

    30:         TXB0DLC=0X08;

    31:         TXB0D0=0X00;

    32:         TXB0D1=0X01;

    33:         TXB0D2=0X02;

    34:         TXB0D3=0X03;

    35:         TXB0D4=0X04;

    36:         TXB0D5=0X05;

    37:         TXB0D6=0X06;

    38:         TXB0D7=0X07;

    39:         RXB0SIDL=CAN_Adress_L&0xE0;

    40:         RXB0CON=0X20;

    41:         RXB0DLC=0X08;

    42:         RXB0D0=0X00;

    43:         RXB0D1=0X00;

    44:         RXB0D2=0X00;

    45:         RXB0D3=0X00;

    46:         RXB0D4=0X00;

    47:         RXB0D5=0X00;

    48:         RXB0D6=0X00;

    49:         RXB0D7=0X00;

    50:         

    51:         RXF0SIDH=CAN_Adress_h;

    52:         RXF0SIDL=CAN_Adress_L;

    53:         RXM0SIDH=0XFF;

    54:         RXM0SIDL=0XE0;

    55:         

    56:         CANCON=0X40;

    57:         

    58:         while((CANSTAT&0X40)!=0)

    59:         {;}

    60:         PIR3=0X00;

    61:         PIE3=PIE3|0X01;

    62:         IRP3=IPR3|0X01;

    63:         }

    64:         void CAN_deal()

    65:         {

    66:                 CAN_FLAG=0;

    67:                 TXB0CON=TXB0CON&0ZF7;

    68:                 TXB0D0=RXB0D0+1;

    69:                 TXB0D1=RXB0D1+1;

    70:                 TXB0D2=RXB0D2+1;

    71:                 TXB0D3=RXB0D3+1;

    72:                 TXB0D4=RXB0D4+1;

    73:                 TXB0D5=RXB0D5+1;

    74:                 TXB0D6=RXB0D6+1;

    75:                 TXB0D7=RXB0D7+1;

    76:                 }

    77:         

    78:         void interrupt HI_ISR()

    79:         {

    80:                 if(RXB0IF==1)

    81:                 {

    82:                 CAN_FLAG=1;

    83:                 BXB0IF=0;

    84:                 BXB0FUL=0;

    85:                 }

    86:                 

    87:   main()

    88:   {

    89:           initial();

    90:           CAN_Adress_H=0x33;

    91:           CAN_Adress_L=0xE0;

    92:           initcan();

    93:           IPEN=1;

    94:           INTCON=INTCON|0XC0;

    95:           while(1){

    96:                   if(CAN_FLAG==1)CAN_deal();

    97:                   else if(CAN_Delay_count>0x2FE)

    98:                   {

    99:                           TXB0CON=TXB0CON|0X08;

   100:                           CAN_Delay_count=0;

   101:                           }

   102:                           else CAN_Delay_count++;

   103:                           }

   104:                           }

   105:         

   106:         

   107:         

   108:         

   109:         

⌨️ 快捷键说明

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