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

📄 main.lst

📁 一个用sja1000控制器的can源程序
💻 LST
字号:
C51 COMPILER V7.01  MAIN                                                                   05/06/2007 10:51:26 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\PROGRAM FILES\keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <AT89X51.H> 
   2          #include  "SJA_BCANCONF.h"
   3          #include  "SJA_BCANFUNC.c"
   4          #include <display_s.h>
   5          void Init_Cpu(void);
   6          void Init_T0(void);
   7          void Sja_1000_Init(void);
   8          void disp_ok(void);
   9          void disp_err(void);
  10          void Init_T0(void);
  11          
  12          bit flag_sec;
  13          unsigned char data a[5];
  14          unsigned char data send_data[10],rcv_data[10];
  15          unsigned char databuf,sec_data,second;
  16          unsigned char data Tmod_data;
  17          unsigned char bdata flag_init;
  18          sbit rcv_flag=flag_init^0;
  19          sbit err_flag=flag_init^2;
  20          unsigned char i;
  21          void main(void)
  22          {
  23   1        Sja_1000_Init();
  24   1        Init_T0();
  25   1        Init_Cpu();
  26   1        flag_init=0x00;
  27   1        while(1)
  28   1        {
  29   2          if(rcv_flag)
  30   2          {
  31   3            rcv_flag=0;             //有接收中断,单片机进行处理
  32   3                BCAN_DATA_RECEIVE(rcv_data);  //将数据从接受缓冲器读入到rcv_data中
  33   3                BCAN_CMD_PRG(0x04);     //发送命令,释放接受缓冲器
  34   3                disp_ok();
  35   3          }
  36   2          if(flag_sec)
  37   2          {
  38   3            flag_sec=0;
  39   3                send_data[0]=0xaa;
  40   3                send_data[1]=0x08;
  41   3                //send_data[2]=second;
  42   3                for(i=2;i<10;i++)
  43   3                      send_data[i]=0xff;
  44   3                BCAN_DATA_WRITE(send_data);  //将数据写入发送缓冲器中
  45   3                BCAN_CMD_PRG(0x01);         //命令,发送请求
  46   3          }
  47   2          if(err_flag)
  48   2          {
  49   3            err_flag=0;
  50   3                disp_err();
  51   3                Sja_1000_Init();
  52   3          }
  53   2          display(a);
  54   2        }
  55   1      }
C51 COMPILER V7.01  MAIN                                                                   05/06/2007 10:51:26 PAGE 2   

  56          
  57          
  58          
  59          void ex0_int(void) interrupt 0 using 1
  60            {
  61   1          SJA_BCANAdr=REG_INTERRUPT;
  62   1              flag_init=*SJA_BCANAdr;   //将sja1000中断标志信号读入到 flag_init(bdata)
  63   1        }
  64          
  65          void T0_init(void) interrupt 1 using 2      
  66          {
  67   1        TR0=0;                                 //定时器溢出中断,置位flag_sec标志/second
  68   1        sec_data--;
  69   1        if(sec_data==0)
  70   1        {
  71   2          sec_data=0x10;
  72   2              TH0=0x80;
  73   2              TL0=0x60;
  74   2              flag_sec=1;
  75   2              second++;
  76   2        }
  77   1        TR0=1;
  78   1      }
  79          
  80          
  81          void Init_Cpu(void)
  82          {
  83   1        PX0=1;
  84   1        IT0=1;
  85   1        EX0=1;
  86   1        ET0=1;
  87   1        EA=1;
  88   1        sec_data=0x10;
  89   1      }
  90          
  91          
  92          void Init_T0(void)
  93          {
  94   1        Tmod_data=TMOD;
  95   1        Tmod_data&=0xf0;
  96   1        Tmod_data|=0x01;
  97   1        TMOD=Tmod_data;
  98   1        TH0=0x80;
  99   1        TL0=0x60;
 100   1        TR0=1;
 101   1        sec_data=0x20;
 102   1        second=0x00;
 103   1      }
 104          
 105          void Sja_1000_Init(void)
 106          {
 107   1        BCAN_ENTER_RETMODEL();
 108   1        BCAN_SET_BANDRATE(0x04);
 109   1        BCAN_SET_OBJECT(0xaa,0x00);
 110   1        BCAN_SET_OUTCLK(0xaa,0x48);
 111   1        BCAN_QUIT_RETMODEL();
 112   1        SJA_BCANAdr=REG_CONTROL;                  //使能所有中断
 113   1        *SJA_BCANAdr|=0x1e;
 114   1      }
 115          
 116          void disp_ok(void)
 117          {
C51 COMPILER V7.01  MAIN                                                                   05/06/2007 10:51:26 PAGE 3   

 118   1        a[0]=0x00;
 119   1        a[1]=0x11;
 120   1        a[2]=0x10;
 121   1        databuf=rcv_data[2];
 122   1        databuf>>=0x04;
 123   1        a[3]=databuf;
 124   1        databuf=rcv_data[2];
 125   1        databuf=databuf&0x0f;
 126   1        a[4]=databuf;
 127   1      }
 128          
 129          
 130          
 131          void disp_err(void)
 132          {
 133   1        a[0]=0x00;
 134   1        a[1]=0x0e;
 135   1        a[2]=0x10;
 136   1        a[3]=0x0f;
 137   1        a[4]=0x0e;
 138   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    854    ----
   CONSTANT SIZE    =     58    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     34       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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