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

📄 k1-k4-keyconut.lst

📁 单片机中LED显示/数码管显示/键盘控制/蜂鸣器输出/中断应用/定时器和计数器/串口通信/键控看门狗/数据交换
💻 LST
字号:
C51 COMPILER V7.08   K1_K4_KEYCONUT                                                        12/20/2006 16:53:08 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE K1_K4_KEYCONUT
OBJECT MODULE PLACED IN k1-k4-keyconut.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE k1-k4-keyconut.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************/
   2          /*                                                                 */
   3          /* ME500单片机开发系统演示程序 - 独立键控制LED灯                   */
   4          /*                                                                 */
   5          /* LED显示                                                         */
   6          /*                                                                 */
   7          /* 版本: V1.0 (2006/11/20)                                        */
   8          /* 作者: gguoqing (Email: gguoqing@willar.com)                    */
   9          /* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界) */
  10          /* 时间: 2006/07/19                                               */
  11          /*                                                                 */
  12          /*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved */
  13          /*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!       */
  14          /*                                                                 */
  15          /*******************************************************************/
  16           
  17          //对K1进行按键次数计数,逐个点亮LED0-LED7。
  18          //K2按下后,点亮LED0-LED3。
  19          //K3按下后,点亮LED4-LED7。
  20          //K4按下后,关闭LED。
  21          
  22          /********************************************************/
  23          
  24          #include <reg52.h>
  25          unsigned char k_scan();
  26          unsigned char k_pro();
  27          unsigned char k_new,k_old;
  28          unsigned char k;
  29          unsigned char k1_count=0;
  30          unsigned char k1_pro();
  31          
  32          void  delay(unsigned char m);
  33          
  34          sbit k1=P1^4;   sbit k2=P1^5;
  35          sbit k3=P1^6;   sbit k4=P1^7; 
  36          sbit led0=P0^0; sbit led1=P0^1;
  37          sbit led2=P0^2; sbit led3=P0^3;
  38          sbit led4=P0^4; sbit led5=P0^5;
  39          sbit led6=P0^6; sbit led7=P0^7;
  40          
  41          /********************************************************/
  42          void main(void)
  43          {  
  44   1         P0=0xff;
  45   1         k_old=0x00;      
  46   1      
  47   1         while(1)
  48   1        {
  49   2          k_new=k_scan();
  50   2      
  51   2          if(k_new!=k_old)
  52   2          { delay(10);
  53   3            if(k_new!=k_old)
  54   3            {
  55   4                  k_old=k_new;
C51 COMPILER V7.08   K1_K4_KEYCONUT                                                        12/20/2006 16:53:08 PAGE 2   

  56   4              k=k_pro();       
  57   4                }
  58   3          }
  59   2       
  60   2          switch(k)
  61   2           {
  62   3             case 1: k1_pro(); break;
  63   3             case 2: P0=0xf0;  break;
  64   3             case 3: P0=0x0f;  break;
  65   3             case 4: P0=0xff; k1_count=0; break;
  66   3             default:  break;
  67   3           }
  68   2        }
  69   1      }
  70          
  71          /********************************************************/
  72          unsigned char k1_pro()
  73          {
  74   1         k1_count++;
  75   1        
  76   1         switch(k1_count)
  77   1          {
  78   2            case 1: {led0 = 0; delay(100);} break;
  79   2            case 2: {led1 = 0; delay(100);} break;
  80   2            case 3: {led2 = 0; delay(100);} break;
  81   2            case 4: {led3 = 0; delay(100);} break;
  82   2            case 5: {led4 = 0; delay(100);} break;
  83   2            case 6: {led5 = 0; delay(100);} break;
  84   2            case 7: {led6 = 0; delay(100);} break;
  85   2                case 8: {led7 = 0; delay(100);} break;
  86   2      
  87   2            default: 
  88   2                 { 
  89   3                       P0=0xff;
  90   3               k1_count=0;
  91   3                 }
  92   2                       break;
  93   2          }
  94   1          k=0x00;
  95   1          return(k1_count);
  96   1      }
  97          /********************************************************/
  98          unsigned char k_pro()
  99           {
 100   1          switch (k_new)
 101   1          {
 102   2            case 0x01: k=1;  break;
 103   2            case 0x02: k=2;  break;
 104   2            case 0x04: k=3;  break;
 105   2            case 0x08: k=4;  break;
 106   2              
 107   2            default:   break;
 108   2          }
 109   1           return(k);
 110   1       }
 111          
 112          /********************************************************/
 113          unsigned char k_scan()
 114          {  
 115   1          P1=0xff;
 116   1          k_new=0x00;
 117   1          k_new=(~(P1) & 0xf0)>>4;
C51 COMPILER V7.08   K1_K4_KEYCONUT                                                        12/20/2006 16:53:08 PAGE 3   

 118   1      
 119   1          return(k_new);    //无键按下

⌨️ 快捷键说明

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