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

📄 spotwelder.lst

📁 点焊机控制器C51源码+SCH & DDB
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   SPOTWELDER                                                            11/07/2005 02:10:44 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SPOTWELDER
OBJECT MODULE PLACED IN SpotWelder.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SpotWelder.c ROM(COMPACT) BROWSE DEFINE(c51) DEBUG OBJECTEXTEND

line level    source

   1          /* 
   2          李先的红姆点焊机  
   3          
   4          ailing于温州华侨机械--2005.10
   5          */
   6          
   7          #include<intrins.h>
   8          #include"keyscan.h"
   9          #include"at24cxx.h"
  10          #ifdef __C51__
  11            #include<regx51.h>
  12          #endif
  13          #ifdef __C52__
                #include<regs52.h>
              #endif
  16          
  17          #define nop() _nop_()
  18          #define uchar unsigned char
  19          #define uint  unsigned int
  20          
  21          #define Prrz  11
  22          #define Weld  22
  23          #define PrrzL 33
  24          #define Space 44
  25          #define check 55
  26          #define Emergency 66
  27          
  28          #define AUTO  1
  29          #define MAN   0
  30          
  31          
  32          //led driver bit
  33          sbit bPrrz_led   = P3^5;
  34          sbit bWeld_led   = P3^6;
  35          sbit bFshCnt_led  = P3^7;
  36          sbit bPrrzL_led  = P3^0;
  37          sbit bSpace_led  = P1^7;
  38          sbit bSet_led    = P3^1;
  39          sbit bMode_led   = P3^4;
  40          //relay drive bit
  41          sbit bPrrz_RlyDr = P2^6;
  42          sbit bWeld_RlyDr = P2^5;
  43          sbit bPrrzL_RlyDr= P2^4;
  44          sbit bFshCnt_RlyDr= P2^2;
  45          sbit bSpace_RlyDr= P2^3;
  46          
  47          sbit bStartup =P3^2;
  48          
  49          /*按键设置是为:百位+=100,十位+=10,个位+=1 */
  50          unsigned int PrrzTime;
  51          unsigned int WeldTime;
  52          unsigned int WorkCount;
  53          unsigned int PrrzLTime;
  54          unsigned int SpaceTime;
  55          
C51 COMPILER V7.50   SPOTWELDER                                                            11/07/2005 02:10:44 PAGE 2   

  56          unsigned char Work;
  57          unsigned char Tent;
  58          unsigned char data trnscv[11]={0,0,0,0,0,0,0,0,0,0};
  59          unsigned char DisData[15];
  60          unsigned char WorkMode;
  61           
  62          bit bcheck;
  63          
  64          
  65          void SendByte(unsigned char Data);
  66          unsigned char RcvByte();
  67          bit ISendByte(uchar SLA,uchar Data);
  68          bit ISendStr(uchar sla,uchar Suba,uchar *s,uchar Num);
  69          bit IRcvByte(uchar sla,uchar *rcv);
  70          bit IRcvStr(uchar SLA,uchar Suba,uchar *rcv,uchar Num);
  71          
  72          /******************************  keyscan() **********************************
  73           
  74           放在 5ms 中断里运行
  75           RUN=p3.2; shift=p3.4; FUNCtion=p3.5; add=p3.7 共 4 个独立式按键;
  76           p3.3 为合盖的行程开关不能作为一个独立按键,否则合盖后p3.3==0将屏蔽掉所有的按键。
  77          *****************************************************************************/
  78          
  79          void keyscan(void)
  80          {
  81   1        uchar KCodeCrrt;
  82   1        static uchar DBCount;
  83   1        static uchar DownCT;
  84   1      
  85   1        KCodeCrrt=0x7c&P1;  // &01111100b
  86   1        if(KCodeCrrt==0x7c)
  87   1         {
  88   2                if(DBCount==0)
  89   2                 {
  90   3                      if(KeyState==DOWN)
  91   3                       {
  92   4                      KeyState=BeFree;
  93   4                              bExecute=DONT;
  94   4                              DownCT=0;                 //按键持续按下的计时清零
  95   4                       }      
  96   3                 }
  97   2                else 
  98   2                  DBCount--;
  99   2         }
 100   1        else
 101   1         {
 102   2          if(DBCount==1) 
 103   2               {
 104   3                 if(bExecute==DONT)
 105   3                  {
 106   4                        bExecute=DONE;
 107   4                        KeyCode=~(KCodeCrrt|0x83);
 108   4                      }
 109   3                 else if(DownCT>SetupOverCode)
 110   3                  {
 111   4                        DownCT=SetupOverCode;
 112   4                        if(KeyKind==Continued)
 113   4                          KeyCode=KCodeCrrt;
 114   4                      }
 115   3                 KeyState=DOWN;
 116   3                 DownCT++;
 117   3               }
C51 COMPILER V7.50   SPOTWELDER                                                            11/07/2005 02:10:44 PAGE 3   

 118   2          else if(DBCount<1)     //消抖
 119   2                DBCount++;    
 120   2         }
 121   1      }
 122          /******************************************************************************
 123                                                      键盘处理程序
 124          ******************************************************************************/
 125          #define RUN    11
 126          #define FUNC   22
 127          #define runing 1
 128          #define stop   0
 129          unsigned int prrz_buf;
 130          unsigned char Program;
 131          unsigned char position;
 132          
 133          bit flag_func; //作为进入功能设置的标志
 134          bit flag_run;  //作为向24C01 发送数据的标志
 135          bit current_state;
 136          
 137          void DispData_Dispose(void);
 138          void Write_24Cxx(void);
 139          /******************************/
 140          uint DEC_DSP(uchar digital, uint minuend)
 141          {
 142   1        if(digital==100)
 143   1         {
 144   2           if(minuend<100)
 145   2                 minuend+=900;
 146   2               else
 147   2                 minuend-=100;
 148   2         }
 149   1        else if(digital==10)
 150   1         {
 151   2           if((minuend%100)<10)
 152   2                 minuend+=90;
 153   2               else
 154   2                 minuend-=10;
 155   2         } 
 156   1        else if(digital==1)
 157   1         {
 158   2           if((minuend%10)<1)
 159   2                 minuend+=9;
 160   2               else
 161   2                 minuend-=1;
 162   2         }
 163   1       return(minuend);
 164   1      }
 165          
 166          
 167          /******************************/
 168          void Key_Server(void)
 169          {
 170   1        uchar i;
 171   1       
 172   1        switch(KeyCode)
 173   1        {
 174   2          case 0x04:             //work mode
 175   2                         DeleteKeyCode();
 176   2                         if(bcheck){bcheck=0;break;}
 177   2                         if(Program==FUNC)
 178   2                          {
 179   3                            if(WorkMode==MAN)
C51 COMPILER V7.50   SPOTWELDER                                                            11/07/2005 02:10:44 PAGE 4   

 180   3                             { 
 181   4                                   bMode_led=0;
 182   4                                   WorkMode=AUTO;
 183   4                                 }
 184   3                            else 
 185   3                             {
 186   4                                   bMode_led=1;
 187   4                               WorkMode=MAN;
 188   4                                 }
 189   3                            do{i=ISendStr(AT24WC01,10,&WorkMode,1);
 190   4                                  }while(!i);
 191   3                              }
 192   2                     break;
 193   2          case 0x08:             //dec
 194   2                     DeleteKeyCode();
 195   2                         if(bcheck){bcheck=0;break;}
 196   2                         if(Program==FUNC)
 197   2                         {
 198   3                           if(position==0)
 199   3                                 PrrzTime=DEC_DSP(100,PrrzTime);
 200   3                               else if(position==1)
 201   3                     PrrzTime=DEC_DSP(10,PrrzTime);
 202   3                               else if(position==2)
 203   3                     PrrzTime=DEC_DSP(1,PrrzTime);
 204   3                               else if(position==3)
 205   3                                 WeldTime=DEC_DSP(100,WeldTime);
 206   3                               else if(position==4)
 207   3                     WeldTime=DEC_DSP(10,WeldTime);
 208   3                               else if(position==5)
 209   3                                 WeldTime=DEC_DSP(1,WeldTime);
 210   3                               else if(position==6)
 211   3                                 WorkCount=DEC_DSP(100,WorkCount);
 212   3                               else if(position==7)
 213   3                                 WorkCount=DEC_DSP(10,WorkCount);
 214   3                               else if(position==8)
 215   3                                 WorkCount=DEC_DSP(1,WorkCount);
 216   3                               else if(position==9)
 217   3                                 PrrzLTime=DEC_DSP(100,PrrzLTime);
 218   3                               else if(position==10)
 219   3                                 PrrzLTime=DEC_DSP(10,PrrzLTime);
 220   3                               else if(position==11)
 221   3                                 PrrzLTime=DEC_DSP(1,PrrzLTime);

⌨️ 快捷键说明

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