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

📄 key8x8.lst

📁 8051 8*8KEY
💻 LST
字号:
C51 COMPILER V7.06   KEY8X8                                                                08/15/2007 13:23:55 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE KEY8X8
OBJECT MODULE PLACED IN key8x8.OBJ
COMPILER INVOKED BY: E:\Program Files\C51\BIN\C51.EXE key8x8.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*****************************************************************/ 
   2          /*                                                               */                                       
             -                         
   3          /*名称:                   读键+显示程序                         */                                       
             -                                                                                                                        
             -            
   4          /*功能:           读取当前按键值,由数码管显示出来。            */                                       
             -             
   5          /*难度等级:                   中                                */                                       
             -                              
   6          /* 作者:                  zengrenliang                          */
   7          /* 版权:           http://www.51kaifa.com                       */
   8          /*编写日期:        2006.05.19                                   */                                       
             -                                                                                                                        
             -                                              
   9          /*****************************************************************/
  10          
  11          
  12          #include<reg52.h>
  13          #define  uchar  unsigned char
  14          
  15          sbit addr0 = P1^4;//系统片选地址线0
  16          sbit addr1 = P1^5;//系统片选地址线1
  17          sbit addr2 = P1^6;//系统片选地址线2
  18          sbit addr3 = P1^7;//系统片选地址线3
  19          sbit lck = P3^5;
  20          //行扫描数组
  21          uchar code scan[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//row0--row7
  22          //数码管显示的段码表
  23          uchar code table[18] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,//0,1,2,3,4,5
  24                                 0x82,0xf8,0x80,0x90,0x88,0x83,//6,7,8,9,a,b
  25                                 0xc6,0xa1,0x86,0x8e,0xbf,0xff};//c,d,e,f,-,空格
  26          
  27          uchar dispbuf[8]; //显示缓冲区                         
  28          
  29          /*****************************延时函数**************************/
  30          
  31          void delay (unsigned int us)  
  32          {
  33   1        while(us--);
  34   1      }
  35          
  36          /******************************显示+读键*************************/
  37          
  38          void vLedKey_Scan()
  39          {  unsigned char i,key,value;  
  40   1      
  41   1          for(i=0;i<8;i++){
  42   2             addr3 = 0;
  43   2             addr0 = 0;
  44   2             addr1 = 1;
  45   2             addr2 = 0;//开发板上U4(74HC574)的片选地址
  46   2             P0 =table[dispbuf[0]]; //取一行显示数据 
  47   2             addr3 = 1; 
  48   2             addr3 = 0;//在U4的11脚(锁存信号)产生上升沿
C51 COMPILER V7.06   KEY8X8                                                                08/15/2007 13:23:55 PAGE 2   

  49   2             P2 = scan[i];//取row0--row7行扫描数据
  50   2             addr0 = 0;
  51   2             addr1 = 0;
  52   2             addr2 = 1;//开发板上U6(74HC244)的片选地址
  53   2             addr3 = 1;
  54   2             P0 = 0xff;//准备读取按键
  55   2             if(P0 !=0xff)
  56   2              {value = 0;
  57   3               key = ~P0;
  58   3               while(key){
  59   4                  value++;
  60   4                  key = key /2;
  61   4               }
  62   3               dispbuf[0] = 8*i + value;//计算十六进制键值
  63   3              }
  64   2             addr3 = 0;//键值读取完成,使U6无效
  65   2             delay(50); //延时50us
  66   2             }
  67   1       }
  68          
  69          /*******************************主函数***********************/
  70          
  71          main()
  72          { uchar i;   
  73   1        for(i=0;i<8;i++)
  74   1         dispbuf[i] = 0;
  75   1        P1= 0x00;
  76   1        lck = 0;
  77   1        lck = 1;
  78   1        while(1){
  79   2          vLedKey_Scan(); //显示,读键扫描 
  80   2        }
  81   1      }
  82          
  83          /********************************结束************************/


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