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

📄 7289-key.lst

📁 基于单片机AT89S52系统的一些测试程序
💻 LST
字号:
C51 COMPILER V7.06   7289_KEY                                                              01/02/2008 08:48:42 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 7289_KEY
OBJECT MODULE PLACED IN 7289-key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 7289-key.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg52.h>
   2          #include <stdio.h>
   3          #include <absacc.h>
   4          
   5          typedef unsigned char uchar;
   6          
   7          sbit CS=P1^4;
   8          sbit CLK=P1^7;
   9          sbit DIO=P1^6;
  10          sbit KEY=P3^2;
  11          
  12          uchar half_hign;
  13          uchar half_low;
  14          
  15          bdata uchar com_data;
  16          sbit mos_bit=com_data^7;
  17          sbit low_bit=com_data^0;
  18          
  19          void delay_50us()
  20          {   
  21   1              uchar i;
  22   1              for (i=0; i<6; i++){;}
  23   1      }
  24          
  25          void delay_8us()
  26          {
  27   1              uchar i;
  28   1              for (i=0; i<1; i++){;}
  29   1      }
  30          void delay_50ms()
  31          {
  32   1              uchar i,j;
  33   1              for(j=0;j<50;j++)
  34   1                      for(i=0;i<125;i++){;}
  35   1      }
  36          void delay_5s()
  37          {
  38   1              uchar i = 100;
  39   1              while(i--)      
  40   1                      delay_50ms();
  41   1      }
  42          void send(uchar sebuf)
  43          {
  44   1              uchar i;
  45   1              com_data=sebuf;
  46   1              CLK=0;
  47   1              CS=0;
  48   1              delay_50us();
  49   1              for(i=0;i<8;i++)
  50   1              {
  51   2                      delay_8us();
  52   2                      DIO=mos_bit;
  53   2                      CLK=1;
  54   2                      delay_8us();
  55   2                      com_data=com_data<<1;
C51 COMPILER V7.06   7289_KEY                                                              01/02/2008 08:48:42 PAGE 2   

  56   2                      CLK=0;
  57   2              }
  58   1              DIO=0;
  59   1      }
  60          uchar receive(void)
  61          {
  62   1              uchar i,rebuf;
  63   1              CLK=1;
  64   1              delay_50us();
  65   1              for(i=0;i<8;i++)
  66   1              {
  67   2                      com_data=com_data<<1;
  68   2                      low_bit=DIO;
  69   2                      CLK=1;
  70   2                      delay_8us();
  71   2                      CLK=0;
  72   2                      delay_8us();
  73   2              }
  74   1              rebuf=com_data;
  75   1              DIO =1;
  76   1              CS=1;
  77   1              return rebuf;
  78   1      }
  79          void reset(void)
  80          {
  81   1              DIO=1;
  82   1              delay_50ms();
  83   1              send(0xa4);
  84   1              CS=1;
  85   1      }
  86          /*  7289显示程序                  */ 
  87          /*  addr为显示位置 范围0~7                */
  88          /*  dat为现实内容                 */
  89          void display(uchar addr,uchar dat)
  90          {
  91   1              if(addr<0 || addr >7)
  92   1                      return;
  93   1              send(0xc8 + addr);
  94   1              delay_50us();
  95   1              send(dat);
  96   1              CS=1;
  97   1      }
  98          void sendcommand(uchar addr,uchar dat)
  99          {
 100   1              send(addr);
 101   1              delay_50us();
 102   1              send(dat);
 103   1              CS=1;
 104   1      }
 105          uchar getkeycode(uchar dat)
 106          {
 107   1              uchar key;
 108   1              switch(dat)
 109   1              {
 110   2                      case 0x2f: key = 0x01;break;
 111   2                      case 0x27: key = 0x02;break;
 112   2                      case 0x1f: key = 0x03;break;
 113   2                      case 0x17: key = 0x04;break;
 114   2                      case 0x0f: key = 0x05;break;
 115   2                      case 0x07: key = 0x06;break;
 116   2                      case 0x2e: key = 0x07;break;
 117   2                      case 0x26: key = 0x08;break;
C51 COMPILER V7.06   7289_KEY                                                              01/02/2008 08:48:42 PAGE 3   

 118   2                      case 0x1e: key = 0x09;break;
 119   2                      case 0x16: key = 0x10;break;
 120   2                      case 0x0e: key = 0x11;break;
 121   2                      case 0x06: key = 0x12;break;
 122   2                      case 0x2d: key = 0x13;break;
 123   2                      case 0x25: key = 0x14;break;
 124   2                      case 0x1d: key = 0x15;break;
 125   2                      case 0x15: key = 0x16;break;
 126   2                      case 0x0d: key = 0x17;break;
 127   2                      case 0x05: key = 0x18;break;
 128   2                      case 0x2c: key = 0x19;break;
 129   2                      case 0x24: key = 0x20;break;
 130   2                      case 0x1c: key = 0x21;break;
 131   2                      case 0x14: key = 0x22;break;
 132   2                      case 0x0c: key = 0x23;break;
 133   2                      case 0x04: key = 0x24;break;
 134   2                      default:   key = 0xee;break;
 135   2              }
 136   1              return key;
 137   1      }
 138          main()
 139          {
 140   1              uchar dat,key;
 141   1              reset();        
 142   1              send(0xbf);
 143   1              CS=1;
 144   1              delay_5s();
 145   1              sendcommand(0x88,0xff);
 146   1              while(1)
 147   1              {
 148   2                      while(KEY);
 149   2                      send(0x15);  // 0
 150   2                      delay_50us();   
 151   2                      dat = receive();
 152   2                      delay_50us();
 153   2                      key = getkeycode(dat);
 154   2                      half_hign = key >> 4;
 155   2                      half_low  = key & 0x0f;
 156   2                      
 157   2                      display(0,half_hign);
 158   2                      display(1,half_low);
 159   2                      display(2,half_hign);
 160   2                      display(3,half_low);
 161   2                      display(4,half_hign);
 162   2                      display(5,half_low);
 163   2                      display(6,half_hign);
 164   2                      display(7,half_low);
 165   2      
 166   2                      while(!KEY);
 167   2              } 
 168   1      }
 169                    
 170                          
 171               
 172                
 173                           
 174           
 175          
 176                
 177                          
 178          
 179          
C51 COMPILER V7.06   7289_KEY                                                              01/02/2008 08:48:42 PAGE 4   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    465    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3    ----
   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 + -