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

📄 x5045.lst

📁 在89S52上运行的一个测量频率的并且利用串口通信的程序
💻 LST
字号:
C51 COMPILER V7.50   X5045                                                                 11/02/2007 10:51:41 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE X5045
OBJECT MODULE PLACED IN C:\Documents and Settings\Administrator\桌面\chengxu\x5045.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE x5045.c BROWSE DEBUG OBJECTEXTEND OBJECT(C:\Documents and Settings\Administ
                    -rator\桌面\chengxu\x5045.obj)

line level    source

   1          #include"main.h"
   2          #include"x5045.h"
   3          
   4          
   5          /*
   6          void  eeprom(void)
   7          
   8          {
   9          
  10                   wr_sr(0)  ;
  11          }
  12          
  13          */
  14          uchar rd_sr(void)
  15          {
  16   1          uchar sr;
  17   1          SCK=0;
  18   1          CS=0;                                     /*时钟输入变低,CS片选为低电平*/
  19   1          write_byte(0x05);                        /*写读状态寄存器命令*/
  20   1          sr=read_byte();                          /*读取状态字节*/
  21   1          SCK=0;
  22   1          CS=1;                                  /*时钟输入变低,CS片选为低电平*/
  23   1          return sr;
  24   1      }
  25          
  26          
  27          
  28          /*x5045写状态寄存器函数~~~~~~~~~~~~~~~~~~~~~~*/
  29          void wr_sr(uchar sr)                        
  30          {
  31   1          //WP=1;        
  32   1          wren();                               /*调写允许函数*/
  33   1          SCK=0;                                 /*SCK为时钟输入*/
  34   1          CS=0;                                 /*CS片选*/
  35   1          write_byte(0x01);                         /*写状态寄存器命令*/
  36   1          write_byte(sr);                         /*设置1.4秒的看门狗,不保护数据*/
  37   1              SCK=0;
  38   1          CS=1;
  39   1          wipchk();
  40   1      }
  41          
  42          
  43          
  44          /* x5045写一个字节数据函数~~~~~~~~~~~~*/
  45          void write_byte(uchar dt)
  46          {
  47   1          uchar i;                                
  48   1          for(i=0;i<8;i++)
  49   1          {
  50   2                      
  51   2              SCK=0;
  52   2                      SI = dt & 0x80;
  53   2      
  54   2             // if(dt&0x80) 
C51 COMPILER V7.50   X5045                                                                 11/02/2007 10:51:41 PAGE 2   

  55   2               //   SI=1;                       
  56   2              //else 
  57   2                //  SI=0;
  58   2              SCK=1;                       //  SCK时钟输入,时钟上升沿锁存数据;
  59   2              dt=dt<<1;                        
  60   2          }
  61   1           SI=0;
  62   1      }
  63          
  64          
  65          /* x5045读一个字节函数~~~~~~~~~~~*/
  66          uchar read_byte(void)
  67          {
  68   1          uchar i,byte=0;                         
  69   1          for(i=0;i<9;i++)                      //这里很怪,要循环9次  
  70   1          {
  71   2                  
  72   2                      byte=byte<<1;
  73   2              SCK=1;
  74   2              
  75   2                        // SCK时钟输入,时钟下降沿锁存数据
  76   2              if(SO==1)
  77   2                      byte+=1;
  78   2            
  79   2                      SCK=0;
  80   2              
  81   2              
  82   2            
  83   2          }
  84   1          return byte;                             
  85   1      
  86   1      }
  87          
  88          /*x5045置位写允许函数~~~~~~~*/
  89          void wren(void)
  90          {
  91   1          SCK=0;
  92   1          CS=0;                                 
  93   1          write_byte(0x06);                         //写允许命令
  94   1          SCK=0;
  95   1          CS=1;                                 
  96   1      }
  97          
  98          
  99          //x25045标志忙查询函数~~~~~~~~~~~~~~~~~~~~~~~~
 100          /*
 101          void sr_busy(void)
 102          {
 103              uchar i,j;
 104              i=1;j=0;
 105              while (i)
 106              {
 107                  i=rd_sr();
 108                  if(!(i&0x01))
 109                                  i=0;
 110                  j++;
 111                  if(j>=230) 
 112                                  i=0;                                   //如果延时到,强行退出,2005年5月9日---防止出现死机,导致通信中

⌨️ 快捷键说明

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