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

📄 16311.lst

📁 单片机键值测定程序
💻 LST
字号:
C51 COMPILER V7.50   16311                                                                 05/31/2008 10:36:53 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 16311
OBJECT MODULE PLACED IN 16311.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 16311.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include "define.h"
   3          #include "global.h"
   4          #include <regX52.H>
   5          #include <intrins.h>
   6          
   7          void _16311_DISPLAY(uchar ADDRESS,uint _DATA);
   8          void _16311_DA_send(uchar _16311_value,_COMMEND);
   9          extern void Initial_16311(void);
  10          
  11          bit BZ_key;
  12          uchar KEY_value;
  13          
  14          
  15          //---------------发送数剧-----------
  16          
  17          void _16311_DA_send(uchar _16311_value,_COMMEND)
  18          {
  19   1        uchar i;
  20   1      
  21   1                _16311_ST=0;
  22   1         for(i=0;i<8;i++)
  23   1          {   
  24   2                 _16311_CK=0;
  25   2                  if(_16311_value & 0x01)  //从低位开始
  26   2                        _16311_DA=1;
  27   2                         else _16311_DA=0;
  28   2                           _16311_value>>=1;
  29   2                               _nop_();
  30   2                   _nop_();
  31   2                   _nop_();
  32   2                               _16311_CK=1;
  33   2                                 _nop_();
  34   2                                 _nop_();
  35   2                                 _nop_();
  36   2                       }
  37   1                         if((_COMMEND==1) || (_COMMEND==2) || (_COMMEND==4) || (COMMEND==5))
  38   1                                         _16311_ST=1;
  39   1                           else if(_COMMEND==3)
  40   1                              _16311_ST=0;
  41   1      
  42   1                                       }
  43          //--------------接收数剧-------------------
  44          
  45          uchar _16311_DA_read(void)
  46          {
  47   1        uchar i;
  48   1        uchar _value=0;
  49   1                       _nop_();
  50   1                   _nop_();
  51   1                       _nop_();
  52   1         for(i=1;i<=8;i++)
  53   1          {
  54   2                _16311_CK=0;
  55   2                   _nop_();
C51 COMPILER V7.50   16311                                                                 05/31/2008 10:36:53 PAGE 2   

  56   2                   _nop_();
  57   2                       _nop_();
  58   2                _16311_CK=1;
  59   2                       _nop_();
  60   2                   _nop_();
  61   2                       _nop_();
  62   2                       _value>>=1;
  63   2                       _nop_();
  64   2                   _nop_();
  65   2                       _nop_();
  66   2                  if(_16311_DA==1)
  67   2                       _value=_value | 0x80;
  68   2              }
  69   1      return _value;
  70   1       }
  71          
  72          
  73          //--------------------接收按键数剧-------------------
  74          //--此函数通过KEY_value变量与BZ_key变量与外界联系。
  75          //---KEY_value为键值,BZ_key有按键按下的标志变量(用来判断是面板按键还是遥控器按键),
  76          void _16311_read_key(void)
  77             {
  78   1         uchar i,r,f,TEMP_KEY_VALUE[6];
  79   1         static uchar _key_temp;
  80   1      //---------------------------------------------------------------------------
  81   1      
  82   1                 _16311_DA_send(0x42,3);             //使能按键扫描(连扫).后面的3代表最
  83   1                                                     //后不发送高电平ST信号,直接读取键值.
  84   1             _16311_DA=1;
  85   1             for(i=0;i<6;i++)
  86   1                 {
  87   2             TEMP_KEY_VALUE[i]=_16311_DA_read(); 
  88   2                 
  89   2               if(TEMP_KEY_VALUE[i]>0x00) //continue;
  90   2                       {
  91   3                         f=i;
  92   3                         r=(f<<4)|f;
  93   3                 KEY_value=TEMP_KEY_VALUE[i]+r;
  94   3                         if(_key_temp==KEY_value) { BZ_key=0; _16311_ST=1; return; }//果上一次的键值与此次一样就返回。
  95   3                         else { _key_temp=KEY_value;  BZ_key=1;  _16311_ST=1;  return; }
  96   3                }
  97   2                        else if(i<=5){continue;}
  98   2                        else {_16311_ST=1; BZ_key=0;return;}
  99   2             }
 100   1               }
 101          //--------------------发送显示数据--------------------
 102          
 103          void _16311_DISPLAY(uchar ADDRESS,uint _DA)
 104          {
 105   1        uchar Add,y;
 106   1      
 107   1        _16311_DA_send(0x40,2);//设置为自动地址.
 108   1      
 109   1        Add=(0xC0 | ADDRESS);   //0XC0代表是地址指令,指令与地址加在一起后做为整条指令发送。
 110   1        _16311_DA_send(Add,3);   //发送地址命令模式。
 111   1        _16311_DA_send(_DA,3);  //发送数据
 112   1        _16311_DA_send(_DA>>8,5);
 113   1        _16311_DA_send(0x0C,1); //初始化命令1:15段13位。
 114   1        _16311_DA_send(0x8F,4);//开显示
 115   1        for(y=0;y<120;y++)
 116   1        ;
 117   1      }
C51 COMPILER V7.50   16311                                                                 05/31/2008 10:36:53 PAGE 3   

 118          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    234    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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