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

📄 ep5x.lst

📁 制作编程器Easy 51串行编程器源程序C
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.01  EP5X                                                                   03/09/2008 14:31:20 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE EP5X
OBJECT MODULE PLACED IN EP5X.OBJ
COMPILER INVOKED BY: D:\c51\C51\BIN\C51.EXE EP5X.c BROWSE DEBUG OBJECTEXTEND TABS(10)

stmt level    source

   1          //////////////////////////////////////////////////////////////////////////////////////////////////
   2          //E51Pro.c
   3          //Easy 51Pro编程器主程序,负责通讯,管理编程操作
   4          ///////////////////////////////////////////////////////////////////////////////////////////////////
   5          
   6          #include <E51Pro.h>
   7          
   8          BYTE ComBuf[18];//串口通讯数据缓存,发送和接收都使用
   9          UINT nAddress;//ROM中地址计数
  10          UINT nTimeOut;//超时计数
  11          ProWork pw;//编程器一般操作
  12          
  13          void Delay_us(BYTE nUs)//微秒级延时<255us
  14          {
  15   1                TH0=0;
  16   1                TL0=0;
  17   1                TR0=1;
  18   1                while(TL0<nUs)//利用T0做定时计数器,循环采样,直到达到定时值
  19   1                {
  20   2                }
  21   1                TR0=0;
  22   1      }
  23          
  24          void Delay_ms(UINT nMs)//豪秒级的延时<65535ms
  25          {
  26   1                UINT n=0;
  27   1                TR0=1;
  28   1                while(n<nMs)////利用T0做定时计数器,循环采样,直到达到定时值
  29   1                {
  30   2                          TH0=0;
  31   2                          TL0=20;
  32   2                          while(TH0<4)
  33   2                          {
  34   3                          }
  35   2                          n++;
  36   2                }
  37   1                TR0=0;
  38   1      }
  39           
  40          BOOL WaitComm()//等待上位机的命令,18字节
  41          {
  42   1                BYTE n=0;
  43   1                RI=0;
  44   1                while(!RI){}//等待第一个字节
  45   1                ComBuf[n]=SBUF;
  46   1                RI=0;
  47   1                n++;
  48   1                for(n;n<=17;n++)
  49   1                {
  50   2                          nTimeOut=0;
  51   2                          while(!RI)
  52   2                          {
  53   3                                    nTimeOut++;
  54   3                                    if(nTimeOut>10000)//后17个字节都有超时限制 
  55   3                                              return 0;
C51 COMPILER V7.01  EP5X                                                                   03/09/2008 14:31:20 PAGE 2   

  56   3                          }
  57   2                          ComBuf[n]=SBUF;
  58   2                          RI=0;
  59   2                }
  60   1                return 1;
  61   1      }
  62          
  63          BOOL WaitResp()//等待上位机回应,1字节,有超时限制 
  64          {
  65   1                nTimeOut=0;
  66   1                RI=0;
  67   1                while(!RI)
  68   1                {
  69   2                          nTimeOut++;
  70   2                          if(nTimeOut>50000) 
  71   2                          {
  72   3                                    return 0;
  73   3                          }
  74   2                }
  75   1                RI=0;
  76   1                ComBuf[0]=SBUF;
  77   1                return 1;
  78   1      }
  79          
  80          BOOL WaitData()//写器件时等待上位机数据,18字节,有超时限制 
  81          {
  82   1                BYTE n;
  83   1                RI=0;
  84   1                for(n=0;n<=17;n++)
  85   1                {
  86   2                          nTimeOut=0;
  87   2                          while(!RI)
  88   2                          {
  89   3                                    nTimeOut++;
  90   3                                    if(nTimeOut>10000)
  91   3                                    {
  92   4                                              return 0;
  93   4                                    }
  94   3                          }
  95   2                          RI=0;
  96   2                          ComBuf[n]=SBUF;
  97   2                }
  98   1                return 1;
  99   1      }
 100          
 101          void SendData()//发送数据或回应操作完成,18字节
 102          {
 103   1                BYTE n=0;
 104   1                for(n;n<=17;n++)
 105   1                {
 106   2                          TI=0;
 107   2                          SBUF=ComBuf[n];
 108   2                          while(!TI){}
 109   2                          TI=0;
 110   2                }
 111   1      }
 112          
 113          void SendResp()//回应上位机1个字节,在写器件函数中使用
 114          {
 115   1                TI=0;
 116   1                SBUF=ComBuf[0];
 117   1                while(!TI){}
C51 COMPILER V7.01  EP5X                                                                   03/09/2008 14:31:20 PAGE 3   

 118   1                TI=0;
 119   1      }
 120          
 121          void SetVpp5V()//设置Vpp为5v
 122          {
 123   1                P3_4=0;
 124   1                P3_3=0;
 125   1      }
 126          
 127          void SetVpp0V()//设置Vpp为0v
 128          {
 129   1                P3_3=0;
 130   1                P3_4=1;
 131   1      }
 132          
 133          void SetVpp12V()//设置Vpp为12v
 134          {
 135   1                P3_4=0;
 136   1                P3_3=1;
 137   1      }
 138          
 139          void RstPro()//编程器复位
 140          {
 141   1                pw.fpProOver();//直接编程结束
 142   1                SendData();//通知上位机,表示编程器就绪,可以直接用此函数因为协议号(ComBuf[0])还没被修改,下同
 143   1      }
 144          
 145          void ReadSign()//读特征字
 146          {
 147   1                pw.fpReadSign();
 148   1                SendData();//通知上位机,送出读出器件特征字
 149   1      }
 150          
 151          void Erase()//擦除器件
 152          {
 153   1                pw.fpErase();
 154   1                SendData();//通知上位机,擦除了器件
 155   1      }
 156          
 157          void Write()//写器件
 158          {
 159   1                BYTE n;
 160   1                pw.fpInitPro();//编程前的准备工作
 161   1                SendData();//回应上位机表示进入写器件状态,可以发来数据
 162   1                while(1)
 163   1                {
 164   2                          if(WaitData())//如果等待数据成功
 165   2                          {

⌨️ 快捷键说明

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