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

📄 main_t.lst

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


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

stmt level    source

   1          #include <head.c>
   2          bit scan_on,last_f;
   3          unsigned char data last_key;
   4          extern unsigned char data delay_count,send_delay;
   5          unsigned char bdata clu;
   6          sbit clu0=clu^0;
   7          
   8          
   9          unsigned char scankb(unsigned char row)
  10          /*
  11          键盘扫描函数,P2.7-P2.3为5条行扫描线,P2.2-P2.0为3条列输出线。每次扫描一行,该行的扫描线为0,其余为1,
  12          返回列输出线的值
  13          */
  14          {
  15   1        unsigned char data c;
  16   1        switch(row)
  17   1          {
  18   2                case 0://P2=8'b01111111;
  19   2                      P2=0x7f;
  20   2                          break;
  21   2                case 1://P2=8'b10111111;
  22   2                      P2=0xbf;
  23   2                          break;
  24   2                case 2://P2=8'b11011111;
  25   2                      P2=0xdf;
  26   2                      break;
  27   2                case 3://P2=8'b11101111;
  28   2                  P2=0xef;
  29   2                          break;
  30   2            case 4://P2=8'b11110111;
  31   2                  P2=0xf7;
  32   2                  break;
  33   2            default:
  34   2                  P2=0xff;
  35   2                  break;         
  36   2              }
  37   1         c=0x07&P2;//取P2.2-P2.0的值
  38   1         P2=0xff;
  39   1         return c;
  40   1      }
  41          void scan(void)
  42          /*
  43          函数功能:扫描键状态,将被按键的位置号存入缓冲区中;
  44          连续扫描5行,如果列扫描线输出全为1,表明当前行没有按键按下,继续扫描下一行,否则将记下当前的列输出值,然后
             -延时一段时间(该值可以设定),
  45          再次扫描该行,如果列输出值跟第一次的不一样,则将其判为抖动,不予处理,如果相同则表明当前按键被按下,进行下
             -一步处理。
  46          从列输出线的最低位P2.0开始判断列输出线的该位是否为0,如果为1则表明其对应按键未被按下,不予处理,如果为0则

⌨️ 快捷键说明

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