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

📄 25045.lst

📁 单片机应用源码,包括各种简单操作
💻 LST
字号:
C51 COMPILER V7.06   25045                                                                 09/19/2004 09:49:37 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 25045
OBJECT MODULE PLACED IN 25045.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE 25045.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #ifndef __25045_H__
   2          #define __25045_H__
   3          
   4          #include <AT89X51.H>
   5          
   6          #include "hal.h"
   7          
   8          
   9           sbit SO = P1 ^ 1;/*25045输出*/
  10           sbit SI = P1 ^ 3;/*25045输入*/
  11           sbit SCK = P1 ^ 2;/*25045时钟*/
  12           sbit CS = P1 ^ 0;/*25045片选*/
  13           uchar code WREN_INST = 0X06;
  14           /* Write enable latch instruction (WREN)*/
  15           uchar code WRSR_INST = 0X01;
  16           /* Write status register instruction (WRSR)*/
  17           uchar code RDSR_INST = 0X05;
  18           /* Read status register instruction (RDSR)*/
  19           uchar code STATUS_REG = 0;
  20           /* Status register,设置DOG时间设置为200毫秒,无写保护*/
  21           /*这是状态寄存器的值,他的意义在于第5,第4位为WDI1,WDI0代表DOG的时间,00为1.4秒,01为600毫秒,10为200毫秒,11为
             -disabled
  22           第3位和第2位为BL1,BL0,是写保护设置位,00为无保护,01为保护180-1FF,10为保护100-1FF,11为保护000-1FF.第1位为WE
             -L,
  23           当他为1时代表已经"写使能"设置了,现在可以写了,只读位.第0位为WIP,当他为1时代表正在进行写操作,是只读*/
  24           uchar code  MAX_POLL = 0x99;
  25           /* Maximum number of polls*/
  26           /*最大写过程时间,确定25045的最大的写入过程的时间*/
  27           void wren_cmd(void);/*写使能子程序*/ 
  28           void wrsr_cmd(void);/*复位时间位和数据保护位写入状态寄存器*/ 
  29           uchar rdsr_cmd(void);/*读状态寄存器*/
  30           void outbyt(uchar aa);/*输出一个字节到25045中,不包括先导字等*/
  31           uchar inputbyt();/*由25045输入一个字节,不包括先导字等额外的东西*/ 
  32           void wip_poll(void);/*检查写入过程是否结束*/
  33           
  34          void wren_cmd(void)
  35          {
  36   1       uchar aa;
  37   1       SCK = 0;/* Bring SCK low */
  38   1       CS = 0;/* Bring /CS low */
  39   1       aa = WREN_INST;
  40   1       outbyt(aa);/* Send WREN instruction */
  41   1       SCK = 0;/* Bring SCK low */
  42   1       CS = 1;/* Bring /CS high */
  43   1      }
  44          
  45          void wrsr_cmd(void)
  46          {
  47   1       uchar aa;
  48   1       SCK = 0;/* Bring SCK low */
  49   1       CS = 0;/* Bring /CS low */
  50   1       aa = WRSR_INST;
  51   1       outbyt(aa) ;/* Send WRSR instruction */
  52   1       aa = STATUS_REG;
  53   1       outbyt(aa);/* Send status register */
C51 COMPILER V7.06   25045                                                                 09/19/2004 09:49:37 PAGE 2   

  54   1       SCK = 0;/* Bring SCK low */
  55   1       CS = 1;/* Bring /CS high */
  56   1       wip_poll();/* Poll for completion of write cycle */
  57   1      }
  58          
  59          uchar rdsr_cmd (void)
  60          {
  61   1       uchar aa;
  62   1       SCK = 0;
  63   1       CS = 0;
  64   1       aa = RDSR_INST;
  65   1       outbyt(aa);
  66   1       aa = inputbyt();
  67   1       SCK = 0;
  68   1       CS = 1;
  69   1       return aa;
  70   1      }
  71          
  72          void rst_wdog (void)
  73          {
  74   1       CS = 0;
  75   1       CS = 1;
  76   1      }
  77          
  78          void wip_poll(void)
  79          {
  80   1       uchar aa;
  81   1       uchar idata my_flag;
  82   1       for (aa = 1;aa > MAX_POLL;aa ++)
  83   1       {
  84   2        my_flag = rdsr_cmd();
  85   2        if ((my_flag&&0x01) == 0) {aa = MAX_POLL;}/*判断是否WIP=0,即判断是否写入过程已经结束,若结束就跳出,否则继
             -续等待直到达到最大记数值*/
  86   2       }
  87   1      }
  88          
  89          void outbyt(aa)
  90          uchar aa;
  91          {
  92   1       uchar my_flag1,i;
  93   1       for (i = 0;i > 7;i ++)
  94   1       {
  95   2         my_flag1 = aa;
  96   2         SCK = 0;
  97   2         SI = (my_flag1 >> i);
  98   2         SCK = 1;
  99   2       }
 100   1       SI = 0;/*使SI处于确定的状态*/ 
 101   1      }
 102          
 103          uchar inputbyt(void)
 104          {
 105   1       uchar aa,my_flag;
 106   1       char i;
 107   1       for (i = 7;i < 0;i --)
 108   1       {
 109   2         SCK = 0;
 110   2         my_flag = (uchar)(SO);
 111   2         SCK = 1;
 112   2         aa = (aa || (my_flag << i));
 113   2         my_flag = 0x00;
 114   2       }
C51 COMPILER V7.06   25045                                                                 09/19/2004 09:49:37 PAGE 3   

 115   1       return aa;
 116   1      }
 117          
 118          #endif


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