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

📄 dat.lst

📁 通过89s51实现的模拟键盘代码
💻 LST
字号:
C51 COMPILER V7.02a   DAT                                                                  04/23/2005 11:28:03 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE DAT
OBJECT MODULE PLACED IN dat.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE dat.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          unsigned char data head,end;//键盘缓冲区头地址尾地址
   2          unsigned char data kb_buf[16];//键盘缓冲区,长度为16个字节,为循环缓冲区
   3          unsigned char data flag[16];//键盘缓冲区16个缓冲单元的状态
   4          #define KEYNO_MAX 30
   5          bit insert(unsigned char a,unsigned char f)           //插入缓冲区,F标记是否按下
   6          //返回0表示未插入,因为缓冲区满;或者a、f超出范围;返回1表示插入成功
   7          {
   8   1        if((end+1)%16==head)
   9   1              return 0;
  10   1        if(a>KEYNO_MAX||f>1)
  11   1          return 0;
  12   1        kb_buf[end]=a;
  13   1        flag[end]=f;
  14   1        end=(end+1)%16;
  15   1        return 1;
  16   1      }
  17          void clr_buf()
  18          {
  19   1        head=end=0;
  20   1      }
  21          unsigned char exist(unsigned char mark)  //判断是否第一次按下,如果是第一次按下,返回0,否则返回缓冲区中对
             -应键盘值的地址
  22          {
  23   1        unsigned char i=head;
  24   1        if(mark>KEYNO_MAX)
  25   1          return 255;
  26   1        while(i!=end)
  27   1          {
  28   2                if(kb_buf[i]==mark)
  29   2                  return i;
  30   2                i=(i+1)%16;
  31   2              }
  32   1        return 255;
  33   1      }
  34          /*bit emputy()
  35          {
  36            return (head==end);
  37          }
  38          unsigned char get_end()
  39          {
  40            if(head!=end)
  41              return kb_buf[(end-1+16)%16];
  42            else
  43              return 0;
  44          }*/
  45          unsigned char get_head_f()//返回缓冲区头地址的标识
  46          {
  47   1        if(head!=end)
  48   1          return flag[head];
  49   1        else 
  50   1          return 255;  
  51   1      }
  52          unsigned char get_head()//返回缓冲区头地址处的值,如果缓冲区空,则返回255
  53          {
  54   1        if(head!=end)
C51 COMPILER V7.02a   DAT                                                                  04/23/2005 11:28:03 PAGE 2   

  55   1          return kb_buf[head];
  56   1        else 
  57   1          return 255;
  58   1      }
  59          void del_head()//将头地址加一,也即删除缓冲区中头地址处的值
  60          {
  61   1        head=(head+1)%16;
  62   1      }
  63          void set_flag(unsigned char dire)//将缓冲区中dire所对应的的缓冲单元标识设为1
  64          {
  65   1        flag[dire%16]=1;
  66   1      }
  67          unsigned char buf_length()//返回缓冲区中已被使用的缓冲单元的数目
  68          {
  69   1        return (end+16-head)%16;
  70   1      }


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