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

📄 key_scan.lst

📁 一个基于51单片机的定时报警设计电路及程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.08   KEY_SCAN                                                              04/18/2008 23:24:27 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE KEY_SCAN
OBJECT MODULE PLACED IN key_scan.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE key_scan.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include<ds1307.h>
   3          
   4          #define KEY_IDEL 0x00
   5          #define KEY_DELAY 0x01
   6          #define WAIT_KEY_OPEN 0x02
   7          #define DISP_TIME  0x03
   8          #define SET_TIME   0x04
   9          #define SET_ALARM_TIME 0x05
  10          #define DISP_ALARM_TIME 0x06
  11          
  12          #define KEY_STATE 0xff
  13          #define KEY_DELAY_TIME 10
  14          
  15          sbit BEEP=P1^2;
  16          
  17          unsigned char time_base;
  18          unsigned char led_buf[6];
  19          unsigned char disflag[6]={0x20,0x10,0x08,0x04,0x02,0x01};
  20          unsigned char KeyDelaytime;
  21          unsigned char key;
  22          unsigned char Key_v;
  23          unsigned char Key45_v;
  24          unsigned char Keystate;
  25          unsigned char n,flag;
  26          unsigned char Sec, Min, Hrs;
  27          unsigned char Machine_State;
  28          unsigned char led_control;
  29          unsigned char alarm_disp_contol;
  30          unsigned char alarm_conter;
  31          unsigned char alarm_time[9][2];
  32          
  33          void key_pro(unsigned char Key_v)
  34          {
  35   1              unsigned char min_low,min_high,hrs_low,hrs_high,i;
  36   1      //      unsigned char min_lowtemp,min_hightemp,hrs_lowtemp,hrs_hightemp;
  37   1              switch(Key_v&0xff)
  38   1              {
  39   2                      case 0xfe ://功能键
  40   2                              switch(Machine_State)
  41   2                              {
  42   3                                      case DISP_TIME:
  43   3                                              led_control=1;
  44   3                                              Machine_State=SET_TIME;
  45   3                                              for(i=0;i<6;i++)
  46   3                                              {
  47   4                                                      led_buf[i]=zimo[0];
  48   4                                              }
  49   3                                              led_buf[4]=zimo[1];
  50   3                                      break;
  51   3                                      case SET_TIME:  
  52   3                                              led_control=1;
  53   3                                              Machine_State=SET_ALARM_TIME;
  54   3                                              for(i=0;i<6;i++)
  55   3                                              {
C51 COMPILER V7.08   KEY_SCAN                                                              04/18/2008 23:24:27 PAGE 2   

  56   4                                                      led_buf[i]=zimo[0];
  57   4                                              }
  58   3                                              led_buf[4]=zimo[2];
  59   3                                      break;
  60   3                                      case SET_ALARM_TIME:
  61   3                                              Machine_State=DISP_ALARM_TIME;
  62   3                                              for(i=0;i<6;i++)
  63   3                                              {
  64   4                                                      led_buf[i]=zimo[0];
  65   4                                              }
  66   3                                              led_buf[4]=zimo[3];
  67   3                                      break;
  68   3                                      case DISP_ALARM_TIME:
  69   3                                              Machine_State=DISP_TIME;
  70   3                                      break;
  71   3                               }
  72   2                         break;
  73   2                      case 0xfd ://确认键
  74   2                              switch(Machine_State)
  75   2                              {
  76   3                                      case DISP_TIME:
  77   3                                              BEEP=0;
  78   3                                      case SET_TIME:
  79   3                                              switch(led_control)
  80   3                                              {
  81   4                                                      case 2:
  82   4                                                              min_low=Key45_v;
  83   4                                                      break;
  84   4                                                      case 3:
  85   4                                                              min_high=Key45_v;
  86   4                                                      break;
  87   4                                                      case 4:
  88   4                                                              hrs_low=Key45_v;
  89   4                                                      break;
  90   4                                                      case 5:
  91   4                                                              hrs_high=Key45_v;
  92   4                                                      break;
  93   4                                              }
  94   3                                              Key45_v=0;
  95   3                                              led_control++;
  96   3                                              if(led_control==6)
  97   3                                              {
  98   4                                                      Sec=0x00;
  99   4                                                      Min=(min_high<<4)|min_low;
 100   4                                                      Hrs=(hrs_high<<4)|hrs_low;
 101   4                                                      Init_Rtc(Sec,Min,Hrs);
 102   4                                                      Machine_State=DISP_TIME;
 103   4                                                      led_control=0;
 104   4                                              }
 105   3                                      break;
 106   3                                      case SET_ALARM_TIME:
 107   3                                              switch(led_control)
 108   3                                              {
 109   4                                                      case 2:
 110   4                                                              min_low=Key45_v;
 111   4                                                      break;
 112   4                                                      case 3:
 113   4                                                              min_high=Key45_v;
 114   4                                                      break;
 115   4                                                      case 4:
 116   4                                                              hrs_low=Key45_v;
 117   4                                                      break;
C51 COMPILER V7.08   KEY_SCAN                                                              04/18/2008 23:24:27 PAGE 3   

 118   4                                                      case 5:
 119   4                                                              hrs_high=Key45_v;
 120   4                                                      break;
 121   4                                              }
 122   3                                              Key45_v=0;
 123   3                                              led_control++;
 124   3                                              if(led_control==6)
 125   3                                              {
 126   4                                                      alarm_time[alarm_conter][0]=(min_high<<4)|min_low;
 127   4                                                      alarm_time[alarm_conter][1]=(hrs_high<<4)|hrs_low;
 128   4                                                      alarm_conter++;
 129   4                                                      led_control=0;
 130   4                                                      if(alarm_conter==9)
 131   4                                                      {
 132   5                                                              alarm_conter=0;
 133   5                                                      }
 134   4                                                      Machine_State=DISP_TIME;
 135   4                                              }
 136   3                                      break;
 137   3                                      case DISP_ALARM_TIME:
 138   3                                              alarm_disp_contol++;
 139   3                                              if(alarm_disp_contol==alarm_conter)
 140   3                                              {
 141   4                                                      Machine_State=DISP_TIME;
 142   4                                                      alarm_disp_contol=0;

⌨️ 快捷键说明

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