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

📄 main.lst

📁 CAN转232及485的通讯卡程序,调试通过
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.08   MAIN                                                                  01/04/2009 14:39:12 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\main.obj
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE ..\UE\main.c BROWSE INCDIR(..\..\CAN-232互发;C:\Keil\C51\INC)
                    - DEBUG OBJECTEXTEND PRINT(.\main.lst) OBJECT(.\main.obj)

line level    source

   1          
   2          /*
   3          *********************************************************************************************************
   4          * Copyright (c) 2003, 凌宝设计中心
   5          * All rights reserved.
   6          * 
   7          * 文件名称:cancom.c
   8          * 文件标识:无
   9          * 摘    要:
  10          * 
  11          * 以前版本:1.0
  12          * 作    者:王黎
  13          * 完成日期:2003年9月9日
  14          *
  15          *当前版本:2.0
  16          *作    者: WWW.ZHTIANTAN.COM
  17          *完成日期:08年11月
  18          *********************************************************************************************************
  19          * 包含头文件    
  20          *       
  21          *********************************************************************************************************
  22          */
  23          #include "cancom.h"
  24          
  25          /*
  26          *********************************************************************************************************
  27          *       
  28          * 全局变量定义  
  29          *       
  30          *********************************************************************************************************
  31          */
  32          
  33          
  34          /**************************CAN**************************************/
  35          static code BYTE CANID[] = { 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 
  36                                                          130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
  37                                                          140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 
  38                                                          150, 151, 152, 153, 154, 155, };        // 1~36路CAN的ID号      
  39          static code BYTE MYID=0X55;
  40          BYTE idata ucCircle = 0;                        // 标志1~36路的某路
  41          BOOL idata bSjaReceived;                        // 标识CAN数据是否有效
  42          unsigned char  xdata Candata_R[BadLenght_can][13];    //存放CAN接收数据 
  43          unsigned char  TCandata[13];
  44          unsigned char  BagCount_R_CAN;  //CAN接收数据包数计数
  45          unsigned char  Bagcount_T_CAN;  //CAN发送数据包数计数
  46          unsigned int   RCount_CAN=0;
  47          unsigned int   TCount_CAN=0;
  48          
  49          
  50          /**************************RS232**************************************/
  51          
  52          BOOL idata int_flag_232;//232发送完一包数据标志位
  53          BOOL idata rx_flag_232;//232接收完一包数据标志位
  54          BOOL idata int_232;//232发送一字节完成标志
C51 COMPILER V8.08   MAIN                                                                  01/04/2009 14:39:12 PAGE 2   

  55          BOOL idata rx_232; //232接收完一字节完成标志 
  56          unsigned char  *send_232; //232发送指针
  57          unsigned char  xdata rec_232_R[BadLenght][13];//定义10包232的接收级冲区
  58          unsigned char  length_232=0; //标识232发送长度
  59          unsigned char  length_232_R=0; //标识232接收长度
  60          unsigned char  BagCount_T_232=0; //232发送数据包数计数
  61          unsigned char  BagCount_R_232=0;  //232读取数据包数计数
  62          unsigned int   TCount_232=0; //发送计数
  63          unsigned int   RCount_232=0;//接收计数
  64          
  65          
  66          
  67          /**************************485**************************************/
  68          BOOL idata rx_flag_485;//485接收完成标志
  69          BOOL idata int_flag_485; //485发送完成标志
  70          BOOL idata int_485;//485发送一字节完成标志
  71          BOOL idata rx_485; //485接收完一字节完成标志 
  72          unsigned char  *send_485; //485发送指针
  73          unsigned char  xdata rec_485_R[BadLenght][13];//定义10包485的接收级冲区
  74          unsigned char  length_485=0; //485发送长度
  75          unsigned char  length_485_R=0; //485接收长度
  76          unsigned char  BagCount_T_485=0; //485发送数据包数计数
  77          unsigned char  BagCount_R_485=0;  //485读取数据包数计数
  78          unsigned int   TCount_485=0; //发送计数
  79          unsigned int   RCount_485=0; //接收计数
  80          
  81           
  82          sbit LED = P1^0;
  83          sbit Control485=P1^1;
  84          /*
  85          *********************************************************************************************************
  86          * 
  87          * 函数名称:CpuInit
  88          *       
  89          * 输入变量:无
  90          * 
  91          * 输出变量:无
  92          * 
  93          * 功能描述:初始化51各个CPU寄存器
  94          *       
  95          *********************************************************************************************************
  96          */
  97          void CpuInit(void)
  98          {
  99   1              
 100   1                      SCON = 0x50;            // 串口0设置为:8bits,无校验位,一位停止位
 101   1                      SCON1= 0x50;    // 串口1设置为:8bits,无校验位,一位停止位
 102   1                      PCON = 0xc0;    //波特率加倍
 103   1          TMOD = 0x21;    //定时器使用方式2  
 104   1          TH1  = 0xFD;                // 设置波特率为9600bps
 105   1          TL1  = 0xFD;
 106   1                      TR1  = 1;
 107   1                      ES   = 1;                       // 开串行0中断
 108   1                      ES1  = 1;     // 开串行1中断
 109   1                      EX0  = 1;                       // 开外部中断
 110   1                      IT0  = 0;                       // 外部中断1通过INT1脚的低电平触发
 111   1                      TH0  = 0Xdc;  //10MS定时,
 112   1                      TL0  = 0X00;
 113   1                      ET0  = 1;     // 定时器0中断
 114   1                      TR0  = 0;     // 关定时器0;
 115   1      }
 116          
C51 COMPILER V8.08   MAIN                                                                  01/04/2009 14:39:12 PAGE 3   

 117          /*
 118          *********************************************************************************************************
 119          * 
 120          * 函数名称:EnalbeInterrupt
 121          *       
 122          * 输入变量:无
 123          * 
 124          * 输出变量:无
 125          * 
 126          * 功能描述:打开中断
 127          *       
 128          *********************************************************************************************************
 129          */
 130          void EnalbeInterrupt(void)
 131          {
 132   1              EA = 1;
 133   1      }
 134          
 135          
 136          /*
 137          *********************************************************************************************************
 138          * 
 139          * 函数名称:DisableInterrupt
 140          *       
 141          * 输入变量:无
 142          * 
 143          * 输出变量:无
 144          * 
 145          * 功能描述:关闭中断,对各个中断源的中断信号不予响应
 146          *       
 147          *********************************************************************************************************
 148          */
 149          void DisableInterrupt(void)
 150          {
 151   1              EA = 0;
 152   1      }
 153          
 154          
 155          /*
 156          *********************************************************************************************************
 157          * 
 158          * 函数名称:DisableInterrupt
 159          *       
 160          * 输入变量:无
 161          * 
 162          * 输出变量:无
 163          * 
 164          * 功能描述:定时器中断
 165          *       
 166          *********************************************************************************************************
 167          */
 168          void time0_intt0(void) interrupt 1
 169          {
 170   1                EA=0; 
 171   1                TH0  = 0Xdc;  //10MS定时,
 172   1                TL0  = 0X00;   
 173   1                      TR0  = 0; //关定时器0 
 174   1                      LED^=1;
 175   1                      length_485_R=0;
 176   1                      length_232_R=0;
 177   1                      EA=1;
 178   1                      
C51 COMPILER V8.08   MAIN                                                                  01/04/2009 14:39:12 PAGE 4   

 179   1      }
 180          
 181          /*
 182          *********************************************************************************************************
 183          * 
 184          * 函数名称:SjaInit
 185          *       
 186          * 输入变量:无
 187          * 
 188          * 输出变量:无
 189          * 
 190          * 功能描述:SJA1000初始化函数
 191          *       
 192          *********************************************************************************************************
 193          */
 194          void SjaInit(void)
 195          {
 196   1                DisableInterrupt();
 197   1                CLKOUT =  0x80;                 //选择CAN模式为Pelican,中止CAN 输入比较器
 198   1                      do 
 199   1                      {                                                                               // 进入复位模式
 200   2                MODECTLREG = 0x01;
 201   2                      } 
 202   1                      while(!(MODECTLREG & 0x01));                       // 测试是否进入了复位模式
 203   1                      CLKOUT =  0xC0;                 //选择CAN模式为Pelican,中止CAN 输入比较器
 204   1                      BUFFER0=0;
 205   1          BUFFER1 = MYID&0x07;
 206   1                      BUFFER2 = ((CANID[0]&0x07)|(MYID&0xF8));                                
 207   1                      BUFFER3 = (CANID[0]&0xf8);               //设置接收识别ID 
 208   1                      BUFFER4 = 0Xff;                // 设置接收ID掩码,只对接收地址及本机ID进行识别
 209   1                      BUFFER5 = 0Xff;
 210   1                      BUFFER6 = 0Xff;
 211   1                      BUFFER7 = 0xff;                                  

⌨️ 快捷键说明

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