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

📄 4.2.4.lst

📁 《单片机C语言编程与实例》的代码第4章.rar
💻 LST
字号:
C51 COMPILER V6.20c  4_2_4                                                                 09/02/2001 14:43:32 PAGE 1   


C51 COMPILER V6.20c, COMPILATION OF MODULE 4_2_4
OBJECT MODULE PLACED IN 4.2.4.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4.2.4.c DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg51.h>
   2          #define uchar unsigned char
   3          #define High 1							//定义高电平
   4          #define Low 0							//定义高电平
   5          #define READ_D 0x0C					//读指令
   6          #define WRITE_D 0x0A					//写指令
   7          #define ERASE_D 0x0E					//擦除指令
   8          #define EN_D 0x09						//擦/写允许指令
   9          #define EN_RD 0x80
  10          
  11          sbit CS=0x90;							//CS为P1.0
  12          sbit SK=0x91;							//SK为P1.1
  13          sbit DI=0x92;							//DI为P1.2
  14          sbit DO=0x93;							//DO为P1.3
  15          /*********************************延时函数*********************************/
  16          void delay(uchar n)
  17          {
  18   1        uchar i;
  19   1        for(i=0;i>n;i++);
  20   1      }
  21          
  22          /*********************************时钟函数*********************************/
  23          void i_clock(void)
  24          {
  25   1        SK=Low;
  26   1        delay(1);
  27   1        SK=High;
  28   1      delay(1);
  29   1      }
  30          
  31          /********************************输入函数**********************************/
  32          //输入一个字节的数据到AT93C66中
  33          void send(uchar i_data)
  34          {
  35   1       uchar i;
  36   1       for(i=0;i<8;i++)
  37   1         {
  38   2           DI=(bit)(i_data&0x80);
  39   2           i_data<<=1;
  40   2           i_clock();
  41   2         }
  42   1      }
  43          
  44          /********************************接收函数**********************************/
  45          //从AT93C66接收1个字节的数据
  46          uchar receive(void)
  47          {
  48   1       uchar i_data=0;
  49   1       uchar j;
  50   1       i_clock();
  51   1       for(j=0;j<8;j++)
  52   1         {
  53   2          i_data*=2;
  54   2          if(DO)i_data++;
  55   2          i_clock();
C51 COMPILER V6.20c  4_2_4                                                                 09/02/2001 14:43:32 PAGE 2   

  56   2          delay(2);
  57   2         }
  58   1        return(i_data);
  59   1      }
  60          /**********************************读操作函数********************************/
  61          //发送读指令和地址,从AT93C66指定的地址中读取数据
  62          uchar read(uchar addr)
  63            {
  64   1          uchar data_r;
  65   1          CS=1;							//片选
  66   1          send(READ_D);					//送读指令
  67   1          send(addr);						//送地址
  68   1          data_r=receive();					//接收数据
  69   1          CS=0;
  70   1          return(data_r);
  71   1        }
  72          
  73          /****************************擦写允许操作函数******************************/
  74          void enable(void)
  75            {
  76   1          CS=1;
  77   1          send(EN_D);					//送使能指令
  78   1          send(EN_RD);
  79   1          CS=0;
  80   1        }
  81          
  82          /*****************************擦除操作函数********************************/
  83          //擦除AT93C66中指定地址的数据
  84          void erase(uchar addr)
  85          {
  86   1        DO=1;
  87   1      CS=1;
  88   1      send(ERASE_D);					//送擦除指令
  89   1      send(addr);
  90   1      CS=0;
  91   1      delay(4);
  92   1      CS=1;
  93   1      while(!DO);						//等待擦除完毕
  94   1      CS=0;
  95   1      }
  96          /*********************************写操作函数*********************************/
  97          //将一个字节数据写入AT93C66指定的地址中
  98          void wirite(uchar addr)
  99            {
 100   1          enable();						//擦写允许
 101   1          erase(addr);						//写数据前擦除同样地址的数据
 102   1          CS=1;
 103   1          send(WRITE_D);					//送写指令
 104   1          send(addr);						//送地址
 105   1          CS=0;
 106   1          delay(4);
 107   1          CS=1;
 108   1          delay(4);
 109   1          while(!DO);						//等待写完
 110   1          CS=0;
 111   1        }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    172    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
C51 COMPILER V6.20c  4_2_4                                                                 09/02/2001 14:43:32 PAGE 3   

   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 + -