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

📄 updata1.lst

📁 C51写的华邦8位单片机ISP程序,请配合本人用VB写的PC端ISP程序W78E516UpdataOfVB使用
💻 LST
字号:
C51 COMPILER V7.07   UPDATA1                                                               07/13/2007 21:24:24 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE UPDATA1
OBJECT MODULE PLACED IN D:\HEX\UPDATA1.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UPDATA1.C BROWSE DEBUG OBJECTEXTEND OBJECT(D:\HEX\UPDATA1.obj)

stmt level    source

   1          
   2          
   3          #include <REGW78E58B.H>
   4          #include <absacc.h>
   5          #include <intrins.h>
   6          #define uchar unsigned char
   7          #define uint  unsigned int
   8          #define ulong unsigned long
   9          #define     WaitTI              while(TI==0);TI=0     /*  等待串行口发送中断   */
  10          #define     WaitRI              while(RI==0);RI=0     /*  等待串行口接收中断   */
  11          
  12          #define         True             1      
  13          #define         False            0
  14          
  15           
  16          
  17          sbit   P1_0=P1^0;
  18          sbit   P1_1=P1^1;
  19          sbit   P1_2=P1^2;
  20          sbit   P1_3=P1^3;
  21          sbit   P1_4=P1^4;
  22          sbit   P1_5=P1^5;
  23          sbit   P1_6=P1^6;
  24          sbit   P1_7=P1^7;
  25          
  26          sbit   P2_0=P2^0;
  27          sbit   P2_1=P2^1;
  28          sbit   P2_2=P2^2;
  29          sbit   P2_3=P2^3;
  30          sbit   P2_4=P2^4;
  31          sbit   P2_5=P2^5;
  32          sbit   P2_6=P2^6;
  33          sbit   P2_7=P2^7;
  34          
  35          sbit   P3_0=P3^0;
  36          sbit   P3_1=P3^1;
  37          sbit   P3_2=P3^2;
  38          sbit   P3_3=P3^3;
  39          sbit   P3_4=P3^4;
  40          sbit   P3_5=P3^5;
  41          sbit   P3_6=P3^6;
  42          sbit   P3_7=P3^7;
  43          
  44          sbit   P4_0=P4^0;
  45          sbit   P4_1=P4^1;
  46          sbit   P4_2=P4^2;
  47          sbit   P4_3=P4^3;
  48          
  49          #define  EraseCode   0xA0   //擦除命令命令字
  50          #define  BlankCode   0xA1   //全空检查命令命令字
  51          #define  ProgramCode 0xA2 //编程命令命令字
  52          #define  VerifyCode  0xA3 //检验命令命令字
  53          #define  EncryptCode 0XA4 //加密命令字
  54          #define  RestMcuCode 0xA5 //软件复位
  55          #define Head_Flag1   0x1B
C51 COMPILER V7.07   UPDATA1                                                               07/13/2007 21:24:24 PAGE 2   

  56          #define Head_Flag2   0x10
  57          
  58          //**************错误代码*******
  59          #define  BlankER    0x80
  60          
  61          
  62          
  63          //*****************************
  64          bit fini,SerialBit,BagHeadBit;
  65          uint crc16;
  66          uchar idata handle;
  67          uchar THH0,TLL0;                                                //定时时间变量
  68          typedef struct{
  69              uchar  OKHead[4];
  70              uchar  OKData[140];   
  71          }TxOKDataDef;
  72          typedef struct{
  73             uchar ReceiveHead[5];
  74             uchar ReceiveData[140];
  75          }ReceiveDataDef;
  76          typedef struct{
  77             uchar ProgramHead[5];
  78             uchar ProgramAdd[4];
  79             uchar ProgramData[140];
  80          }ProgramDataDef;
  81          
  82          union{
  83              uchar                       ComBuf[150];
  84              TxOKDataDef         OK;
  85              ReceiveDataDef      RXD;
  86                  ProgramDataDef  PR;
  87          }idata Un;
  88          void TIMER0_INTRRUPT(void);//  interrupt 1 using 1;
  89          void initialization(void);
  90           
  91          void RESET_MCU();                                               //软件复位MCU
  92          void PROGRAM_32K_LOOP();               //写MCU
  93          void ERASE_MCU();
  94          void BANK_CHECK_32K();                                                          //擦除MCU
  95          void protect_data();
  96          void verfiy_data();                                                                        //读数据
  97          uint cal_crc(unsigned char *ptr, unsigned char len);   //计算数据串的CRC值
  98          /**********************************************************************************/
  99          /* 从232接收一个数据,数据保存到UC0变量中 */
 100          uchar RcvDataBy232(void)
 101          {  
 102   1              uchar  Temp;
 103   1         uint Counter=0;              //清零计数指针
 104   1         do
 105   1         {
 106   2            Counter++;   
 107   2            if(Counter>0xFff)
 108   2            {             // 如果等待记时过长则退出     
 109   3               RI=0;      //清除接收中断标志
 110   3                   SerialBit=1;   // 设置接收数据超时标志  
 111   3               return(0xFF);    //退出接收
 112   3            }
 113   2          }while(RI==0);  //没有接收到数据继续等待
 114   1          Temp=SBUF;       //保存接收到的数据
 115   1          RI=0;               
 116   1              return(Temp);   //返回接收到的数据
 117   1      }
C51 COMPILER V7.07   UPDATA1                                                               07/13/2007 21:24:24 PAGE 3   

 118          /****************************************
 119           --------- 串口中断 ----------
 120           *****************************************/
 121          void ssio(void) interrupt 4 using 3
 122          {
 123   1          uchar data  Slen,uc0,j=0;
 124   1              ES=0;                              /*  关串行中断                 */
 125   1          BagHeadBit=0;              /*  接收命令包头出错标志位      */
 126   1              SerialBit=0;               /*  接收命令包时长度不够标志位  */
 127   1              uc0=RcvDataBy232();
 128   1              if(uc0!=Head_Flag1)        /*  命令头      0X1B               */ 
 129   1                                                                      //命令头不为0X1B,设置命令头错标志,等待该包数据发送完毕后退出
 130   1           { BagHeadBit=1; do{RcvDataBy232();}while(SerialBit==0); SerialBit=0; handle=0xff; goto reti;}      
 131   1              Un.RXD.ReceiveHead[0]=uc0; 
 132   1          uc0=RcvDataBy232();         //接收第二字节
 133   1                if(uc0!=Head_Flag2)   /*0X10*/
 134   1                                                                      //命令头第二个字节数据不是0X10,柚妹

⌨️ 快捷键说明

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