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

📄 key.lst

📁 IIC READ AND WRITE iic器件的读取 连续读取和页读取
💻 LST
字号:
C51 COMPILER V8.08   KEY                                                                   09/30/2008 16:39:08 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include        <reg52.h>
   2          #include        "key.h"
   3          #include "delay.h"
   4          
   5          unsigned char ledfast=0;                 //LED每秒闪烁3次时使用的中间变量
   6          unsigned char ledslow=0;                 //LED每秒闪烁1次时使用的中间变量
   7          unsigned char keyvalue=0X03;    //键值0-短按,1-长按,2-亮,3-灭
   8          unsigned char count=0;                  //按键长按、短按计数值
   9          /*
  10          KEY     =P0^4;
  11          MICKEY  =P0^5;
  12          MICLED  =P2^0;
  13          */
  14          /*MICKEY\KEY状态检测函数*/
  15          void KeyStatus(void)
  16          {
  17   1        unsigned char temp,temp1,temp2;
  18   1        
  19   1        temp=P0&0x30;
  20   1        Delay(500);                                   //消除抖动
  21   1        temp1=P0&0X30;
  22   1        
  23   1        if((temp!=0x30)&&(temp1==temp))//有按键按下
  24   1        {
  25   2              DelayMs(20);    //延时等待按键抬起
  26   2              temp2=P0&0x30;
  27   2              switch(temp1)
  28   2              {
  29   3                      case 0x10:                      
  30   3                              if(temp2!=0x10)//按键抬起
  31   3                              {
  32   4                                      if(MICLED==OFF) keyvalue=2;
  33   4                                      else keyvalue=3;
  34   4                              }
  35   3                              break;  
  36   3                                      
  37   3                      case 0x20:
  38   3                              if(temp2!=0x20)//按键抬起
  39   3                              {       
  40   4                                      if(count!=10) keyvalue=0;//KEY短按抬起
  41   4                                      else count=0;                   //长按抬起,计数清零
  42   4                              }
  43   3                              else
  44   3                              {
  45   4                                      if(count==10)   keyvalue=1;     //长按
  46   4                                      else count++;
  47   4                              }
  48   3                              break;  
  49   3                                      
  50   3                      default: break;                                 
  51   3                      }
  52   2              }
  53   1      }
  54          
  55          /*键值处理函数*/
C51 COMPILER V8.08   KEY                                                                   09/30/2008 16:39:08 PAGE 2   

  56          void KeyDeal(void)
  57          {
  58   1              switch(keyvalue)
  59   1              {
  60   2                      case 0: MICLED=ledfast;break;                                   
  61   2                      case 1: MICLED=ledslow;break;
  62   2                      case 2: MICLED=ON;break;
  63   2                      case 3: MICLED=OFF;break;
  64   2                      default:break;
  65   2              }
  66   1      }
  67          
  68          /*设置键值函数*/
  69          void Setkeyvalue(unsigned char value)
  70          {
  71   1              keyvalue=value;
  72   1      }
  73          
  74          
  75          /*T2中断函数,用作控制1秒内D4闪烁的次数*/
  76          void Timer2_INTR() interrupt 5                                          //35ms                  
  77          {
  78   1              static unsigned char time2_counter;                     //静态变量,用于计算T2的溢出次数
  79   1              time2_counter++;                        
  80   1              if(time2_counter%7==0)  ledfast=~ledfast;                                    //溢出5次为约为1/3秒,改变LED快闪的临时变量
  81   1              if(time2_counter==22)
  82   1              {
  83   2                              time2_counter=0;                             //溢出次数清零.重新计数
  84   2                              ledslow=~ledslow;                               //溢出16次为约为1秒,改变LED慢闪的临时变量
  85   2              }
  86   1              RCAP2H=0x00;                                            //定时器置初值
  87   1              RCAP2L=0x00;
  88   1              TF2=0;                                                                                  //T2定时器需手动清除溢出标志
  89   1      }
  90          
  91          /*T2初始函数*/
  92          void    InitTimer2()
  93          {
  94   1              RCAP2H=0x00;                                            //定时器置初值
  95   1              RCAP2L=0x00;
  96   1              EA=1;                                                   //打开中断总开关
  97   1              ET2=1;                                                  //允许T2中断
  98   1              TR2=1;                                                  //启动T2中断
  99   1      }
 100          


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