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

📄 can_self.lst

📁 51+SJA1000+PA82C250构成的CAN节点
💻 LST
字号:
C51 COMPILER V8.12   CAN_SELF                                                              03/09/2009 20:10:07 PAGE 1   


C51 COMPILER V8.12, COMPILATION OF MODULE CAN_SELF
OBJECT MODULE PLACED IN can_self.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE can_self.c DEBUG OBJECTEXTEND

line level    source

   1          
   2          //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
   3          //描述:                                                                                                                                            &
   4          //      CAN自收发程序                                                          &                          
             -                               
   5          //      CAN主要参数:       PeliCAN模式,扩展帧EFF模式                          &
   6          //      29位标示码结构:                                                       &
   7          //      发送数据结构:计数结果,0x02,0x03,0x04,0x05,0x06,0x07,0x08              &
   8          //      接收数据结构: 待显示数据+其它7个字节的数据                             &
   9          //      本节点的地址: 0x11,0x22,0x33,0x00;可以接收全部节点的数据               &
  10          //      目的节点地址:0x01,0x02,0x03,0x00;可以被能接收全部节点数据的节点接收   &
  11          //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  12          #include <ADUC812.H>
  13          #include <stdio.h>
  14          #include <intrins.h>
  15          #include <can_selfdef.h>
  16          
  17          unsigned char  Send_CAN_Info_ID[5]={0x88,0x00,0x00,0x2a,0x00};//扩展帧,8个字节数据,发送数据到ID为0000054
             -0的节点                
  18          unsigned char  Send_CAN_Data[8]={0x23,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
  19          
  20          unsigned char  RX_buffer[13]; //接收的13个字节数据、
  21          //unsigned char  TX_buffer[13]={0x88,0x11,0x22,0x33,0x44,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88} ; //接收
             -的13个字节数据
  22          //unsigned char data  rcv_data[8];
  23          unsigned char j=0;
  24          
  25          bit flag_sec,rcv_flag,err_flag;                             //发送,接收,错误中断标志
  26          
  27          extern void CAN_Rx_display(void);
  28          extern void CAN_Rx_data( void );
  29          /******************************************************************************/
  30          /*       serial_init: initialize serial interface                             */
  31          /******************************************************************************/
  32           void Serial_Init (void)
  33          {
  34   1           SCON =  0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr 
  35   1               PCON |= 0x00 ;//SMOD=1
  36   1      
  37   1               TMOD &= 0x0F; /*清TMOD高4位 */ 
  38   1               TMOD |= 0x20 ; //方式控制:GATE=0;C/T=0;M1M0=10; timer 1, mode 2, 8-bit reload 
  39   1              
  40   1               TH1 = 0xfd ; //Baud: fosc=11.0592MHz ,9600
  41   1               TL1 = 0xfd ;
  42   1               
  43   1               TR1 = 1 ; // 启动timer 1 run 
  44   1               TI = 1;
  45   1               //EA=1;
  46   1               //ES  = 1;      
  47   1      }
  48          
  49          char _getkey ()
  50          {
  51   1        char c;
  52   1      
C51 COMPILER V8.12   CAN_SELF                                                              03/09/2009 20:10:07 PAGE 2   

  53   1        while (!RI) 
  54   1        c = SBUF;
  55   1        RI = 0;
  56   1        return (c);
  57   1      }
  58          
  59          //putchar (basic version): expands '\n' into CR LF */
  60          char putchar (char c)  
  61          {
  62   1        if (c == '\n')  
  63   1        {
  64   2          while (!TI);
  65   2          TI = 0;
  66   2          SBUF = 0x0d;                          
  67   2        }
  68   1        while (!TI);
  69   1        TI = 0;
  70   1        return (SBUF = c);
  71   1      }
  72          
  73          ///////////////////////////////////////////////
  74          //函数:ex0_int 
  75          //说明:中断服务程序
  76          //入口:无
  77          //返回:无
  78          ///////////////////////////////////////////////
  79          //***********************************************************
  80          void ex0_int(void) interrupt 0 using 1
  81          {
  82   1              if(IR&0x01)                                             //产生了接收中断
  83   1               { rcv_flag=1; }                
  84   1          if(IR&0x04)                                         //产生了错误中断
  85   1               { err_flag=1; }                
  86   1      }
  87          ///////////////////////////////////////////////
  88          //函数:main 
  89          //说明:主函数
  90          //入口:无
  91          //返回:无
  92          ///////////////////////////////////////////////
  93          void main(void)
  94          {
  95   1          //CPU初始化
  96   1          SJA_RST = 0;//CAN总线复位管脚,复位无效
  97   1      
  98   1              Serial_Init();
  99   1              PX0=1;                                          //外部中断0高优先级
 100   1              IT0=1;                                          //设置INT0为下降沿中断
 101   1              EX0=1;                                          //使能INT0中断
 102   1              EA=1; 
 103   1      
 104   1              SJA_CS_Point=&CAN_SJA_BaseAdr;                              //设置SJA1000的片选地址
 105   1              printf( "SJA1000 Init Start!\n");
 106   1          CAN_init(  ); //SJA1000初始化,对 SJA1000寄存器的读写是采用外部寄存器寻址方式,所以不需要程序单独控制

⌨️ 快捷键说明

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