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

📄 main.lst

📁 CAN总线调试通过的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V3.96,  SN-83203013  MAIN                                                     05/29/07  15:22:24  PAGE 1   


DOS C51 COMPILER V3.96, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN D:\CC\MAIN.OBJ
COMPILER INVOKED BY: C:\LIUBO\51\BIN\C51.EXE D:\CC\MAIN.C DB SB OE

stmt level    source

   1          #define  _GLOBAL_SJA1000_PELI_
   2          #include "PELI.H"
*** WARNING 317 IN LINE 87 OF OS.H: macro 'ByteRate_20k': invalid redefinition
*** WARNING 317 IN LINE 88 OF OS.H: macro 'ByteRate_40k': invalid redefinition
*** WARNING 317 IN LINE 89 OF OS.H: macro 'ByteRate_50k': invalid redefinition
*** WARNING 317 IN LINE 90 OF OS.H: macro 'ByteRate_80k': invalid redefinition
*** WARNING 317 IN LINE 91 OF OS.H: macro 'ByteRate_100k': invalid redefinition
*** WARNING 317 IN LINE 92 OF OS.H: macro 'ByteRate_125k': invalid redefinition
*** WARNING 317 IN LINE 93 OF OS.H: macro 'ByteRate_200k': invalid redefinition
*** WARNING 317 IN LINE 94 OF OS.H: macro 'ByteRate_250k': invalid redefinition
*** WARNING 317 IN LINE 95 OF OS.H: macro 'ByteRate_400k': invalid redefinition
*** WARNING 317 IN LINE 96 OF OS.H: macro 'ByteRate_500k': invalid redefinition
*** WARNING 317 IN LINE 97 OF OS.H: macro 'ByteRate_666k': invalid redefinition
*** WARNING 317 IN LINE 98 OF OS.H: macro 'ByteRate_800k': invalid redefinition
*** WARNING 317 IN LINE 99 OF OS.H: macro 'ByteRate_1000k': invalid redefinition
   3          #include "reg52.h"
   4          #include "REG.h"
   5          #include "IO.h"
   6          
   7          sbit RST_SJA1000 = P1^6; //SJA1000硬件复位
   8          
   9          //#ifdef _GLOBAL_SJA1000_PELI_
  10          //extern unsigned char xdata CAN_SJA_BaseAdr; //定义SJA1000的片选基址
  11          //extern unsigned char xdata *SJA_CS_Point;
  12          //#else
  13          //unsigned char xdata CAN_SJA_BaseAdr _at_ 0x7F00; //定义SJA1000的片选基址
  14          //unsigned char xdata *SJA_CS_Point; //指针指向空
  15          //#endif
  16          
  17          unsigned char CAN_Baudrate_Filter_Buffer[9]={3,0,0,0,0,0xff,0xff,0xff,0xff};//3为发送的波特率(40kbs)    存
             -放设置波特率和滤波器的数据
  18          //    从机地址为0x02   其中的8为CANPC规定的
  19          unsigned char Send_CAN_Info_ID[1]={0x82};    
  20          //    0x31~~~0x38是要发送的数据  CANPC规定发送必须为ASCII 格式  与CANPC通讯用   0x01为CANPC地址
  21          unsigned char Send_CAN_Data[8]={0x01,0x31,0x33,0x34,0x35,0x36,0x37,0x38};//存放数据帧的数据
  22          
  23          unsigned char ss[1]={0x08} ;
  24          
  25          /****************************************************
  26                              单片机初始化
  27          ****************************************************/
  28          void  InitCPU(void)
  29          {
  30   1        EA         =1;
  31   1        IT0        =1;
  32   1        EX0        =1;
  33   1        PX0        =1;
  34   1      }
  35          
  36          /*---------------------------------------------------------------------------------------------------
  37          ** 函数原型:	void	Delay_ms(unsigned char j)
  38          ** 功能描述:	该函数用于不精确的延时。在12M,6CLK下,大约延时j*1ms
  39          ** 参数说明:	0-255
  40          ** 返回值:    无
  41          /*------------------------------------------------------------------------------------------------*/
C51 COMPILER V3.96,  SN-83203013  MAIN                                                     05/29/07  15:22:24  PAGE 2   

  42          void	Delay_ms(unsigned char j)
  43          {
  44   1        	unsigned char m,n;
  45   1        	for(n=0;n<=j;n++)
  46   1      	{
  47   2      		for(m=0;m<=250;m++)
  48   2      	 	{
  49   3      	   	   ;
  50   3      	 	}
  51   2      	}
  52   1      }
  53          
  54          /**************************************************
  55          
  56          函数功能:初始化 SJA1000
  57          
  58          **************************************************/
  59          SJA1000_Config_Normal()
  60          {
  61   1      	unsigned char BTR0;
  62   1      	unsigned char BTR1;
  63   1              unsigned char tuichu;
  64   1              unsigned char mode;
  65   1              unsigned char n;
  66   1      	BTR0=0x00;
  67   1      	BTR1=0x14;                                       //设置为1M波特率通信
  68   1        SJA_CS_Point=&CAN_SJA_BaseAdr;
  69   1       // WriteSJAReg(REG_CAN_MOD,0x00);
  70   1      
  71   1        SJAEntryResetMode_BCan();                        //进入复位模式
*** WARNING 206 IN LINE 71 OF D:\CC\MAIN.C: 'SJAEntryResetMode_BCan': missing function-prototype
  72   1        mode = SJAEntryResetMode_BCan();
  73   1        while(mode != 0);            //SJAEntryResetMode()=0则成功进入复位模式
  74   1        n =  ReadSJAReg(REG_CR);
  75   1      // WriteSJAReg(REG_CAN_MOD,0x01);              //配置模式寄存器,选择双滤波、自发自收模式
  76   1       // WriteSJAReg(REG_CAN_CR,0x06);
  77   1        WriteSJAReg(REG_CDR,0x48); 	      //配置时钟分频寄存器,选择PeliCAN模式
  78   1        n =  ReadSJAReg(REG_CDR);
  79   1      
  80   1      //  mode = ReadSJAReg(REG_CAN_MOD);
  81   1      //  WriteSJARegBlock(16,&CAN_Baudrate_Filter_Buffer[1],8); //配置验收代码/屏蔽寄存器
  82   1        WriteSJAReg(REG_ACR,0x00);
  83   1        WriteSJAReg(REG_AMR,0xff);
  84   1      //  WriteSJAReg(REG_CAN_BTR0,BTR0);		         //配置总线定时器0x00
  85   1      
  86   1      //  WriteSJAReg(REG_CAN_BTR1,BTR1);		         //配置总线定时器0x14
  87   1      //  n = ReadSJAReg(REG_CAN_BTR1);
  88   1        SJASetBandRateStandard(CAN_Baudrate_Filter_Buffer[0]);
  89   1        WriteSJAReg(REG_OCR,0x1a);			 //配置输出管脚,推挽输出
  90   1      //  P1=0;
  91   1        SJAQuitResetMode_BCan();
*** WARNING 206 IN LINE 91 OF D:\CC\MAIN.C: 'SJAQuitResetMode_BCan': missing function-prototype
  92   1        tuichu=SJAQuitResetMode_BCan();         //退出复位模式,进入工作模式
  93   1        while(tuichu!=0);      //SJAQuitResetMode()=0退出复位模式,进入工作模式
  94   1      //   WriteSJAReg(REG_CAN_MOD,0x00);
  95   1         mode = ReadSJAReg(REG_CR);
  96   1      
  97   1      }
  98          
  99          main()
 100          {
 101   1          unsigned char i;
C51 COMPILER V3.96,  SN-83203013  MAIN                                                     05/29/07  15:22:24  PAGE 3   

 102   1          unsigned char temp_data ;
 103   1          unsigned char canstatus;
 104   1          unsigned char fuwei;
 105   1          unsigned char Receive_CAN[11];
 106   1          unsigned char Receive_CAN_ID[5];
 107   1          unsigned char Receive_CAN_Data[8];
 108   1      //    P2=0;
 109   1          InitCPU();
 110   1      //    for(i=0;i<128;i++)
 111   1      //             {
 112   1      //               WriteSJARegBlock((0+i),huanchong,1);
 113   1      //             }
 114   1      
 115   1              Delay_ms(100);
 116   1              P1=0;
 117   1              Delay_ms(100);
 118   1              P1=1;
 119   1              Delay_ms(100);
 120   1      
 121   1      
 122   1      	SJA_CS_Point=&CAN_SJA_BaseAdr;
 123   1      //      SJATestInterface(0xaa);
 124   1      //	Sja1000HardwareRst();                         //SJA1000硬件复位
 125   1      
 126   1              if(SJATestInterface(0xaa)==0)
 127   1               {
 128   2      	   SJA1000_Config_Normal();        // SJA1000 进入正常模式配置
 129   2               }
 130   1      //        fuwei = ReadSJAReg(REG_CAN_MOD);
 131   1      	WriteSJAReg(REG_CR,0x0E);		      //使能SJA1000发送中断位
 132   1      //	WriteSJARegBlock(16,Send_CAN_Info_ID,5);      //扩展帧,向发送缓冲区写入5个数据
 133   1      //	WriteSJARegBlock(21,Send_CAN_Data,8);         //扩展帧,向发送缓冲区写入8个数据
 134   1      	while(1)
 135   1      	 {
 136   2         //      	canstatus = ReadSJAReg(REG_CAN_IER);
 137   2      
 138   2         //         if( (canstatus& 0x01)==0x01)
 139   2         //          {
 140   2         //             ReadSJARegBlock(16,Receive_CAN,13);
 141   2         //          }
 142   2       //             i=ReadSJAReg(REG_CAN_IR);
 143   2       //             while(ReadSJAReg(REG_CAN_IR)!=0x03)
 144   2       //             {
 145   2       //                 i=ReadSJAReg(REG_CAN_IR);
 146   2       //             }
 147   2      /*******************************************************************************************************
 148   2                                            发送数据
 149   2      *******************************************************************************************************/
 150   2                    temp_data =ReadSJAReg(REG_SR);
 151   2      
 152   2                   while((temp_data & 0x04) != 0x04)  //有接收数据 SR.0=1 =>RXFIFO存在完整有效报文
 153   2                     {
 154   3                       temp_data =ReadSJAReg(REG_SR);
 155   3       //                 ReadSJARegBlock(20,Receive_CAN,11); //读出接收寄存器中的数据
 156   3                     }
 157   2      
 158   2                    WriteSJARegBlock(10,Send_CAN_Info_ID,1);
 159   2                    WriteSJARegBlock(11,ss,1);
 160   2                    WriteSJARegBlock(12,Send_CAN_Data,8);
 161   2                    WriteSJAReg(REG_CMR,0x01);
 162   2      /*************************************************************************************************
 163   2      
C51 COMPILER V3.96,  SN-83203013  MAIN                                                     05/29/07  15:22:24  PAGE 4   

⌨️ 快捷键说明

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