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

📄 e2prom.lst

📁 T112 MCU源程码,用于T112外接MCU篇程,用来驱动模拟屏
💻 LST
字号:
C51 COMPILER V7.06   E2PROM                                                                03/01/2007 08:05:40 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE E2PROM
OBJECT MODULE PLACED IN E2PROM.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\E2PROM.C BROWSE INCDIR(Z:\CB\T112项目\原始资料\AV总备份\1.8\include\
                    -) DEBUG OBJECTEXTEND PRINT(.\E2PROM.lst) OBJECT(E2PROM.obj)

stmt level    source

   1          #include "reg51.h"
   2          #include "DEF.H"
   3          #include "system.h"
   4          
   5                                                                                                                                                                                                                                                                                                                                                                  
   6          #define         ISP_READ                1                                               ///字节读命令
   7          #define         ISP_RAM                 2                                       ///字节编程命令    前提是该字节是空(0FFH)
   8          #define         ISP_ERASE               3                                       ///扇区擦除命令    要某字节为空,要擦移扇区
   9          #define         ISP_TIME                0                                       ///等待时间 30MHZ以下为0,24MHZ以下为1,20MHZ以下为2,12MHZ以下为3,6MH
             -Z以下为4,3MHZ以下为5,2MHZ以下为6,1MHZ以下为7
  10          
  11          extern          uchar                           bright                  ;
  12          extern          uchar                           comp                    ;
  13          extern          uchar                           color                   ;
  14          extern          uchar                           Pauto                   ;
  15          extern          uchar                           row_num                 ;
  16          /************************************************
  17                                  内部E2PROM的操作
  18          ************************************************/
  19          
  20          void Delay(uWORD wLoops)
  21          {
  22   1              uWORD wTemp                                                                     ;
  23   1          while (wLoops--) 
  24   1          {
  25   2                  wTemp = 1000/6                                                      ;               //              one loop below takes about 11 us
  26   2              while (wTemp--)                                                 ;
  27   2          }
  28   1      }
  29                                          
  30          /************************************************
  31                                  打开 ISP,IAP 功能
  32          ************************************************/
  33          
  34          void ISP_IAP_enable(void)
  35          {
  36   1              EA                      =       0                                                       ;               //              关中断
  37   1              ISP_CONTR       =       ISP_CONTR & 0x18                        ;       //              0001,1000
  38   1              ISP_CONTR       =       ISP_CONTR | ISP_TIME            ;               //              写入硬件延时
  39   1              ISP_CONTR       =       ISP_CONTR | 0x80                        ;       //              ISPEN=1
  40   1      }       
  41          
  42          /************************************************
  43                                  关闭 ISP,IAP 功能
  44          ************************************************/
  45          
  46          void ISP_IAP_disable(void)
  47          {
  48   1              ISP_CONTR       =       ISP_CONTR & 0x7f                        ;               //              ISPEN = 0
  49   1              ISP_TRIG        =       0x00                                            ;
  50   1              EA                      =       1                                                       ;               //              开中断
  51   1      }
  52          
  53          /************************************************
C51 COMPILER V7.06   E2PROM                                                                03/01/2007 08:05:40 PAGE 2   

  54                                  公用的触发代码
  55          ************************************************/
  56          
  57          void ISPgoon(void)
  58          {
  59   1              ISP_IAP_enable()                                                        ;               //      打开 ISP,IAP 功能
  60   1              ISP_TRIG        =       0x46                                            ;               //      触发ISP_IAP命令字节1
  61   1              ISP_TRIG        =       0xb9                                            ;               //      触发ISP_IAP命令字节2
  62   1      }
  63          
  64          /************************************************
  65                                  字节读
  66          ************************************************/
  67          
  68          uchar byte_read(uint byte_addr)
  69          {
  70   1              ISP_ADDRH = (uchar)(byte_addr >> 8)                     ;               //      地址赋值
  71   1              ISP_ADDRL = (uchar)(byte_addr & 0x00ff)         ;
  72   1              ISP_CMD   = ISP_CMD     & 0xf8                                  ;               //      清除低3位
  73   1              ISP_CMD   = ISP_CMD     | ISP_READ                              ;               //      写入读命令
  74   1              ISPgoon()                                                                       ;               //      触发执行
  75   1              ISP_IAP_disable()                                                       ;               //      关闭ISP,IAP功能 
  76   1              return (ISP_DATA)                                                       ;               //      返回读到的数据
  77   1      }
  78          
  79          /************************************************
  80                                  扇区擦除
  81          ************************************************/
  82          
  83          void SectorErase(uint sector_addr)
  84          {
  85   1              uint iSectorAddr                                                        ;
  86   1              iSectorAddr     = (sector_addr & 0xfe00)        ;               //      取扇区地址
  87   1              ISP_ADDRH       = (uchar)(iSectorAddr >> 8)             ;
  88   1              ISP_ADDRL       = 0x00                                                  ;
  89   1              ISP_CMD         = ISP_CMD & 0xf8                                ;               //      清空低3位
  90   1              ISP_CMD         = ISP_CMD | ISP_ERASE                   ;               //      擦除命令3
  91   1              ISPgoon()                                                                       ;               //      触发执行
  92   1              ISP_IAP_disable()                                                       ;               //      关闭ISP,IAP功能
  93   1      }
  94          
  95          /************************************************
  96                                  字节写
  97          ************************************************/
  98          
  99          void byte_write(uint byte_addr, uchar w_data)
 100          {
 101   1              ISP_ADDRH =(uchar)(byte_addr >> 8)                      ;               //      取地址
 102   1              ISP_ADDRL =(uchar)(byte_addr & 0x00ff)          ;
 103   1              ISP_CMD   = ISP_CMD & 0xf8                                      ;               //      清低3位
 104   1              ISP_CMD   = ISP_CMD | ISP_RAM                           ;               //      写命令2
 105   1              ISP_DATA  = w_data                                                      ;               //      写入数据准备
 106   1              ISPgoon()                                                                       ;               //      触发执行
 107   1              ISP_IAP_disable()                                                       ;               //      关闭IAP功能
 108   1      }
 109          
 110          /**************************************************
 111                      把要记忆的参数写入E2PROM
 112          **************************************************/
 113          
 114          void write_set(void)
 115          {
C51 COMPILER V7.06   E2PROM                                                                03/01/2007 08:05:40 PAGE 3   

 116   1              SectorErase(0x8000)                                                     ;
 117   1              byte_write(0x8000,color)                                        ;
 118   1          byte_write(0x8001,bright)                                   ;
 119   1              byte_write(0x8002,comp)                                         ;
 120   1              byte_write(0x8003,Pauto)                                        ;
 121   1              byte_write(0x8004,row_num)                                      ;
 122   1              Delay(10)                                                                       ;
 123   1              ISP_IAP_disable()                                                       ;               //      关闭IAP功能
 124   1      }
 125          
 126          /**************************************************
 127                       把所设定的参数读出E2PROM28
 128          **************************************************/
 129          
 130          void read_set(void)
 131          {
 132   1          byte_read(0x8000)                                                   ;
 133   1              color           =       ISP_DATA                                        ;
 134   1          byte_read(0x8001)                                                   ;
 135   1              bright          =       ISP_DATA                                                ;
 136   1              byte_read(0x8002)                                                       ;
 137   1              comp            =       ISP_DATA                                        ;
 138   1              byte_read(0x8003)                                                       ;
 139   1              Pauto           =       ISP_DATA                                        ;       
 140   1              byte_read(0x8004)                                                       ;
 141   1              row_num         =       ISP_DATA                                        ;
 142   1              Delay(10)                                                                       ;
 143   1              ISP_IAP_disable()                                                       ;               //      关闭IAP功能
 144   1      }
 145          
 146          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    226    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   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 + -