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

📄 selftest.lst

📁 用CAN总线开发的一个项目文件
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   SELFTEST                                                              07/01/2003 16:02:57 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE SELFTEST
OBJECT MODULE PLACED IN selftest.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE selftest.c BROWSE INCDIR(C:\Keil\C51\INC\) DEBUG OBJECTEXTEND

stmt level    source

   1          #include "REG52.H"
   2          #include "SJA_BCANCONF.H"
   3          #include "VIIC_C51.h"
   4          #include "ZLG7290.h"
   5          #include "string.h"
   6          #include "intrins.h"
   7          
   8          void Init_Cpu(void);
   9          void Init_T0(void);
  10          void Sja_1000_Init(void);
  11          void disp_ok(unsigned char *);
  12          void disp_err(void);
  13          void delay(unsigned int k);
  14          //void send(unsigned char a);
  15          void display(unsigned char display_buffer[5]);
  16          
  17          
  18          bit flag_sec;
  19          unsigned char data a[5];
  20          unsigned char data  send_data[10],rcv_data[10];
  21          unsigned char databuf,sec_data,second;
  22          unsigned char data  Tmod_data;
  23          unsigned char bdata flag_init;
  24          
  25          unsigned        char    data    display_bit;
  26          
  27          sbit rcv_flag=flag_init^0;
  28          sbit err_flag=flag_init^2;
  29          
  30          
  31          void main(void)
  32          {
  33   1              Sja_1000_Init();                                                                //initialize Sja1000
  34   1              Init_T0();                                                                              //initialize T0
  35   1              Init_Cpu();                                                                             //initialize mcu
  36   1              flag_init=0x00;
  37   1      
  38   1              while(1)
  39   1              {
  40   2                      if(rcv_flag)                                                            //if there is receive interrupt
  41   2                      {
  42   3                              rcv_flag=0;
  43   3                              BCAN_DATA_RECEIVE(rcv_data);
  44   3                              BCAN_CMD_PRG(0x04);                                             //释放缓冲区
  45   3                              disp_ok(rcv_data);
  46   3                      }
  47   2                      if(flag_sec)                                                            //
  48   2                      {
  49   3                              flag_sec=0;                                                             //send data if reach 1 s
  50   3                              //send_data[0]=0xaa;                                    //Basic can
  51   3                              send_data[0]=0x08;                                              //Pelican
  52   3                              send_data[1]=0xaa;
  53   3                              send_data[2]=second;
  54   3                              send_data[3]=second;
  55   3                              BCAN_DATA_WRITE(send_data);
C51 COMPILER V7.06   SELFTEST                                                              07/01/2003 16:02:57 PAGE 2   

  56   3                              BCAN_CMD_PRG(0x01);
  57   3                      }
  58   2                      if (err_flag)
  59   2                      {
  60   3                              err_flag=0;
  61   3                              disp_err();
  62   3                              Sja_1000_Init();
  63   3                      }
  64   2              
  65   2      
  66   2                      display(a);
  67   2                      delay(200);
  68   2              }       
  69   1      }
  70          
  71          
  72          void ex0_int(void) interrupt 2 //using 1
  73          {
  74   1              SJA_BCANAdr=REG_INTERRUPT;
  75   1              flag_init=*SJA_BCANAdr;
  76   1      }
  77          
  78          void T0_int(void) interrupt 1 //using 2
  79          {
  80   1      static unsigned char ii=0;
  81   1              TR0=0;
  82   1                      TH0=0x80;
  83   1                      TL0=0x60;
  84   1                      ii++;
  85   1                      if(ii>40)
  86   1                      {
  87   2                              flag_sec=1;
  88   2                              ii=0;
  89   2                              second++;
  90   2                      }
  91   1              TR0=1;
  92   1      }
  93          
  94          void Init_Cpu(void)
  95          {
  96   1              PX1=1;
  97   1              IT1=1;
  98   1              EX1=1;
  99   1              ET0=1;
 100   1              EA=1;
 101   1              sec_data=0x10;
 102   1      }
 103          
 104          
 105          void Init_T0(void)
 106          {
 107   1      Tmod_data=TMOD;
 108   1      Tmod_data&=0xf0;
 109   1      Tmod_data|=0x01;
 110   1      TMOD=Tmod_data;
 111   1      TH0=0x80;
 112   1      TL0=0x60;
 113   1      TR0=1;
 114   1      sec_data=0x20;
 115   1      second=0x00;
 116   1      }
 117          
C51 COMPILER V7.06   SELFTEST                                                              07/01/2003 16:02:57 PAGE 3   

 118          void Sja_1000_Init(void)
 119          {
 120   1              bit s;
 121   1              s=BCAN_CREATE_COMMUNATION();
 122   1              s=BCAN_ENTER_RETMODEL();
 123   1              s=BCAN_SET_OUTCLK(0xaa,0xc8);                           //Pelican
 124   1              s=BCAN_SET_BANDRATE(0x04);
 125   1              s=BCAN_SET_OBJECT(0xaa,0xff);
 126   1              //s=BCAN_SET_OUTCLK(0xaa,0x48);
 127   1              s=BCAN_SET_MOD();
 128   1              s=BCAN_QUIT_RETMODEL();
 129   1              SJA_BCANAdr=REG_IER;
 130   1              *SJA_BCANAdr=0x03;
 131   1              //*SJA_BCANAdr=0xff;
 132   1              //SJA_BCANAdr=REG_CONTROL;
 133   1              //*SJA_BCANAdr|=0x1e;
 134   1      }
 135          
 136          
 137          
 138          void disp_ok(unsigned char * rcv_data)
 139          {
 140   1              a[0]=rcv_data[0]%16;
 141   1              a[1]=rcv_data[0]/16;
 142   1              a[2]=0x1f;
 143   1              a[3]=rcv_data[3]%16;
 144   1              a[4]=rcv_data[3]/16;
 145   1      }
 146          
 147          
 148          void disp_err(void)
 149          {
 150   1              a[0]=0x18;
 151   1              a[1]=0x15;
 152   1              a[2]=0x18;
 153   1              a[3]=0x18;
 154   1              a[4]=0x0E;
 155   1      }
 156          
 157          
 158          
 159           bit   BCAN_CREATE_COMMUNATION(void)
 160           {  
 161   1          SJA_BCANAdr=REG_TEST;                     //访问测试寄存器            
 162   1          
 163   1          *SJA_BCANAdr   =0xaa;                     //写入测试值
 164   1          if(*SJA_BCANAdr == 0xaa)
 165   1          {
 166   2              return    0;                          //读测试正确
 167   2          }
 168   1          else
 169   1          {    
 170   2             return    1;
 171   2          } 
 172   1       }      
 173          
 174          
 175           bit   BCAN_ENTER_RETMODEL(void)
 176           {
 177   1          unsigned   char   TempData;
 178   1          SJA_BCANAdr  = REG_CONTROL;                   //访问地址指向控制寄存器 
 179   1          TempData=  *SJA_BCANAdr;                      //保存原始值
C51 COMPILER V7.06   SELFTEST                                                              07/01/2003 16:02:57 PAGE 4   

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

⌨️ 快捷键说明

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