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

📄 key_scan.lst

📁 8155键盘扫 8155键盘扫
💻 LST
字号:
C51 COMPILER V8.02   KEY_SCAN                                                              07/26/2007 18:25:10 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE KEY_SCAN
OBJECT MODULE PLACED IN key_scan.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE key_scan.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include <absacc.h>
   3          #include <string.h>
   4          #include <intrins.h>
   5          #include <ctype.h>
   6          #include <stdlib.h>
   7          #define uchar unsigned char
   8          #define uint unsigned int
   9          #define ulong unsigned long
  10          
  11          /* 定义8155的I/O端口地址 */
  12          #define COM8155 XBYTE[0xf000]                  /* 8155命令口地址 */
  13          #define PA8155  XBYTE[0xf001]                   /* 8155的PA口地址 */
  14          #define PB8155  XBYTE[0xf002]                   /* 8155的PB口地址 */
  15          #define PC8155  XBYTE[0xf003]                   /* 8155的PC口地址 */
  16          
  17          uchar key_scan(void);
  18          void delay(uchar ms);
  19          void proc_key(uchar key);
  20          uchar key;
  21          
  22          void main()
  23          {
  24   1       
  25   1      
  26   1       while(1)
  27   1      {
  28   2      
  29   2       COM8155=0x03 ; //给8155送命令,PA,PB口都为输出,PC口为输入.
  30   2       key = key_scan();
  31   2       proc_key(key); //键盘功能
  32   2      
  33   2         }
  34   1      }
  35          //键处理子程序
  36          /*0,1,2,3,4,5,6,7,8,9,A,b,C,d,E,F,*/
  37          /*0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E, */
  38          void proc_key(uchar key)
  39          {
  40   1       switch(key)
  41   1       {
  42   2        case 0x11:PB8155=0xfc;PA8155=0xf0;delay(10);break;   //数码显示0  
  43   2        case 0x21:PB8155=0x66;PA8155=0xf0;delay(10);break;   //数码显示4
  44   2        case 0x41:PB8155=0xfe;PA8155=0xf0;delay(10);break;   //数码显示8
  45   2        case 0x81:PB8155=0x9c;PA8155=0xf0;delay(10);break;   //数码显示c
  46   2        case 0x12:PB8155=0x60;PA8155=0xf0;delay(10);break;   //数码显示1
  47   2        case 0x22:PB8155=0xb6;PA8155=0xf0;delay(10);break;   //数码显示5
  48   2        case 0x42:PB8155=0xf6;PA8155=0xf0;delay(10);break;   //数码显示9
  49   2        case 0x82:PB8155=0x7a;PA8155=0xf0;delay(10);break;   //数码显示d
  50   2        case 0x14:PB8155=0xda;PA8155=0xf0;delay(10);break;   //数码显示2
  51   2        case 0x24:PB8155=0xbe;PA8155=0xf0;delay(10);break;   //数码显示6
  52   2        case 0x44:PB8155=0xEE;PA8155=0xf0;delay(10);break;   //数码显示a
  53   2        case 0x84:PB8155=0x9E;PA8155=0xf0;delay(10);break;   //数码显示e
  54   2        case 0x18:PB8155=0xf2;PA8155=0xf0;delay(10);break;   //数码显示3
  55   2        case 0x28:PB8155=0xe0;PA8155=0xf0;delay(10);break;   //数码显示7
C51 COMPILER V8.02   KEY_SCAN                                                              07/26/2007 18:25:10 PAGE 2   

  56   2        case 0x48:PB8155=0x3E;PA8155=0xf0;delay(10);break;   //数码显示b
  57   2        case 0x88:PB8155=0x8E;PA8155=0xf0;delay(10);break;   //数码显示f
  58   2        default: break;
  59   2       }
  60   1      }
  61            
  62           /* 键扫描函数 */
  63          uchar key_scan(void)
  64          {
  65   1              uchar scancode,tmpcode;
  66   1              PB8155 = 0xf0;           // 在列行没有接高电平发全0列扫描码
  67   1               PA8155=0xff;           //关闭显示                                              
  68   1              if ((PC8155&0xcf)!=0xcf)        // 若哪行有0代表有键按下,PC口"1100,****"PC口7,6位没有用默认为高电平,5,4位不用时

⌨️ 快捷键说明

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