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

📄 eeprom.lst

📁 用TEA7567做的调频收音机,本人经测试通过的
💻 LST
字号:
C51 COMPILER V7.06   EEPROM                                                                03/16/2009 19:12:50 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN eeprom.OBJ
COMPILER INVOKED BY: G:\Keil\C51\BIN\C51.EXE eeprom.c OPTIMIZE(9,SIZE) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "global.h"
   2          #include "eeprom.h"
   3          
   4          //****************** 关闭 ISP,IAP 功能 **************
   5          void ISP_IAP_Disable(void)
   6          {
   7   1              ISP_CONTR = 0x00;
   8   1              ISP_CMD = 0X00; 
   9   1              ISP_TRIG = 0x00;
  10   1              EA = 1;               //开中断
  11   1      }
  12          
  13          //*******************字节读***************************
  14          
  15          uchar   Byte_read(uint byte_addr)
  16          {
  17   1              
  18   1              ISP_CONTR = En_Wait_TIME;                                       //开启ISP/IAP;并送等待时间                          
  19   1              ISP_CMD = Read_COM;                                     //送字节读命令字        
  20   1              ISP_ADDRH = (uchar)(byte_addr >> 8);            //送地址高字节
  21   1              ISP_ADDRL = (uchar)(byte_addr & 0X00FF);        //送地址低字节
  22   1              EA = 0;                                                                         //关中断
  23   1              ISP_TRIG = 0X46;                                                        //送触发命令字 0X46、0XB9
  24   1              ISP_TRIG = 0XB9;
  25   1              _nop_();
  26   1              ISP_IAP_Disable();                  //关闭ISP/IAP功能
  27   1              EA = 1;                                                         //开中断
  28   1              return ((unsigned char)ISP_DATA);
  29   1      }
  30          
  31          
  32          
  33          //********************字节编程***********************
  34          
  35          void    Byte_program(uint byte_addr, uchar isp_iap_data)
  36          {
  37   1              
  38   1              ISP_CONTR = En_Wait_TIME;                                       //开启ISP/IAP;并送等待时间
  39   1              ISP_CMD = Prog_COM;                                     //送字节编程命令字      
  40   1              ISP_ADDRH = (uchar)(byte_addr >> 8);            //送地址高字节
  41   1              ISP_ADDRL = (uchar)(byte_addr & 0X00FF);        //送地址低字节  
  42   1              ISP_DATA = isp_iap_data;                                        //送数据进ISP_DATA
  43   1              EA = 0;                                                                         //关中断
  44   1              ISP_TRIG = 0X46;                                                        //送触发命令字 0X46、0XB9
  45   1              ISP_TRIG = 0XB9;
  46   1              _nop_();
  47   1              ISP_IAP_Disable();                 //关闭ISP/IAP功能
  48   1              EA = 1;                                                         //开中断        
  49   1      }
  50          
  51          //********************* 扇区擦除*********************
  52          void    Sector_erase(uint sector_addr)
  53          {
  54   1              
  55   1              ISP_CONTR = En_Wait_TIME;                                       //开启ISP/IAP;并送等待时间
C51 COMPILER V7.06   EEPROM                                                                03/16/2009 19:12:50 PAGE 2   

  56   1      //      ISP_CONTR=0xc1;
  57   1              ISP_CMD = Dele_COM;                                     //送扇区擦除命令字      
  58   1              ISP_ADDRH = (uchar)(sector_addr >> 8);          //送地址高字节
  59   1              ISP_ADDRL = (uchar)(sector_addr & 0X00FF);      //送地址低字节
  60   1              EA = 0;                                                                         //关中断
  61   1              ISP_TRIG = 0X46;                                                        //送触发命令字 0X46、0XB9
  62   1              ISP_TRIG = 0XB9;
  63   1              _nop_();
  64   1              ISP_IAP_Disable();                  //关闭ISP/IAP功能
  65   1              EA = 1;
  66   1      }
  67          
  68          //EEPROM写数据程序
  69                  void Eeprom_WriteData(void)
  70                  {
  71   1                      if(Save_Can==1)//如果关键数据有改变了,保存关键数据
  72   1                      {  
  73   2      //              if(Erase_Flag==0)
  74   2      //                      {
  75   2      //                              Erase_Flag=1;//使能擦除扇区功能计数时间
  76   2                                      Sector_erase(0X2000);           //扇区擦除,第一个扇区
  77   2      //                      }
  78   2      //                      else
  79   2      //                      {
  80   2      //                              if(Erase_Count>5)//大于20ms了,说明已经擦除成功了
  81   2      //                              {
  82   2      //                                      Erase_Flag=0;//关闭擦除扇区功能计数
  83   2      //                                      Erase_Count=0;
  84   2                                              WatchDog;                       //喂狗  
  85   2                                              Byte_program(0X2000,Volume);//音量
  86   2                                              Byte_program(0X2001,Delay_s);//延时
  87   2                                              Byte_program(0X2002,District);//区位
  88   2                                              Byte_program(0X2003,Node);//结点
  89   2                                              Byte_program(0X2004,Frequency_BCD[0]);//频率百位
  90   2                                              Byte_program(0X2005,Frequency_BCD[1]);//频率十位
  91   2                                              Byte_program(0X2006,Frequency_BCD[2]);//频率个位
  92   2                                              Byte_program(0X2007,Frequency_BCD[3]);//频率十分位
  93   2                                              Byte_program(0X2008,Frequency_BCD[4]);//频率百分位
  94   2                                              Byte_program(0X2009,Band_Data);//波段
  95   2                                              Save_Can=0;//清关键数据改变标志
  96   2      //                              }
  97   2      //                      }
  98   2      
  99   2                       }
 100   1              }
 101          
 102          
 103                  
 104                  void Start_Process(void)//开机检测掉电前的重要数据
 105                  {
 106   1                    unsigned char Code;
 107   1                        unsigned char Frequency_B,Frequency_S,Frequency_G,Frequency_SF,Frequency_BF;//频率的百十个,十分位的数

⌨️ 快捷键说明

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