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

📄 key.lst

📁 c8051f350如何使用键盘中断, 实验目的:熟悉2*2键盘操作.按键后会在液晶屏上 显示所按下的键号,如按S1键,在液晶上显示S1.
💻 LST
字号:
C51 COMPILER V7.00  KEY                                                                    02/08/2009 09:03:38 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe key.c DB OE

stmt level    source

   1          //-----------------------------------------------------------------------------
   2          //实验目的:熟悉2*2键盘操作.按键后会在液晶屏上
   3          //显示所按下的键号,如按S1键,在液晶上显示S1.
   4          //-----------------------------------------------------------------------------
   5          // Includes
   6          //-----------------------------------------------------------------------------
   7          #include <c8051f350.h>                
   8          #include <INTRINS.H>
   9          #include <stdio.h>
  10          sbit    key1=P1^1;        
  11          sbit    key2=P1^3;
  12          sbit    key3=P1^4;
  13          sbit    key4=P1^5;
  14          unsigned long q;
  15          
  16          //--------------------------------
  17          void YJ_Init(void);
  18          void Write_CHAR(unsigned char yjchar);
  19          unsigned char key_in(void);
  20          //-----------------------------------------------------
  21          void delay(void)
  22          {
  23   1              int a=1000;
  24   1              while(a!=0)
  25   1              {
  26   2                      a--;
  27   2              }
  28   1      }
  29          
  30          /*----------------------------------------------------*/
  31          //按键连接到p1.1、p1.3、p1.4、P1.5,均为开漏输出
  32          unsigned char key_in(void)
  33          { XBR0 = 0x00;  
  34   1        P1=0xff;
  35   1         
  36   1      //      P1=0x72;
  37   1              if(key1==0)
  38   1              {
  39   2                      key1=1;
  40   2                      delay();//延时
  41   2                      if(key1==0)
  42   2                      {
  43   3      
  44   3                              while(key1==0);
  45   3                  XBR0 = 0x02;
  46   3                              return(0x31);//返回字符"1"表示按键S1按下
  47   3                      }
  48   2              }
  49   1      
  50   1              if(key2==0)
  51   1              {
  52   2                      key2=1;
  53   2                      delay();//延时
  54   2                      if(key2==0)
  55   2                      {
C51 COMPILER V7.00  KEY                                                                    02/08/2009 09:03:38 PAGE 2   

  56   3                              while(key2==0);
  57   3                  XBR0 = 0x02;
  58   3                              return(0x32);//返回字符"2"表示按键S2按下
  59   3                      }
  60   2              }
  61   1      
  62   1              if(key3==0)
  63   1              {
  64   2                      key3=1;
  65   2                      delay();//延时
  66   2                      if(key3==0)
  67   2                      {
  68   3                              while(key3==0);
  69   3                  XBR0 = 0x02;
  70   3                              return(0x33);//返回字符"3"表示按键S3按下
  71   3                      }
  72   2              }
  73   1      
  74   1              if(key4==0)
  75   1              {
  76   2                      key4=1;
  77   2                      delay();//延时
  78   2                      if(key4==0)
  79   2                      {
  80   3                              while(key4==0);
  81   3                  XBR0 = 0x02;
  82   3                              return(0x34);//返回字符"4"表示按键S4按下
  83   3                      }
  84   2              }
  85   1          XBR0 = 0x02;
  86   1              return(0);//返回0,表示没有按键按下
  87   1      }
  88          
  89          //---------------------------------------------
  90          void main(void) 
  91          {       
  92   1              unsigned char data1;
  93   1      
  94   1         PCA0MD &= ~0x40; // WDTE = 0 (watchdog timer enable bit)
  95   1         OSCICN |= 0x03; // Set internal oscillator to highest
  96   1                         // setting (24500000)
  97   1              P0SKIP    = 0x7E;
  98   1                       
  99   1      
 100   1          XBR0 = 0x00; // XBAR0: Initial Reset value
 101   1          XBR1 = 0x40; // XBAR1: Initial Reset value
 102   1      
 103   1         
 104   1         
 105   1              while(1)
 106   1              {
 107   2                      data1=key_in();                                         //读按键
 108   2                      if(data1!=0)                                            //有按键按下,显示对应的按键
 109   2                      {
 110   3                              YJ_Init();                     //LCD初始化
 111   3                                                 //准备送数据
 112   3                              for(q=0;q<1000;q++);
 113   3                              Write_CHAR(0x54);       
 114   3                              Write_CHAR(data1);                                      //控制LCD       
 115   3                              for(q=0;q<1000;q++);
 116   3      
 117   3                      }
C51 COMPILER V7.00  KEY                                                                    02/08/2009 09:03:38 PAGE 3   

 118   2              }
 119   1      
 120   1      }


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