lesson 5_3.lst

来自「有51单片机C语言基础后在较短时间内学会51单片机C。」· LST 代码 · 共 153 行

LST
153
字号
C51 COMPILER V8.05a   LESSON_5_3                                                           02/03/2009 16:43:09 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE LESSON_5_3
OBJECT MODULE PLACED IN lesson 5_3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lesson 5_3.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include<intrins.h>
   3          #define uint unsigned int
   4          #define uchar unsigned char
   5          uchar num,temp,temp1,i,row;
   6          sbit dula=P2^6;
   7          sbit wela=P2^7;
   8          uchar code table[]={
   9          0x3f,0x06,0x5b,0x4f,
  10          0x66,0x6d,0x7d,0x07,
  11          0x7f,0x6f,0x77,0x7c,
  12          0x39,0x5e,0x79,0x71};
  13          void delay(uint z);
  14          void initial();
  15          void display();
  16          void jianche();
  17          void jianzhi();
  18          void main()
  19          {
  20   1          initial();
  21   1              while(1)
  22   1              {
  23   2      
  24   2                      P3=0xf0;
  25   2                      temp=P3;
  26   2                      if(temp!=0xf0)          //判断是否有键按下
  27   2                      {       
  28   3                              P3=0xfe; row=0xfe;       //扫描第一行
  29   3                              jianche();
  30   3                      
  31   3                              P3=0xfd; row=0xfd;       //扫描第一行
  32   3                              jianche();
  33   3                      
  34   3                              P3=0xfb; row=0xfb;       //扫描第一行
  35   3                              jianche();
  36   3                      
  37   3                              P3=0xf7; row=0xf7;        //扫描第一行
  38   3                              jianche();
  39   3                       }         
  40   2                 
  41   2              }
  42   1      }
  43          
  44          void initial()
  45          {
  46   1              num=0;
  47   1              temp=0;
  48   1      
  49   1              temp1=0xfe;
  50   1              P1=temp1;
  51   1      
  52   1              wela=1;
  53   1              P0=0xfe;
  54   1              wela=0;
  55   1              
C51 COMPILER V8.05a   LESSON_5_3                                                           02/03/2009 16:43:09 PAGE 2   

  56   1              dula=1;
  57   1              P0=0x00;
  58   1              dula=0; 
  59   1      }
  60          
  61          void display()
  62          {
  63   1              dula=1;
  64   1              P0=table[num];
  65   1              dula=0;
  66   1      
  67   1              temp1=_crol_(temp1,1);
  68   1              P1=temp1;
  69   1      }
  70          
  71          void jianche()
  72          {
  73   1                              temp=P3;
  74   1                              temp=temp&0xf0;
  75   1                              if(temp!=0xf0)          //判断是否有键按下
  76   1                              {
  77   2                                      delay(5);               //去抖动
  78   2                                      temp=P3;
  79   2                                  temp=temp&0xf0;
  80   2                                      if(temp!=0xf0)   //再判断是否真的键按下
  81   2                                      {
  82   3      
  83   3                                          jianzhi();
  84   3      
  85   3                                              temp=P3; //必须从新读P3,否则显示乱码
  86   3                                          while(P3!=row);  //判断是否松手
  87   3                                              delay(5);                  //松手后去抖动
  88   3                                              display();
  89   3                                       }
  90   2                              }
  91   1      }
  92          
  93          void jianzhi()
  94          {
  95   1              switch(temp)
  96   1              {
  97   2                      case 0xe0: {if(row==0xfe) num=0;
  98   3                                         if(row==0xfd) num=4;
  99   3                                         if(row==0xfb) num=8;
 100   3                                         if(row==0xf7) num=12;} 
 101   2                             break;
 102   2                      case 0xd0: {if(row==0xfe) num=1;
 103   3                                         if(row==0xfd) num=5;
 104   3                                         if(row==0xfb) num=9;
 105   3                                         if(row==0xf7) num=13;} 
 106   2                             break;
 107   2                      case 0xb0: {if(row==0xfe) num=2;
 108   3                                         if(row==0xfd) num=6;
 109   3                                         if(row==0xfb) num=10;
 110   3                                         if(row==0xf7) num=14;} 
 111   2                             break;
 112   2                      case 0x70: {if(row==0xfe) num=3;
 113   3                                         if(row==0xfd) num=7;
 114   3                                         if(row==0xfb) num=11;
 115   3                                         if(row==0xf7) num=15;} 
 116   2                             break;
 117   2              }
C51 COMPILER V8.05a   LESSON_5_3                                                           02/03/2009 16:43:09 PAGE 3   

 118   1      }
 119          
 120          void delay(uint z)
 121          {
 122   1              uint x,y;
 123   1              for(x=z;x>0;x--)
 124   1                      for(y=110;y>0;y--);
 125   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    345    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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