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

📄 key.lst

📁 这是我写的一个51内核对APR6008语音储存播放ic的底层驱动程式!spi通讯方式.在89s52上面调试通过!
💻 LST
字号:
C51 COMPILER V7.10   KEY                                                                   07/02/2005 14:18:18 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN .\key.obj
COMPILER INVOKED BY: D:\PROGRAM FILES\KEIL\C51\BIN\C51.EXE ..\..\..\..\电子文档\MON51\daxiadisk\光盘\学习板\C51\key.c BR
                    -OWSE DEBUG OBJECTEXTEND PRINT(.\key.lst) OBJECT(.\key.obj)

line level    source

   1          //**********************************************************************************
   2          //**********************************************************************************
   3          //键盘码读取函数及蜂鸣器驱动
   4          #include <reg52.h>
   5          #include "APR6008_DRIVER.H"
   6          #define keypin  P2
   7          //入口:检测按键延时的长度,一般取1000
   8          //返回:键值,返回0表示无键按下 
   9          unsigned char getkey(unsigned int t){
  10   1              unsigned char c,c1,i;
  11   1              static unsigned char oldkey;
  12   1              bit iskey=0;
  13   1              unsigned char code dout[4]={0x7f,0xbf,0xdf,0xef};
  14   1              unsigned char din[8]={0x03,0x02,0x00,0x01,0x00,0x00,0x00,0x00};
  15   1              unsigned char key[4][4]={{'*','0','#','E'},{'7','8','9','C'},{'4','5','6','D'},{'1','2','3','U'}};
  16   1      
  17   1              while(1)
  18   1              {
  19   2                      for(i=0;i<4;i++){
  20   3                              keypin = dout[i];
  21   3                              c = keypin &0x0f;
  22   3                              if (c!=0x0f){
  23   4                                      c1=(key[din[0X0E-c]][i]); //转换出健码
  24   4                                      iskey=1;
  25   4                              }
  26   3                      }
  27   2                      if(t==0){
  28   3                              if (iskey)
  29   3                              {
  30   4                                      P2=0xff;                //恢复现场
  31   4                                      if(oldkey==c1)  //如果和上次的按键一样,就当作没有按键.这是为了避免连键
  32   4                                      {
  33   5                                              return(0);
  34   5                                      }
  35   4                                      oldkey=c1;      //保存上次的按键
  36   4                                      beep(1);        //按键音
  37   4                                      return(c1);
  38   4                              }
  39   3                              else 
  40   3                              {
  41   4                                      oldkey=0;       //返回0表示无按键
  42   4                                      return(0);
  43   4                              }
  44   3                      }
  45   2                      t--;
  46   2              }
  47   1      }       
  48          //4----------------------|
  49          //                                               |
  50          //5----------------|     |
  51          //                                 |     |
  52          //6----------|     |     |
  53          //                       |         |     |
  54          //7----|         |         |     |
C51 COMPILER V7.10   KEY                                                                   07/02/2005 14:18:18 PAGE 2   

  55          //         |1    |2        |3    |up
  56          //0----|-----|-----|-----|---------------
  57          //         |4    |5        |6    |down
  58          //1----|-----|-----|-----|---------------
  59          //         |7    |8        |9    |change
  60          //2----|-----|-----|-----|---------------
  61          //         |*    |0        |#    |enter
  62          //3----|-----|-----|-----|---------------
  63          
  64          //***************************************
  65          //响蜂鸣器(喇叭)
  66          sbit BB=P1^7;
  67          void beep(unsigned char t)
  68          {
  69   1              unsigned char i;
  70   1              unsigned int j;
  71   1              for(j=0;j<t*256;j++)
  72   1              {
  73   2                      for(i=100;i>0;i--);//给i赋的初值决定输出的频率
  74   2                      BB=~BB;
  75   2              }
  76   1      }


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