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

📄 4×4键盘.lst

📁 两个控制595的小程序。保证大家看后可以非常容易的学会使用它以及其他串进并出等器件
💻 LST
字号:
C51 COMPILER V7.01  4__4键臺                                                               09/22/2007 23:00:11 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE 4__4键臺
OBJECT MODULE PLACED IN 4×4键盘.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 4×4键盘.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          #include<Atmel\AT89X51.H>
   3          #include<INTRINS.H>
   4          
   5          sbit SDI=P1^2;   //HC595的数据
   6          sbit SRCLK=P1^3; //HC595的时钟
   7          sbit RCLK=P1^0;  //HC595的使能
   8          
   9          //延时函数
  10          void delayms(unsigned int ms)
  11          {
  12   1              unsigned int i=250;
  13   1              while(ms--)
  14   1              {
  15   2                      while(i--);
  16   2                      i=250;
  17   2              }
  18   1      }
  19          
  20          //键盘扫描函数
  21          unsigned char KeyScan()
  22          {
  23   1              unsigned char temp;
  24   1              unsigned char i;
  25   1              
  26   1              P2&=0xf0;
  27   1              if((P2&0xf0)!=0xf0)
  28   1              {
  29   2                      delayms(1);
  30   2                      if((P2&0xf0)!=0xf0)
  31   2                      {
  32   3                              for(i=0,temp=0xfe;i<4;i++,temp=(temp<<1)|1)
  33   3                              {
  34   4                                      P2=temp;
  35   4                                      delayms(2);
  36   4                                      if((P2&0xf0)!=0xf0)
  37   4                                      {
  38   5                                              temp=P2&0xf0;
  39   5                                              while((P2&0xf0)!=0xf0);
  40   5                                              if(temp==0xe0)return(i);
  41   5                                              else if(temp==0xd0)return(i+4);
  42   5                                              else if(temp==0xb0)return(i+8);
  43   5                                              else if(temp==0x70)return(i+12);
  44   5      
  45   5                                      }
  46   4                              }
  47   3                      }
  48   2              }
  49   1              return(0xff);
  50   1      
  51   1      }
  52          
  53          //送出一个字节到HC595
  54          void SendByte(unsigned char dat)
  55          {
C51 COMPILER V7.01  4__4键臺                                                               09/22/2007 23:00:11 PAGE 2   

  56   1              unsigned char i;
  57   1              for(i=0;i<8;i++)
  58   1              {
  59   2                      SRCLK=0;
  60   2                      if(dat&0x80)
  61   2                      SDI=1;
  62   2                      else
  63   2                      SDI=0;
  64   2                      SRCLK=1;
  65   2                      dat=dat<<1;
  66   2              }
  67   1      }
  68          
  69          //显示函数
  70          void Display(unsigned char dat1,unsigned char dat2)
  71          {
  72   1              unsigned char DisBuf[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  73   1                                      0x7f,0x6f,0x77,0x7c,0x39,0x51,0x79,0x71,0x00};
  74   1              SendByte(DisBuf[dat1]);
  75   1              SendByte(DisBuf[dat2]);
  76   1              RCLK=0;
  77   1              _nop_();
  78   1              _nop_();
  79   1              _nop_();
  80   1              _nop_();
  81   1              RCLK=1;
  82   1      }
  83          
  84          //键盘扫描主程序
  85          main()
  86          {
  87   1              unsigned char KeyValue;
  88   1              Display(0,0);
  89   1              while(1)
  90   1              {
  91   2                      KeyValue=KeyScan();
  92   2      
  93   2                      if(KeyValue!=0xff)
  94   2                      {
  95   3                              Display(KeyValue/10,KeyValue%10);
  96   3                      }
  97   2          }
  98   1      }


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