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

📄 dataflash.lst

📁 KEIL C上的门禁控制器源代码
💻 LST
字号:
C51 COMPILER V7.07   DATAFLASH                                                             09/14/2005 15:20:46 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE DATAFLASH
OBJECT MODULE PLACED IN Dataflash.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Dataflash.c LARGE OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "Global.h"
   2          
   3          // 全局变量定义
   4          extern struct  Para
   5          {
   6                  uchar Wiegand_format;                   // 1、韦根通信1 个字节,3 种选择,1~4
   7                  uchar Machine_addr;                             // 2、终端编号1 个字节,1~254
   8                  uchar Area_addr;                                // 3、终端区域编号1 个字节,1~240
   9                  uchar Secu_class;                               // 4、安全等级1 个字节,1~10
  10                  uchar Match_mode;                               // 5、匹配模式1 个字节,1~2
  11                  uchar Lock_para;                                // 6、锁控参数1 个字节,1~3
  12                  uchar Baudrate;                                 // 7、串口速率1 个字节,1~6
  13          };
  14          
  15          extern union Para_u
  16          {
  17                  uchar para_dat[7];
  18                  struct Para Actual_para;
  19          }Para_ee;                                                       // 控制器参数
  20          
  21          
  22          ///////////////////////////////////////////////////////////////////////////////
  23          // 开启DATAFLASH
  24          ///////////////////////////////////////////////////////////////////////////////
  25          void ISP_IAP_enable(void)
  26          {
  27   1              EA      =       0;      /* 关中断 */
  28   1              ISP_CONTR       =       ISP_CONTR & 0x18;       /* 0001,1000 */
  29   1              ISP_CONTR       =       ISP_CONTR | WAIT_TIME;
  30   1              ISP_CONTR       =       ISP_CONTR | 0x80;       /* 1000,0000 */
  31   1      }
  32          
  33          ///////////////////////////////////////////////////////////////////////////////
  34          // 关闭DATAFLASH
  35          ///////////////////////////////////////////////////////////////////////////////
  36          void ISP_IAP_disable(void)
  37          {
  38   1              ISP_CONTR       =       ISP_CONTR & 0x7f;       /* 0111,1111 */
  39   1              ISP_TRIG        =       0x00;
  40   1              EA                      =   1;                  /* 开中断 */
  41   1      }
  42          
  43          ///////////////////////////////////////////////////////////////////////////////
  44          // 从DATAFLASH读一个字节
  45          ///////////////////////////////////////////////////////////////////////////////
  46          uchar byte_read(uint byte_addr)
  47          {
  48   1              ISP_ADDRH=(uchar)(byte_addr>>8);                // 地址高字节
  49   1              ISP_ADDRL=(uchar)(byte_addr&0x00ff);    // 地址低字节
  50   1      
  51   1              ISP_CMD=ISP_CMD&0xf8;                                   // 1111,1000
  52   1              ISP_CMD=ISP_CMD|READ_AP_and_Data_Memory_Command;        // 0000,0001
  53   1      
  54   1              ISP_IAP_enable();               // 允许ISP
  55   1      
C51 COMPILER V7.07   DATAFLASH                                                             09/14/2005 15:20:46 PAGE 2   

  56   1              ISP_TRIG=0x46;
  57   1              ISP_TRIG=0xb9;
  58   1              _nop_();
  59   1      
  60   1              ISP_IAP_disable();              // 不允许ISP
  61   1      
  62   1              return (ISP_DATA);
  63   1      }
  64          
  65          ///////////////////////////////////////////////////////////////////////////////
  66          // 擦除DATAFLASH的一个扇区
  67          ///////////////////////////////////////////////////////////////////////////////
  68          uchar sector_erase(uint sector_addr)
  69          {
  70   1              uint get_sector_addr=0;
  71   1      
  72   1              get_sector_addr=(sector_addr&0xfe00);   // 1111,1110,0000,0000; 取扇区地址
  73   1              ISP_ADDRH=(uchar)(get_sector_addr>>8);
  74   1              ISP_ADDRL=0x00;
  75   1      
  76   1              ISP_CMD=ISP_CMD&0xf8;                   // 1111,1000
  77   1              ISP_CMD=ISP_CMD|SECTOR_ERASE_AP_and_Data_Memory_Command;        // 0000,0011
  78   1      
  79   1              ISP_IAP_enable();
  80   1      
  81   1              ISP_TRIG=0x46;                  // 触发ISP_IAP命令
  82   1              ISP_TRIG=0xb9;                  // 触发ISP_IAP命令
  83   1               _nop_();
  84   1      
  85   1              ISP_IAP_disable();
  86   1      
  87   1              return OK;
  88   1      }
  89          
  90          ///////////////////////////////////////////////////////////////////////////////
  91          // 向DATAFLASH写一个字节
  92          ///////////////////////////////////////////////////////////////////////////////
  93          uchar byte_write(uint byte_addr, uchar original_data)
  94          {
  95   1              ISP_ADDRH=(uchar)(byte_addr>>8);                // 地址高字节
  96   1              ISP_ADDRL=(uchar)(byte_addr&0x00ff);    // 地址低字节
  97   1      
  98   1              ISP_CMD=ISP_CMD&0xf8;                                   // 1111,1000
  99   1              ISP_CMD=ISP_CMD|PROGRAM_AP_and_Data_Memory_Command;     // 0000,0010
 100   1              ISP_DATA=original_data;
 101   1      
 102   1              ISP_IAP_enable();
 103   1      
 104   1              ISP_TRIG=0x46;
 105   1              ISP_TRIG=0xb9;
 106   1              _nop_();
 107   1      
 108   1              ISP_DATA=0x00;                                  // 读出来校验
 109   1      
 110   1              ISP_CMD=ISP_CMD&0xf8;                                   // 1111,1000
 111   1              ISP_CMD=ISP_CMD|READ_AP_and_Data_Memory_Command;        // 0000,0001
 112   1      
 113   1              ISP_TRIG=0x46;                  // 触发ISP_IAP命令
 114   1              ISP_TRIG=0xb9;                  // 触发ISP_IAP命令
 115   1              _nop_();
 116   1      
 117   1              ISP_IAP_disable();
C51 COMPILER V7.07   DATAFLASH                                                             09/14/2005 15:20:46 PAGE 3   

 118   1      
 119   1              if(ISP_DATA==original_data)
 120   1                      return  OK;
 121   1              else
 122   1                      return  ERROR;
 123   1      }
 124          
 125          ///////////////////////////////////////////////////////////////////////////////
 126          // 读取系统参数
 127          ///////////////////////////////////////////////////////////////////////////////
 128          void Read_Para()
 129          {
 130   1              idata uchar i;
 131   1      
 132   1              for(i=0;i<7;i++)
 133   1                      Para_ee.para_dat[i]=byte_read(0x8000+i);        // 逐个读
 134   1      }
 135          
 136          ///////////////////////////////////////////////////////////////////////////////
 137          // 保存系统参数
 138          ///////////////////////////////////////////////////////////////////////////////
 139          void Write_Para()
 140          {       
 141   1              idata uchar i;
 142   1      
 143   1              sector_erase(0x8000);   // 擦除扇区
 144   1      
 145   1              for(i=0;i<7;i++)
 146   1                      byte_write(0x8000+i, Para_ee.para_dat[i]);      // 逐个写
 147   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    217    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----       2
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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