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

📄 dat.lst

📁 利用89S51将6*6键盘转换成PS/2协议
💻 LST
字号:
C51 COMPILER V7.06   DAT                                                                   08/18/2008 14:23:13 PAGE 1   


C51 COMPILER V7.06, 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           //判断是否第一次按下,如果是第一次按下,返回0,否则返回缓冲区中对应键盘值的地址
  22           //检查键盘缓冲区中是否有与参数相等数,有则返回位置,无则返回255
  23          unsigned char exist(unsigned char mark) 
  24          {
  25   1        unsigned char i=head;
  26   1        if(mark>KEYNO_MAX)
  27   1          return 255; //错误则返回255
  28   1        while(i!=end)  //正确
  29   1          {
  30   2                if(kb_buf[i]==mark)
  31   2                  return i;
  32   2                i=(i+1)%16;//别忘记循环
  33   2              }
  34   1        return 255;
  35   1      }
  36          /*bit emputy()
  37          {
  38            return (head==end);
  39          }
  40          unsigned char get_end()
  41          {
  42            if(head!=end)
  43              return kb_buf[(end-1+16)%16];
  44            else
  45              return 0;
  46          }*/
  47          //取键盘缓冲区头,头指针不变
  48          unsigned char get_head_f()
  49          {
  50   1        if(head!=end)   //不空,返回缓冲区头地址的标识
  51   1          return flag[head];
  52   1        else 
  53   1          return 255;  
  54   1      }
  55          //取缓冲区头对应标记,标记为0表示对应键已经松下
C51 COMPILER V7.06   DAT                                                                   08/18/2008 14:23:13 PAGE 2   

  56          unsigned char get_head()
  57          {
  58   1        if(head!=end)
  59   1          return kb_buf[head];//不空,返回缓冲区头地址处的值,如果缓冲区空,则返回255
  60   1        else 
  61   1          return 255;
  62   1      }
  63          //删除缓冲区头
  64          void del_head()//将头地址加一,也即删除缓冲区中头地址处的值
  65          {
  66   1        head=(head+1)%16;
  67   1      }
  68          //设置缓冲区对应标记
  69          void set_flag(unsigned char dire)//将缓冲区中dire所对应的的缓冲单元标识设为1
  70          {
  71   1        flag[dire%16]=1;
  72   1      }
  73          unsigned char buf_length()//返回缓冲区中已被使用的缓冲单元的数目
  74          {
  75   1        return (end+16-head)%16;
  76   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 + -