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

📄 sm5964.lst

📁 关于SM5964的三种程序示例 1.使用看门狗的程序 示例 2.可反复进入ISP的程序 示例 3.利用剩余的Falsh空间存储数据 示例 关键提示:CODE的绝对定位,方法在code_
💻 LST
字号:
C51 COMPILER V7.10   SM5964                                                                09/18/2005 20:22:27 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE SM5964
OBJECT MODULE PLACED IN SM5964.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE SM5964.C OPTIMIZE(SIZE) BROWSE NOAREGS DEBUG OBJECTEXTEND

line level    source

   1          /***************************************************************
   2                  ;关于SM5964的三种程序示例
   3                  ;1.使用看门狗的程序 示例
   4                  ;2.可反复进入ISP的程序 示例
   5                  ;3.利用剩余的Falsh空间存储数据 示例
   6                  ;关键提示:CODE的绝对定位,方法在code_at.c中
   7                  ;本例由上海单片机网友情提供(www.shmcu.com)
   8          ****************************************************************/
   9          
  10          #include <intrins.h>
  11          #include <p89c51rx.h>
  12          #include <head.h>
  13          
  14          
  15          void main(void)
  16          {
  17   1          uchar i,temp[6];
  18   1      
  19   1              WDTC_DOG(); //使能狗
  20   1          ISP_ok = 0;
  21   1      
  22   1              for (;;)
  23   1              {
  24   2                 WDTC_DOG();//喂狗  
  25   2                 EA = 1;
  26   2      
  27   2                      //条件判断,是否进入ISP                          //
  28   2                      if(!P1_6 && !P1_7)//条件由自己任意发挥...       //
  29   2                              {                                           //
  30   3                              ISP_ok = 1;//进入ISP 条件成立               //
  31   3                              }                                           //
  32   2                                                              //
  33   2                      if(ISP_ok != 0)//test ISP                       // 可反复进入ISP的程序 示例
  34   2                      {                                               //
  35   3              ISP_ok = 0;                                     //
  36   3              CLOSE_DOG();//关狗                              //
  37   3                      BEEP = 0;//TEST                                 //
  38   3                      DelayMs(100);                                   //
  39   3                      BEEP = 1;//TEST                                 //
  40   3                      GoToIsp();                                      //
  41   3                      }                                               //
  42   2      
  43   2               
  44   2                      WDTC_DOG();//喂狗  
  45   2                      for(i=0;i<6;i++)//test
  46   2                              {
  47   3                  data_buf[i] = 0x55;//此数据用来下面的测试
  48   3                              }
  49   2      
  50   2                      //Flash页擦除                                     //
  51   2                      ISPFAH = (uchar)(((uint)Nkey_a)>>8);              //
  52   2                      ISPFAL = (uchar)Nkey_a;                           //
  53   2                      ISPFD  = 0x55;                                    //
  54   2                      ISPFD  = 0xaa;                                    //
  55   2                      ISPFD  = 0x55;                                    //
C51 COMPILER V7.10   SM5964                                                                09/18/2005 20:22:27 PAGE 2   

  56   2                      ISPC   = 0x82;//start to Page erase (512 byte)    //
  57   2                                                                //
  58   2                      //写Flash                                         // 利用剩余的Falsh空间存储数据 示例
  59   2                      ISPFAH = (uchar)(((uint)Nkey_a)>>8);              //
  60   2                      ISPFAL = (uchar)Nkey_a;                           //
  61   2                      for(i=0;i<6;i++)//连续写6字节                     //
  62   2                              {                                             //
  63   3                              ISPFD  = data_buf[i];                         //
  64   3                              ISPC   = 0x80;//start to program              //
  65   3                              ISPFAL ++;                                    //
  66   3                              }                                             //
  67   2                      DelayMs(200);//此延时是必须的!                    //
  68   2      
  69   2      
  70   2                      WDTC_DOG();//喂狗  
  71   2                      for(i=0;i<6;i++)//test
  72   2                              {
  73   3                  temp[i] = Nkey_a[i];//读出数据,验证之
  74   3                              }
  75   2        }//for(;;)
  76   1      
  77   1      }
  78          
  79          /***************************************************************
  80                  ;DOG
  81          ****************************************************************/
  82          void WDTC_DOG(void)//在8958A上,看门狗能正常工作的。
  83          {
  84   1              WDTKEY = 0x1e;
  85   1              WDTKEY = 0xe1;//set
  86   1              WDTC = 0xa7;//dog_data; //喂狗  
  87   1      //    SCONF = 0x01; //关ALEI
  88   1              WDTKEY = 0xe1;
  89   1              WDTKEY = 0x1e;//only read
  90   1      }
  91          
  92          void CLOSE_DOG(void)//关狗
  93          {
  94   1              WDTKEY = 0x1e;
  95   1              WDTKEY = 0xe1;//set
  96   1              WDTC = 0x00;//dog_data; //喂狗  
  97   1              WDTKEY = 0xe1;
  98   1              WDTKEY = 0x1e;//only read
  99   1      }
 100          
 101          /***************************************************************
 102                  ;Delay time
 103          ****************************************************************/
 104          void DelayMs(unsigned int number)
 105          {
 106   1              unsigned char temp;
 107   1              for(;number!=0;number--) 
 108   1              {
 109   2                      for(temp=112;temp!=0;temp--) 
 110   2                      {
 111   3                        _nop_();
 112   3                      }
 113   2              }
 114   1      }
 115          
 116          

C51 COMPILER V7.10   SM5964                                                                09/18/2005 20:22:27 PAGE 3   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    195    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   IDATA SIZE       =     10    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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