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

📄 testcan.lst

📁 keil编译,单片机资料,Can通讯。
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.01  TESTCAN                                                                04/10/2003 13:33:09 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE TESTCAN
OBJECT MODULE PLACED IN testcan.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE testcan.c BROWSE INTVECTOR(0X4000) DEBUG OBJECTEXTEND

stmt level    source

   1          #include <REG52.H>
   2          //#include <AT89X51.H>
   3          #include <SJA_BCANCONF.H>
   4          //#include <SJA_BCANFUNC.C>
   5          #include <display_s.h>
   6          #include    <string.h>
   7          
   8          void Init_Cpu(void);
   9          void Init_T0(void);
  10          void Sja_1000_Init(void);
  11          void disp_ok(void);
  12          void disp_err(void);
  13          
  14          bit flag_sec;
  15          unsigned char data a[5];
  16          unsigned char data  send_data[10],rcv_data[10];
  17          unsigned char databuf,sec_data,second;
  18          unsigned char data  Tmod_data;
  19          unsigned char bdata flag_init;
  20          
  21          sbit rcv_flag=flag_init^0;
  22          sbit err_flag=flag_init^2;
  23          
  24          
  25          void main(void)
  26          {
  27   1              Sja_1000_Init();                                                                //initialize Sja100
  28   1              Init_T0();                                                                              //initialize T0
  29   1              Init_Cpu();                                                                             //initialize mcu
  30   1              flag_init=0x00;
  31   1      
  32   1              while(1)
  33   1              {
  34   2                      if(rcv_flag)                                                            //if there is receive interrupt
  35   2                      {
  36   3                              rcv_flag=0;
  37   3                              BCAN_DATA_RECEIVE(rcv_data);
  38   3                              BCAN_CMD_PRG(0x04);
  39   3                              disp_ok();
  40   3                      }
  41   2                      if(flag_sec)                                                            //
  42   2                      {
  43   3                              flag_sec=0;                                                             //send data if reach 1 s
  44   3                              //send_data[0]=0xaa;                                    //Basic can
  45   3                              send_data[0]=0x48;                                              //Pelican
  46   3                              send_data[1]=0xaa;
  47   3                              send_data[2]=0x00;
  48   3                              send_data[3]=second;
  49   3                              BCAN_DATA_WRITE(send_data);
  50   3                              BCAN_CMD_PRG(0x12);
  51   3                      }
  52   2                      if (err_flag)
  53   2                      {
  54   3                              err_flag=0;
  55   3                              disp_err();
C51 COMPILER V7.01  TESTCAN                                                                04/10/2003 13:33:09 PAGE 2   

  56   3                              Sja_1000_Init();
  57   3                      }
  58   2                      display(a);
  59   2              }
  60   1      }
  61          
  62          
  63          void ex0_int(void) interrupt 0 using 1
  64          {
  65   1              SJA_BCANAdr=REG_INTERRUPT;
  66   1              flag_init=*SJA_BCANAdr;
  67   1      }
  68          
  69          
  70          void T0_int(void) interrupt 1 using 2
  71          {
  72   1              TR0=0;
  73   1              sec_data--;
  74   1              if(sec_data==0)
  75   1              {
  76   2                      sec_data=0x10;
  77   2                      TH0=0x80;
  78   2                      TL0=0x60;
  79   2                      flag_sec=1;
  80   2                      second++;
  81   2              }
  82   1              TR0=1;
  83   1      }
  84          
  85          
  86          void Init_Cpu(void)
  87          {
  88   1              PX0=1;
  89   1              IT0=1;
  90   1              EX0=1;
  91   1              ET0=1;
  92   1              EA=1;
  93   1              sec_data=0x10;
  94   1      }
  95          
  96          
  97          void Init_T0(void)
  98          {
  99   1      Tmod_data=TMOD;
 100   1      Tmod_data&=0xf0;
 101   1      Tmod_data|=0x01;
 102   1      TMOD=Tmod_data;
 103   1      TH0=0x80;
 104   1      TL0=0x60;
 105   1      TR0=1;
 106   1      sec_data=0x20;
 107   1      second=0x00;
 108   1      }
 109          
 110          
 111          void Sja_1000_Init(void)
 112          {
 113   1              bit s;
 114   1              s=BCAN_CREATE_COMMUNATION();
 115   1              s=BCAN_ENTER_RETMODEL();
 116   1              s=BCAN_SET_OUTCLK(0xaa,0xc8);                           //Pelican
 117   1              s=BCAN_SET_BANDRATE(0x04);
C51 COMPILER V7.01  TESTCAN                                                                04/10/2003 13:33:09 PAGE 3   

 118   1              s=BCAN_SET_OBJECT(0xaa,0xff);
 119   1              //s=BCAN_SET_OUTCLK(0xaa,0x48);
 120   1              s=BCAN_SET_MOD();
 121   1              s=BCAN_QUIT_RETMODEL();
 122   1              SJA_BCANAdr=REG_IER;
 123   1              *SJA_BCANAdr|=0xff;
 124   1              SJA_BCANAdr=REG_CONTROL;
 125   1              //*SJA_BCANAdr|=0x1e;
 126   1      }
 127          
 128          
 129          
 130          void disp_ok(void)
 131          {
 132   1              a[0]=0x00;
 133   1              a[1]=0x11;
 134   1              a[2]=0x10;
 135   1              databuf=rcv_data[2];
 136   1              databuf>>=0x04;
 137   1              a[3]=databuf;
 138   1              databuf=rcv_data[2];
 139   1              databuf=databuf&0x0f;
 140   1              a[4]=databuf;
 141   1      }
 142          
 143          
 144          void disp_err(void)
 145          {
 146   1              a[0]=0x00;
 147   1              a[1]=0x0e;
 148   1              a[2]=0x10;
 149   1              a[3]=0x0f;
 150   1              a[4]=0x0c;
 151   1      }
 152          
 153          
 154          
 155           bit   BCAN_CREATE_COMMUNATION(void)
 156           {  
 157   1          SJA_BCANAdr=REG_TEST;                     //访问测试寄存器            
 158   1          
 159   1          *SJA_BCANAdr   =0xaa;                     //写入测试值
 160   1          if(*SJA_BCANAdr == 0xaa)
 161   1          {
 162   2              return    0;                          //读测试正确
 163   2          }
 164   1          else
 165   1          {    
 166   2             return    1;
 167   2          } 
 168   1       }      
 169          
 170          
 171           bit   BCAN_ENTER_RETMODEL(void)
 172           {
 173   1          unsigned   char   TempData;
 174   1          SJA_BCANAdr  = REG_CONTROL;                   //访问地址指向控制寄存器 
 175   1          TempData=  *SJA_BCANAdr;                      //保存原始值
 176   1          *SJA_BCANAdr=(TempData|0x01);                 //置位复位请求
 177   1          if((*SJA_BCANAdr&0x01) == 1)
 178   1          {
 179   2             return   0;
C51 COMPILER V7.01  TESTCAN                                                                04/10/2003 13:33:09 PAGE 4   

 180   2          }
 181   1          else
 182   1          {
 183   2             return   1;
 184   2          }
 185   1          
 186   1       }
 187          
 188          
 189           bit   BCAN_QUIT_RETMODEL(void)
 190           {
 191   1          unsigned   char   TempData;
 192   1          SJA_BCANAdr = REG_CONTROL;                   //访问地址指向控制寄存器 
 193   1          TempData    = *SJA_BCANAdr;                  //保存原始值
 194   1          *SJA_BCANAdr=(TempData&0xfe);                        //清除复位请求
 195   1          if((*SJA_BCANAdr&0x01) == 0)
 196   1          {
 197   2             return   0;                               //
 198   2          }
 199   1          else
 200   1          {
 201   2             return   1;                              //退出成功
 202   2          }
 203   1      
 204   1       }
 205          
 206          
 207          unsigned  char  code    SJA_BTR_CODETAB[]={
 208              0x53,0x2F,                        //   ;20KBPS的预设值
 209              0x87,0xFF,                     //;40KBPS的预设值

⌨️ 快捷键说明

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