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

📄 adc_key.lst

📁 实现ucos任务调度时保存LCD上的显示信息
💻 LST
字号:
C51 COMPILER V8.02   ADC_KEY                                                               05/06/2008 18:29:59 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE ADC_KEY
OBJECT MODULE PLACED IN ADC_Key.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key\ADC_Key.c LARGE BROWSE INCDIR(.\dataflash;.\lcd;.\task;.\uart;.\ucos;.\
                    -key) DEBUG OBJECTEXTEND PRINT(.\ADC_Key.lst) OBJECT(ADC_Key.obj)

line level    source

   1          #include "includes.h"
   2          
   3          extern OS_EVENT * msgq_key;
   4          /******************************************************
   5          *    P2.1为ADC模拟输入端口
   6          ******************************************************/
   7          void PORT2_Init(void)
   8          {
   9   1              P2MDIN &=0xFD;                                                                  //模拟输入
  10   1              P2SKIP |=0x02;                                                                  //交叉开关跳过
  11   1      }
  12          
  13          
  14          void Delay(unsigned int i)
  15          {
  16   1              unsigned char j;
  17   1          for(;i>0;i--)
  18   1          {
  19   2                      for(j = 0;j<100;j++);
  20   2              }
  21   1      }
  22          
  23          void ADC0_Init(void)
  24          {
  25   1              AMX0P =0x01;                                                                    //P2.1为ADC0的模拟输入
  26   1              AMX0N =0x1F;                                                            //单端方式
  27   1              ADC0CF =0x78;                                                           //右对齐,16分频  CLK(SAR)=SYSCLK/(AD0SC+1)=3MHz
  28   1              ADC0CN =0x80;                                                           //ADC0允许,工作于正常方式,向AD0BUSY写1时启动ADC0转换
  29   1              REF0CN =0x0A;                                                           //VDD为参考电压,关温度传感器,关偏压和电压基准
  30   1              EIE1 |=0x08;                                                            //使能ADC0中断
  31   1      
  32   1              Delay(2000);                                                                    //延时等候ADC0初始化稳定   
  33   1      }
  34          
  35          
  36          void ADC0_isr(void) interrupt INTERRUPT_ADC0_EOC    //ADC0转换结束中断函数
  37          {                          
  38   1              unsigned int ADCNum;
  39   1              static char key,flag=0;
  40   1              char key_value;   
  41   1      
  42   1          AD0INT =0;                                                          //清ADC0转换结束中断标志
  43   1          AD0WINT =0;                                                         //清ADC0窗口比较匹配中断标志,即未发生匹配,不会发生中断
  44   1      
  45   1          ADCNum =(ADC0H<<8)+ADC0L;  
  46   1      
  47   1          if((ADCNum < 496) || (ADCNum > 528))                        //有按键处在按下的状态
  48   1          {
  49   2              if(!flag)
  50   2                      {
  51   3                      flag =1;    
  52   3                              key =(ADCNum+16)>>5;                            //首次取键值
  53   3                      } 
  54   2                      else
C51 COMPILER V8.02   ADC_KEY                                                               05/06/2008 18:29:59 PAGE 2   

  55   2                      {
  56   3                              if(key == ((ADCNum+16)>>5))                     //两次采样结果是否相等  
  57   3                                      key =(ADCNum+16)>>5;                    //取第二次键值为最终键值
  58   3                      }                          
  59   2              
  60   2              } 
  61   1              switch(key)
  62   1              {
  63   2                      case 0:
  64   2                              key_value ='*';
  65   2                              OSQPost(msgq_key, (void *)(& key_value));
  66   2                              break;
  67   2                      case 1:
  68   2                              key_value ='0';
  69   2                              OSQPost(msgq_key, (void *)(& key_value));
  70   2                              break;
  71   2                      case 2:
  72   2                              key_value ='#';
  73   2                              OSQPost(msgq_key, (void *)(& key_value));
  74   2                              break;
  75   2                      case 3:
  76   2                              key_value ='9';
  77   2                              OSQPost(msgq_key, (void *)(& key_value));
  78   2                              break;
  79   2                      case 4:
  80   2                              key_value ='8';
  81   2                              OSQPost(msgq_key, (void *)(& key_value));
  82   2                              break;
  83   2                      case 5:
  84   2                              key_value ='7';
  85   2                              OSQPost(msgq_key, (void *)(& key_value));
  86   2                              break;
  87   2                      case 6:
  88   2                              key_value ='4';
  89   2                              OSQPost(msgq_key, (void *)(& key_value));
  90   2                              break;
  91   2                      case 7:
  92   2                              key_value ='5';
  93   2                              OSQPost(msgq_key, (void *)(& key_value));
  94   2                              break;
  95   2                      case 8:
  96   2                              key_value ='6';
  97   2                              OSQPost(msgq_key, (void *)(& key_value));
  98   2                              break;
  99   2                      case 9:
 100   2                              key_value ='3';
 101   2                              OSQPost(msgq_key, (void *)(& key_value));
 102   2                              break;
 103   2                      case 10:
 104   2                              key_value ='2';
 105   2                              OSQPost(msgq_key, (void *)(& key_value));
 106   2                              break;
 107   2                      case 11:
 108   2                              key_value ='1';
 109   2                              OSQPost(msgq_key, (void *)(& key_value));
 110   2                              break;
 111   2                      case 12:
 112   2                              key_value =HANG_UP;
 113   2                              OSQPost(msgq_key, (void *)(& key_value));
 114   2                              break;
 115   2                      case 13:
 116   2                              key_value =KEY_DOWN;
C51 COMPILER V8.02   ADC_KEY                                                               05/06/2008 18:29:59 PAGE 3   

 117   2                              OSQPost(msgq_key, (void *)(& key_value));
 118   2                              break;
 119   2                      case 14:
 120   2                              key_value =KEY_LEFT;
 121   2                              OSQPost(msgq_key, (void *)(& key_value));
 122   2                              break;
 123   2                      case 15:
 124   2                              key_value =OK_ENTER;
 125   2                              OSQPost(msgq_key, (void *)(& key_value));
 126   2                              break;
 127   2                      case 17:
 128   2                              key_value =KEY_RIGHT;
 129   2                              OSQPost(msgq_key, (void *)(& key_value));
 130   2                              break;
 131   2                      case 18:
 132   2                              key_value =KEY_UP;
 133   2                              OSQPost(msgq_key, (void *)(& key_value));
 134   2                              break;
 135   2                      case 19:
 136   2                              key_value =OUT_MENU;
 137   2                              OSQPost(msgq_key, (void *)(& key_value));
 138   2                              break;
 139   2                      case 20:
 140   2                              key_value =IN_MENU;
 141   2                              OSQPost(msgq_key, (void *)(& key_value));
 142   2                              break;
 143   2                      default:
 144   2                              break;
 145   2              }
 146   1      }   


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