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

📄 93c46.lst

📁 93c46读写程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.07   93C46                                                                 05/15/2008 11:31:32 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE 93C46
OBJECT MODULE PLACED IN 93c46.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 93c46.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /********************************************************************
   2           k1 = 位选数码管
   3           k2 = 加
   4           k3 = 擦除
   5           k4 = 保存
   6          ********************************************************************/
   7          
   8          
   9          
  10          
  11          #include <reg51.h>
  12          #include <intrins.h>
  13          
  14          
  15          //define OP code
  16          #define OP_EWEN_H               0x00    // 00                                   write enable
  17          #define OP_EWEN_L               0x60    // 11X XXXX                             write enable
  18          #define OP_EWDS_H               0x00    // 00                                   disable
  19          #define OP_EWDS_L               0x00    // 00X XXXX                             disable
  20          
  21          #define OP_WRITE_H              0x40    // 01 A6-A0                             write data
  22          #define OP_READ_H               0x80    // 10 A6-A0                             read data
  23          
  24          #define OP_ERASE_H              0xc0    // 11 A6-A0                             erase a word
  25          
  26          #define OP_ERAL_H               0x00    // 00                                   erase all
  27          #define OP_ERAL_L               0x40    // 10X XXXX                             erase all
  28          #define OP_WRAL_H               0x00    // 00                                   write all       
  29          #define OP_WRAL_L               0x20    // 01X XXXX                             write all       
  30          
  31          
  32          //define pin
  33          sbit CS = P1^6;
  34          sbit SK = P1^4;
  35          sbit DI = P1^5;
  36          sbit DO = P1^7;
  37          sbit k1=P1^0;
  38          sbit k2=P1^1;
  39          sbit k3=P1^2;
  40          sbit k4=P1^3;
  41          sbit disp_bit0=P2^0;
  42          sbit disp_bit1=P2^1;
  43          sbit disp_bit2=P2^2;
  44          sbit disp_bit3=P2^3;
  45          sbit disp_bit4=P2^4;
  46          sbit disp_bit5=P2^5;
  47          sbit disp_bit6=P2^6;
  48          sbit disp_bit7=P2^7;
  49          
  50          void start();
  51          void ewen();// 使能写入操作
  52          void ewds();// 禁止写入操作     
  53          void erase();// 擦除全部内容
  54          void write(unsigned char addr, unsigned char indata);
  55          unsigned char read(unsigned char addr);
C51 COMPILER V7.07   93C46                                                                 05/15/2008 11:31:32 PAGE 2   

  56          void inop(unsigned char op_h, unsigned char op_l);
  57          void shin(unsigned char indata);
  58          unsigned char shout();
  59          unsigned char key_scan();
  60          void delay_1ms(unsigned char ms);
  61          bit flash_bit,flash_cpl;
  62          unsigned char eeprom_data[8],flash_number_bit,flash_500ms,disp_bit;
  63          unsigned char disp_code[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, //0,1,2,3,4,5,6
  64            0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};//7,8,9,A,B,C,D,E,F,-
  65          
  66          
  67          main()
  68          {
  69   1              unsigned char i,key_s,key_v,key_number;
  70   1              TMOD&=0xf0;
  71   1              TMOD|=0x01;
  72   1              TH0=0xec;
  73   1              TL0=0x78;
  74   1              ET0=1;
  75   1              flash_bit=1;
  76   1              flash_cpl=1;
  77   1              flash_500ms=0x00;
  78   1              disp_bit=0x00;
  79   1              EA=1;
  80   1              TR0=1;
  81   1              CS = 0;                         //初始化端口
  82   1              SK = 0;
  83   1              DI = 1;
  84   1              DO = 1;
  85   1              for(i=0;i<8;i++)
  86   1               eeprom_data[i]=read(i);
  87   1              for(i=0;i<8;i++)
  88   1               {
  89   2                if(eeprom_data[i]==0xff)
  90   2                eeprom_data[i]=0x0f;
  91   2               }
  92   1              for(;;)
  93   1              {
  94   2            key_s=key_scan();
  95   2                 if(key_s^key_v)
  96   2                  {
  97   3                        delay_1ms(10);
  98   3                        key_s=key_scan();
  99   3                        if(key_s^key_v)
 100   3                          {
 101   4                                key_v=key_s;
 102   4                                if((key_s&0x08)==0x00)
 103   4                                   {
 104   5                                        flash_bit=0;
 105   5                                        key_number=0x01;
 106   5                                        flash_number_bit=0x01;
 107   5                        ewen();
 108   5                                        //处理第1位数码管
 109   5                                        do
 110   5                                         {
 111   6                                          key_s=key_scan();
 112   6                                              if(key_s^key_v)
 113   6                                                {
 114   7                                                 delay_1ms(10);
 115   7                             key_s=key_scan();
 116   7                                                 if(key_s^key_v)
 117   7                                                   {
C51 COMPILER V7.07   93C46                                                                 05/15/2008 11:31:32 PAGE 3   

 118   8                                                        key_v=key_s;
 119   8                                                        if((key_s&0x08)==0x00)
 120   8                                                           {
 121   9                                                                key_number=0x02;
 122   9                                                                flash_number_bit=0x02;
 123   9                                                               }
 124   8                                                        else if((key_s&0x04)==0x00)
 125   8                                                            {
 126   9                                                                 if(++eeprom_data[0]==0x10)
 127   9                                                                     eeprom_data[0]=0x00;
 128   9                                                                 while(k2==0)
 129   9                                                                   {
 130  10                                                                        delay_1ms(200);
 131  10                                                                        if(k2==0)
 132  10                                                                         {
 133  11                                                                          delay_1ms(100);
 134  11                                                                          if(++eeprom_data[0]==0x10)
 135  11                                                                       eeprom_data[0]=0x00;
 136  11                                                                         }
 137  10                                                                       }
 138   9                                                                }
 139   8                                                        else if((key_s&0x02)==0x00)
 140   8                                                            {
 141   9                                                                 erase();
 142   9                                                                 for(i=0;i<10;i++)
 143   9                                     eeprom_data[i]=0x0f;
 144   9                                                                }
 145   8                                 else if((key_s&0x01)==0x00)
 146   8                                      {
 147   9                                                                       erase();
 148   9                                                                       for(i=0;i<8;i++)
 149   9                                       write(i, eeprom_data[i]);
 150   9                                       ewds();
 151   9                                                                       flash_bit=1;
 152   9                                                                       key_number=0x00;
 153   9                                      } 
 154   8                                                       }
 155   7                                                }
 156   6                                         }while(key_number==0x01);
 157   5                                         //处理第2位数码管
 158   5                         do
 159   5                                          {
 160   6                                               key_s=key_scan();
 161   6                                               if(key_s^key_v)
 162   6                                                 {
 163   7                                                  delay_1ms(10);
 164   7                                                      key_s=key_scan();
 165   7                                                       if(key_s^key_v)
 166   7                                                        {
 167   8                                                         key_v=key_s;
 168   8                                                         if((key_s&0x08)==0x00)
 169   8                                                           {
 170   9                                                                key_number=0x03;
 171   9                                                                flash_number_bit=0x03;
 172   9                                                                ewen();
 173   9                                                               }
 174   8                                                         else if((key_s&0x04)==0x00)
 175   8                                                            {
 176   9                                                                 if(++eeprom_data[1]==0x10)
 177   9                                                                    eeprom_data[1]=0x00;
 178   9                                                                 while(k2==0)
 179   9                                                                   {
C51 COMPILER V7.07   93C46                                                                 05/15/2008 11:31:32 PAGE 4   

 180  10                                                                        delay_1ms(200);
 181  10                                                                        if(k2==0)
 182  10                                                                         {
 183  11                                                                          delay_1ms(100);
 184  11                                                                          if(++eeprom_data[1]==0x10)
 185  11                                                                       eeprom_data[1]=0x00;
 186  11                                                                         }
 187  10                                                                       }
 188   9                                                                }
 189   8                                                         else if((key_s&0x02)==0x00)
 190   8                                                              {
 191   9                                                                       erase();
 192   9                                                                       for(i=0;i<10;i++)
 193   9                                       eeprom_data[i]=0x0f;
 194   9                                                                      }
 195   8                                                         else if((key_s&0x01)==0x00)
 196   8                                                              { for(i=0;i<8;i++)
 197   9                                                                        write(i, eeprom_data[i]);
 198   9                                                                        ewds();
 199   9                                                                        flash_bit=1;
 200   9                                                                        key_number=0x00;
 201   9                                                                      }
 202   8                                                        }
 203   7                                                 }

⌨️ 快捷键说明

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