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

📄 main.lst

📁 can sja1000 从节点 已经通过调试
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  12/24/2007 11:05:46 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          
   3          /*================================================================================*=
   4           *文 件 名:main.c
   5           *描    述:CAN网络中的从节点程序,包括时钟同步信息接收函数,握手函数,
   6                                  利用定时计数器T0中断,进行同步计数,中断信号来自主节点。
   7                                  每一次程序接收到主节点的同步信息时,中断一次,当中断次数到时,
   8                                  执行节点功能函数。
   9           *节点任务:点亮和熄灭LED灯
  10          =*================================================================================*/
  11          #include "reg52.h"
  12          #include "can.h"
  13          
  14          
  15          #define  MainID   (0xaa)
  16          #define  MyID     (0xbb)
  17          #define  SID2     (0xcc)
  18          #define  SID3     (0xdd)
  19          #define  SID4     (0xee)
  20          #define  TimeOut  (50)                  //同步节拍
  21          
  22          sbit LED = P1^0;
  23                                                                          //JA1000 发送缓存区
  24          tByte SendData[8] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
  25          tByte RecvData[11];
  26          
  27          
  28          void Sys_Iint();
  29          void SendAsk(tByte const ID);
  30          void GetMes(void);
  31          void MyTask();
  32          
  33          static unsigned char TimeTickCom;
  34          static bit RecvTickTask;
  35          static bit SendAskTask;
  36          static bit SendMesTask;
  37          
  38          void main()
  39          {
  40   1       
  41   1              SJAInit(MyID);                                  //SJA初始化
  42   1              Sys_Iint();                                             //系统初始化
  43   1              while(1)
  44   1              {
  45   2                      if(RecvTickTask)
  46   2                      {
  47   3                              GetMes();
  48   3                              SendAsk(MyID);          //发送握手信号为我的ID
  49   3                              TF0 = 1;                        //T0中断,处理时钟同步
  50   3                      }
  51   2                      if(SendMesTask)
  52   2                      {
  53   3                              SendMesTask = 0;                //清除任务,保证不占用总线
  54   3                              TimeTickCom = 0;                //清空同步计数器
  55   3                              MyTask();                               //节点功能
C51 COMPILER V7.06   MAIN                                                                  12/24/2007 11:05:46 PAGE 2   

  56   3                              RecvTickTask = 1;               //本节点任务完成,准备接受下一个同步信息
  57   3                      }               
  58   2              }       
  59   1      }
  60          
  61          void Sys_Iint()
  62          {
  63   1              ET0  = 1;
  64   1              EA   = 1;
  65   1              RecvTickTask = 1;                               //多任务时用
  66   1      }
  67          
  68          void T0_ISR() interrupt 1 using 1
  69          {
  70   1              if((TimeTickCom++) == TimeOut)  
  71   1              {
  72   2                      SendMesTask = 1;                        //同步时间到,发送数据
  73   2                      RecvTickTask = 1;                       //停止接受同步信息
  74   2                      TF0 = 0;                                        //清除中断标志位        
  75   2              }
  76   1      }
  77          
  78          void SendAsk(tByte const ID)                            //发送握手信号
  79          {
  80   1              SendData[0] = ID;
  81   1              SJASendData(SendData,8,MainID,0xff,0x08);
  82   1      }
  83          
  84          void GetMes(void)
  85          {
  86   1              while(SJARecvData(RecvData,4)); 
  87   1      }
  88          
  89          void MyTask()
  90          {
  91   1              LED = !LED;     
  92   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    115    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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