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

📄 main.lst

📁 一个编程器的下位机固件
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.50   MAIN                                                                  06/11/2008 14:41:36 PAGE 1   


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

line level    source

   1          
   2          
   3          #include "cmddefine.h"
   4          #include "serial.h"
   5          #include <reg51.h>
   6          #include <stdio.h>
   7          #include <string.h>
   8          #include <intrins.h>
   9          
  10          
  11          
  12          #define nop()  _nop_()
  13          
  14          #define  _Nop()  {_nop_();_nop_();_nop_();} 
  15           
  16          
  17          
  18          ///////////////////////////////////////////////////////////////////////////
  19          void clock_vDelay(INT32U u32Time)
  20          {
  21   1         INT32U i;
  22   1         for(i=0; i<u32Time; i++);
  23   1      }
  24          
  25          /*
  26          ///////////////////////////////////////////////////////////////////////////////
  27          void lcd_char(INT8U a)  
  28          {
  29            // clock_vDelay(5);
  30             LCDRS = 1; 
  31            // clock_vDelay(5);
  32             LCDRW = 0;
  33             LCDPORT = a; 
  34             LCDEN = 1; 
  35             clock_vDelay(50);
  36             LCDEN = 0; 
  37          }
  38          
  39          ///////////////////////////////////////////////////////////////////////////////
  40          void lcd_comm(INT8U a) 
  41          { 
  42            // clock_vDelay(5);
  43             LCDRS = 0; 
  44           //  clock_vDelay(5);
  45             LCDRW = 0;
  46             LCDPORT = a; 
  47             LCDEN = 1; 
  48             clock_vDelay(50);
  49             LCDEN = 0; 
  50          }
  51          
  52          
  53          ///////////////////////////////////////////////////////////////////////////////
  54          void lcd_ini(void)
  55          {
C51 COMPILER V7.50   MAIN                                                                  06/11/2008 14:41:36 PAGE 2   

  56             lcd_comm(0x38);
  57             lcd_comm(0x04);
  58             lcd_comm(0x0c);
  59             lcd_comm(0x01);
  60             lcd_comm(0x02);
  61          }
  62          
  63          
  64          ///////////////////////////////////////////////////////////////////////////////
  65          void lcd_print_string(uchar pos, char *ptr, ...)
  66          {
  67             INT8U i = 0;
  68            // clock_vDelay(50);
  69             lcd_comm(pos | 0x80);
  70          
  71             while( (*ptr != '\0') && (i < 16) )
  72             {    
  73               //clock_vDelay(5);
  74                lcd_char(*ptr ++);
  75                i++;
  76             }
  77             *ptr = 0;
  78          }
  79          */
  80          
  81          
  82          
  83          /////////////////////////////////////////////////////           
  84          void SendPackHead()
  85          {
  86   1          uchar code PackHead[7] = "$SEMICO";
  87   1          uchar i;
  88   1              for(i=0; i<7; i++)
  89   1              {
  90   2                 SBUF = PackHead[i];
  91   2                 TI = 0;
  92   2                 while(!TI);
  93   2               //  serial_putch(PackHead[i]);
  94   2              }
  95   1      }
  96          
  97          
  98          void SendPackEnd()
  99          {
 100   1              uchar code PackEnd[4] =  "END*";
 101   1          uchar i;
 102   1              for(i=0; i<4; i++)
 103   1              {         
 104   2             SBUF = PackEnd[i];
 105   2                 TI = 0;
 106   2                 while(!TI);
 107   2                // serial_putch(PackEnd[i]);
 108   2              }
 109   1      }
 110          
 111          
 112          void SendString(uchar *p, unsigned int length)
 113          {
 114   1         unsigned int i;
 115   1         for(i=0; i<length; i++)
 116   1         {
 117   2             SBUF = p[i];
C51 COMPILER V7.50   MAIN                                                                  06/11/2008 14:41:36 PAGE 3   

 118   2                 TI = 0;
 119   2                 while(!TI);
 120   2            //serial_putch(p[i]);
 121   2         }
 122   1      }
 123          
 124          
 125          
 126          /////////////////////////////////////////////////////////////
 127          void SendPackage(uchar PackType, uchar PackLen, uchar* Pack)
 128          {
 129   1              SendPackHead();
 130   1              serial_putch(0x00);
 131   1              serial_putch(PackType);  //package type
 132   1              serial_putch(0x00);
 133   1              serial_putch(PackLen);    //package length
 134   1              SendString(Pack, PackLen);  //readcounter + 2addr
 135   1              SendPackEnd();   
 136   1      }
 137          
 138          
 139          
 140          ////////////////////////////////////////////////////////////
 141          unsigned int Mult(uchar High, uchar Low)
 142          {
 143   1         uint value;
 144   1         value = High;
 145   1         value <<= 8;
 146   1         value += Low;
 147   1         return (value);
 148   1      }
 149          
 150          
 151          //////////////////////////////////////////////////
 152          void ProgModeCancle()
 153          {   
 154   1        PGDCLR();
 155   1        PGCCLR(); 
 156   1        PW12V_OFF();
 157   1        PW5V_OFF(); 
 158   1      }
 159          
 160          
 161          //////////////////////////////////////////////////
 162          void ProgModeSet()
 163          {
 164   1        PW12V_ON();
 165   1        clock_vDelay(10);
 166   1        PW5V_ON();
 167   1      }
 168          
 169          
 170          //////////////////////////////////////////////////
 171          void ProgCommandSet(uchar cmd)
 172          {
 173   1         uchar i;
 174   1         for(i=0; i<6; i++)
 175   1         {
 176   2            PGCSET();   //clk = 1
 177   2       //  nop();
 178   2      //   nop();
 179   2      //   nop();
C51 COMPILER V7.50   MAIN                                                                  06/11/2008 14:41:36 PAGE 4   

 180   2            if(cmd & 0x01)
 181   2                {
 182   3                   PGDSET();  //dat = 1
 183   3                }
 184   2                else
 185   2                {
 186   3                   PGDCLR();  //dat = 0
 187   3                }
 188   2                cmd >>= 1;
 189   2            PGCCLR();   //clk = 0
 190   2         }
 191   1      }
 192          
 193          
 194          //////////////////////////////////////////////////////////////
 195          void ProgIncAddr(void)
 196          {
 197   1         ProgCommandSet(PICCMD_INCADDR);
 198   1      }
 199          
 200          
 201          
 202          //////////////////////////////////////////////////////////////
 203          uint ProgReadCode(void)
 204          {   
 205   1         uchar i;
 206   1         uint  b;
 207   1         uint codedata = 0;
 208   1      
 209   1         ProgCommandSet(PICCMD_READCODE);   //send command
 210   1         clock_vDelay(1);                   //delay
 211   1      
 212   1         ////////////first clock////////////////////////
 213   1         PGCSET();   //clk = 1
 214   1         nop();
 215   1         nop();
 216   1         nop();
 217   1         PGCCLR();   //clk = 0    
 218   1      
 219   1         for(i=0; i<14; i++)
 220   1         {      
 221   2            PGCSET();   //clk = 1
 222   2                b = PGDREAD();
 223   2                b <<= i;
 224   2            codedata += b;
 225   2            PGCCLR();   //clk = 0  
 226   2         }
 227   1         
 228   1         ////////////last clock////////////////////////
 229   1         PGCSET();   //clk = 1
 230   1         nop();
 231   1         nop();
 232   1         nop();
 233   1         PGCCLR();   //clk = 0    
 234   1         return codedata;
 235   1      }
 236          
 237          ///////////////////////////////////////////////////////
 238          uchar ProgReadEEP(void)
 239          {
 240   1         uchar i;
 241   1         uchar  b;
C51 COMPILER V7.50   MAIN                                                                  06/11/2008 14:41:36 PAGE 5   

 242   1         uchar codedata = 0;
 243   1      
 244   1         ProgCommandSet(PICCMD_READEEP);   //send command
 245   1         clock_vDelay(5);                   //delay
 246   1      
 247   1         ////////////first clock////////////////////////
 248   1         PGCSET();   //clk = 1
 249   1         nop();
 250   1         nop();
 251   1         nop();
 252   1         PGCCLR();   //clk = 0    
 253   1      
 254   1         for(i=0; i<8; i++)
 255   1         {      
 256   2            PGCSET();   //clk = 1
 257   2      //   nop();
 258   2      //   nop();
 259   2      //   nop();
 260   2                b = PGDREAD();
 261   2                b <<= i;
 262   2            codedata += b;
 263   2            PGCCLR();   //clk = 0  

⌨️ 快捷键说明

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