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

📄 main.lst

📁 电梯控制程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.20   MAIN                                                                  09/15/2005 21:50:42 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe MAIN.C DB OE SMALL ROM(LARGE)

line level    source

   1          /************************************************************************
   2           *   广州周立功单片机发展有限公司    http://www.zlgmcu.com              *
   3           ************************************************************************/
   4          /************************************************************************
   5           *                                                                      *
   6           *  SJA1000 BasicCAN模式的通讯测试                                                                              *
   7           *                                                                      *
   8           ************************************************************************/
   9          /************************************************************************
  10           *                                                                      *
  11           *  目的:       建立直观的BasicCAN测试平台                                                              *                                    
  12           *  文件名:             main.c                                                  *
  13           *                                                                      *
  14           *  模块名:             sjanetdemo                                              *
  15           *                                                                      *
  16           *  目标系统:   任何基于任何兼容8051指令的微处理器同SJA1000组成的CAN系统*
  17           *                                                                      *
  18           *  应用语言:   Keil C51                                                *
  19           *                                                                      *
  20           ************************************************************************
  21           *  版本 :V1.0                                                          *
  22           *                                                                      *
  23           ************************************************************************
  24           *  广州周立功单片机发展有限公司 保留所有的版权                         *
  25           ************************************************************************/
  26          
  27          #include <P8xc5x2.H>   
*** WARNING C318 IN LINE 27 OF MAIN.C: can't open file 'P8xc5x2.H'
  28          #include <intrins.h>
  29          
  30          //#include  "time_module.C"
  31          //#include  "sja_bcanFunc.C"
  32          //ji#include  "seriele.c"
  33          //ji#include  "keyled.c"
  34          #include  "SJA_BCANCONF.h"              //add by ji
  35          #include  "time_module.h"               //add by ji
  36          //数据类型定义
  37          #define   uchar  unsigned char                          
  38          #define   ulong  unsigned long
  39          #define   uint   unsigned int  
  40          
  41          
  42          //设置系统数据缓冲区
  43          static    uchar  data       SetSystemBuf[10];   //系统设置数据缓冲区    
  44          
  45          static    uchar  data       BandRateBuf;        //设置总线波特率值缓冲区  
  46          
  47          static    uchar  idata      EditMsSendCount;    //编辑自动发送的频率
  48          static    uchar  idata      EditMsSendSave;         //保存自动发送的频率
  49          
  50          static    uchar  idata      SendDataCount;          //发送数据显示
  51          
  52          static          uchar   idata   SendFrq;                        //自动发送的频率
  53          bit                     AutoSendFlag;
  54          static    bit   MoveFlag=0;            //移位计数   
C51 COMPILER V7.20   MAIN                                                                  09/15/2005 21:50:42 PAGE 2   

  55          
  56          unsigned        int             AutoSendFrameID;
  57          unsigned        int             TestSendData;
  58          
  59          //键盘操作函数
  60          extern void           Write_Xdata(unsigned      char value);    // 将info送入外部地址xadr中
  61          extern uchar      Read_Xdata(uint Xadr);                                //从外部地址xadr中读取数据
  62          extern void       Key_Scan(void);                                               //键盘扫描程序
  63          extern uchar      Key_Get(void);                                                //取键盘值
  64          extern void       PushKey(uchar keynum);                        //将键值送入按键处理队列
  65          extern uchar      PopKey(void);                                                 //
  66          
  67          void      Key_handle(void);                                             //处理键值
  68          
  69          void      FundationKey(void);                   //功能键
  70          void      MoveKey(void);                            //移位键
  71          void      SearchKey(void);                      //检索键
  72          void      EnterKey(void);                       //确认键
  73          void      IncKey(void);                         //增加键
  74          void      QuitKey(void);                        //退出键
  75          void      CanSendKey(void);                                             //发送键
  76          
  77          void      EnterNext(void);                      //按确认键后进入下一小项处理
  78          //led  送显
  79          //ji#define       LED_SelBit()   disp_pt++;if(disp_pt>4)disp_pt=0//位选        
  80          //jiextern    void      Show_LED(void);                                         //显示处理
  81          //jiextern    void      Write_DispBuf(uchar buf0,uchar buf1,uchar buf2,uchar buf3,uchar buf4);//写入显示缓
             -冲区
  82          //jiextern    uchar     GetLedData(void);                     //将显示的值换算
  83          //jiextern    void      Error_disp(uchar ErrByte);            //将错误字送显
  84          
  85          void      InitCPU(void);                        //初始化函数
  86          // 配置sja1000
  87          uchar  Config_SJA(void);                        //配置sja1000
  88          void   CanRcv_Prg(void);                                //can总线数据接收后处理
  89          void   CanSend_Prg(void);                                       //can发送数据
  90          void   CanErr_Prg(void);                            //发现错误后处理
  91          void   CanDtOver_Prg(void);                     //超载处理
  92          void   CanWui_Prg(void);                        //唤醒中断处理
  93          
  94          void   UartRcv_Prg(void);                                               //串口接收到数据处理
  95          
  96          //jivoid   DrecDisplay(uchar *databuf);                         //直通显示处理函数
  97          //jivoid   TestDispPrg(void);                       //测试处理函数
  98          //jivoid   ClearDispPrg(uchar *databuf);                        //消隐处理函数
  99          //jivoid   FlightDispPrg(uchar *databuf);                       //闪烁处理函数  
 100          //jivoid   LiftCrcDispPrg(uchar *databuf);          //左循环显示处理
 101          //jivoid   RightCrcDispPrg(uchar *databuf);         //右循环显示处理
 102          
 103          void   AutoSendDataToCanBus(void);                              //自动发送
 104          
 105          //提取波特率的对应值
 106          //jiunsigned    char    ValueToBandRate(void);
 107          
 108          
 109          // 外部中断0
 110          static   uchar  bdata    CanBusFlag=0;                  //can标志
 111          sbit     CanRcv_Good=CanBusFlag^0;                              //成功接收标志
 112          sbit     CanSend_Good=CanBusFlag^1;                             //成功发送标志
 113          sbit     CanErrFlag=CanBusFlag^2;                               //can总线错误标志
 114          sbit     CanDtOverFlag=CanBusFlag^3;                    //can总线超载标志
 115          sbit     CanWuiFlag=CanBusFlag^4;                               //can总线唤醒中断
C51 COMPILER V7.20   MAIN                                                                  09/15/2005 21:50:42 PAGE 3   

 116          
 117          /*-------------------------------------------------------------------------------------------
 118           外部中断0处理程序                     
 119           -------------------------------------------------------------------------------------------*/ 
 120          void  ex0_Val(void)  interrupt   0   using  1
 121          { 
 122   1        SJA_BCANAdr=REG_INTERRUPT;
 123   1        CanBusFlag=*SJA_BCANAdr;                                              //保存sja1000中断标志
 124   1      }
 125          
 126          /*-------------------------------------------------------------------------------------------
 127           main程序               
 128           -------------------------------------------------------------------------------------------*/ 
 129          
 130          void      main(void)
 131          {   
 132   1          uchar status;                                               //状态字 
 133   1              uchar   i;
 134   1      
 135   1              Delay_50us(100) ;                                               //50us*100=5ms
 136   1              status=Config_SJA();                                            //配置sja1000
 137   1              InitCPU();                                                              //初始化
 138   1              if(status!=0) 
 139   1                      for(;;);        //Error_disp(status);           //配置sja1000出现错误
 140   1      //ji    else
 141   1      //ji    { 
 142   1      //ji      Disp_Can();                                           //无措显示CAN1
 143   1      //ji      Exe_Scon(0xaa,0,0);
 144   1      //ji    }
 145   1      //ji    Write_Xdata(0x00);                                                                                      //设置并行方式
 146   1              TimeOut_Start(20);                                                      //20*50us=1ms,定时周期1ms
 147   1              while(1)
 148   1              {
 149   2                      if(_testbit_(T0IR))                                             //ms时间到
 150   2                      {
 151   3                        i++;
 152   3      //ji              LED_SelBit();                                                 //位选
 153   3      //ji              Key_Scan();
 154   3      //ji              Show_LED();
 155   3                        if(i>=SendFrq)
 156   3                        {
 157   4                              i=0;
 158   4                              AutoSendDataToCanBus();
 159   4                        }
 160   3                    TimeOut_Start(20);                                        //20*50us=1ms,定时周期1ms
 161   3                      }
 162   2              //      CanBusFlag=Read_Xdata(REG_INTERRUPT);                   //modify by ji
 163   2              if(_testbit_(CanRcv_Good))  
 164   2                      CanRcv_Prg();   //是接收中断标志
 165   2      //ji            if(_testbit_(CanSend_Good)) CanSend_Prg();      //是发送中断标志
 166   2      //ji        if(_testbit_(CanErrFlag))   CanErr_Prg();   //是错误中断标志
 167   2      //ji            if(_testbit_(CanDtOverFlag))CanDtOver_Prg();//是超载中断标志
 168   2      //ji            if(_testbit_(CanWuiFlag))   CanWui_Prg();       //是唤醒中断标志
 169   2      //ji            if(_testbit_(UartRcvGood))  UartRcv_Prg();      //串口接收成功标志
 170   2      
 171   2      //ji            Key_handle();                                                           //键盘队列处理
 172   2              }
 173   1      
 174   1      }
 175          
 176          
 177          /*-------------------------------------------------------------------------------------------
C51 COMPILER V7.20   MAIN                                                                  09/15/2005 21:50:42 PAGE 4   

 178           按键队列处理程序             
 179           -------------------------------------------------------------------------------------------*/ 
 180          /*ji
 181          void      Key_handle(void)
 182          {
 183                  uchar TempData; 
 184              TempData=PopKey();
 185                  switch(TempData)
 186              {
 187                    case  Key0:
 188                          SearchKey();
 189                                  break;
 190                    case  Key1:
 191                          IncKey();
 192                                  break;
 193                    case  Key2:
 194                                  break;
 195                    case  Key3:
 196                      QuitKey();
 197                                  break;
 198                case      Key4:
 199                          FundationKey();
 200                                  break;
 201                    case  Key5:
 202                          MoveKey();
 203                                  break;
 204                case      Key6:
 205                      EnterKey();
 206                                  break;
 207                    case  Key7:
 208                          CanSendKey();
 209                                  break;
 210          
 211                default:
 212                                  break;
 213                  }
 214          
 215          }
 216          
 217          
 218          
 219          //功能键处理
 220          bit       FunckeyFlag=0;                                      //进入功能标志  
 221          static    uchar     data FunckeyCount;            //功能选项计数
 222          void      FundationKey(void)
 223          {
 224                  uchar   i;
 225            ClearDispAttr();
 226            MoveFlag=0;
 227                  AutoSendFlag =0;
 228            if(FunckeyFlag)
 229            {
 230              if(++FunckeyCount>3)FunckeyCount=0;
 231                  switch(FunckeyCount)
 232                  {
 233                case  0:
 234                          FunckeyFlag=0;
 235                                  Disp_Can();                               //上电显示CAN1
 236                                  DispFlag=0x00;
 237                                  break;
 238                    case  1:
 239                                  if((ReadSjaReg(REG_CONTROL)&0x01)==0)

⌨️ 快捷键说明

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