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

📄 hanglishikeybanchen.lst

📁 stc/at89c51 的4乘4行列式按键程序
💻 LST
字号:
C51 COMPILER V6.23a  HANGLISHIKEYBANCHEN                                                   03/16/2006 11:40:05 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE HANGLISHIKEYBANCHEN
OBJECT MODULE PLACED IN .\HangliShiKeyBanChen.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ..\SCR\HangliShiKeyBanChen.c BROWSE DEBUG OBJECTEXTEND PRINT(.\HangliShiKey
                    -BanChen.lst) OBJECT(.\HangliShiKeyBanChen.obj) 

stmt level    source

   1          
   2          
   3          
   4          
   5          //c语言  行列键盘数码管加发光二级管
   6          
   7              #include"at89x52.h"
   8              sbit LampFull=P3^7;//红色
   9                  sbit LampEempty=P3^6; //绿色
  10                  unsigned char OverFlag=0;
  11                  #define KeyBufSize      12
  12                  unsigned char a[]={0x3f,0x06,0x5b,0x4f,0x66 ,0x6d ,0x7d ,0x07 ,0x7f ,0x6f ,0x77 ,0x7c};
  13                  unsigned char dispbuf[KeyBufSize],JianZi,PointW,PointR;  //全局变量
  14                  void delay(unsigned char j) 
  15              {
  16   1                unsigned char m,k;
  17   1                for(m=0;m<j;m++)
  18   1                for(k=0;k<5;k++);
  19   1               }
  20                  unsigned char PutKey()
  21                  { 
  22   1               if((PointW-PointR)==KeyBufSize-1) {LampEempty=0;LampFull=1;return 255;}
  23   1           if(PointW>=KeyBufSize) { PointW=0; OverFlag=1;} 
  24   1               if((PointW==PointR)&(OverFlag==1)){LampEempty=0;LampFull=1;OverFlag=0;return 255;}
  25   1               dispbuf[PointW]=JianZi;
  26   1               PointW++;
  27   1              }
  28                  unsigned char GetKey()
  29                  { unsigned char x;
  30   1                if((PointW==PointR)&(OverFlag==0)) {LampEempty=1;LampFull=0;return 255;}
  31   1                if(PointR>=KeyBufSize) PointR=0; 
  32   1                x=dispbuf[PointR];
  33   1            PointR++;
  34   1                return x;
  35   1               }
  36          
  37              void Key()
  38                  {
  39   1               unsigned char x,y,key;
  40   1               P2=0x0f;                               //低四位输入1,高四位输出0
  41   1               x=P2;
  42   1               x=x&0x0f;                      //P2输入后,清高四位,作为X值
  43   1               P2=0xf0;                               //高四位输入1,低四位输出0
  44   1               y=P2;
  45   1           y=y&0xf0;  //P2输入后移位到低四位,并清高四位,作为Y值
  46   1           key=x|y;
  47   1               key=key&0xfe;
  48   1               if(key==254) return;
  49   1               switch(key)
  50   1                 {
  51   2                  case 236: JianZi=3; break;
  52   2                      case 234: JianZi=2; break;
  53   2                      case 230: JianZi=1; break;
  54   2      
C51 COMPILER V6.23a  HANGLISHIKEYBANCHEN                                                   03/16/2006 11:40:05 PAGE 2   

  55   2                      case 220: JianZi=6; break;
  56   2                      case 218: JianZi=5; break;
  57   2                      case 214: JianZi=4; break;
  58   2      
  59   2                      case 188: JianZi=9; break;
  60   2                      case 186: JianZi=8; break;
  61   2                      case 182: JianZi=7; break;
  62   2      
  63   2                      case 124: JianZi=0; break;
  64   2                      case 122: JianZi=11; break;
  65   2                      case 118: JianZi=10; break;
  66   2                       }
  67   1                  PutKey();          
  68   1              }
  69             void display(void) //显示函数
  70                   {
  71   1                static unsigned char i,j;
  72   1            j=i;
  73   1                i=GetKey();
  74   1                if (i==255)
  75   1             { P0=a[j];
  76   2                  i=j;}
  77   1                 else P0=a[i];
  78   1                }
  79                  main()
  80              {
  81   1          LampFull=0;
  82   1          LampEempty=0;
  83   1              while(1)
  84   1              {
  85   2           Key();
  86   2               display();
  87   2               LampFull=0;
  88   2           LampEempty=0;
  89   2               }
  90   1          }
  91          
  92          


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