📄 key.lst
字号:
C51 COMPILER V7.08 KEY 02/27/2006 16:50:27 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN .\output\key.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND OBJECT(.\output\key.obj)
line level source
1 #define _key_
2 #include "general.h"
3 //定义标志位
4 //bit f_KEYOFF;
5 //bit f_TIMER0;
6
7 static uchar code code_key[16]={0x11,0x12,0x14,0x18,//3
8 0x21,0x22,0x24,0x28,//7
9 0x41,0x42,0x44,0x48,//11
10 0x81,0x82,0x84,0x88};//15
11
12 /* -- 1 -- 2 -- 3 -- enter --
13 -- 4 -- 5 -- 6 --
14 -- 7 -- 8 -- 9 --
15 -- 0 --
16 /******************************************
17 查键值表,特征键值转为顺序键值
18 ******************************************/
19 uchar get_key(uchar c)
20 {
21 1 uchar i=0;
22 1 while(code_key[i]!= c)
23 1 i++;
24 1 return i;//0x00~0x0f
25 1 }
26
27 /**************************************************************
28 名称:kbscan
29 描述:键盘扫描,有延时
30 输入:无
31 输出:返回键值key
32 其他:P0.4~7扫描输出,P0.0~3输入进来
33 **************************************************************/
34 uchar kbscan(void)
35 {
36 1 uchar sccode,recode;
37 1 P0=0x0f; //00001111
38 1 if((P0&0x0f)!=0x0f) //若有键按下
39 1 {
40 2 delay(5); //薄膜按键推荐延时,1
41 2 if((P0&0x0f)!=0x0f)
42 2 {
43 3 sccode=0xef;
44 3 while((sccode&0x01)!=0)
45 3 {
46 4 P0=sccode;
47 4 if((P0&0x0f)!=0x0f)
48 4 {
49 5 recode=(P0&0x0f)|0xf0;
50 5 while((P0&0x0f)!=0x0f);//空while,等待键抬起再返回键值
51 5 return(get_key((~sccode)+(~recode)));//返回特征字节->顺序键码
52 5 //C1:10-01,02,04,08 11,12,14,18
53 5 //C2:20-01,02,04,08 21,22,24,28
54 5 //C3:40-01,02,04,08 41,42,44,48
55 5 //C4:80-01,02,04,08 81,82,84,88
C51 COMPILER V7.08 KEY 02/27/2006 16:50:27 PAGE 2
56 5 }
57 4 else
58 4 sccode=(sccode<<1)|0x01;
59 4
60 4 }
61 3
62 3 }
63 2 }
64 1 else
65 1 while((P0&0x0f)!=0x0f);//
66 1 return(0x10);//无键按下,返回16
67 1 }
68
69 /**************************
70 参数设置操作
71 **************************
72 void paraset( uchar para,
73 uchar temp,
74 uchar Index,
75 uchar index_fa,
76 uchar index_br1,
77 uchar index_br2)
78 {
79 uchar key;
80 key=kbscan();//
81 switch(key)
82 {
83 //case NUM1: {temp=1;break;}
84 //case NUM2: {temp=2;break;}
85 //case NUM3: {temp=3;break;}
86 case NUM4: {temp=4;break;}
87 //case NUM5: {temp=5;break;}
88 case NUM6: {temp=6;break;}
89 //case NUM7: {temp=7;break;}
90 case NUM8: {temp=8;break;}
91 //case NUM9: {temp=9;break;}
92 case NUM0: {temp=0;break;}
93 case BN_ENT: {para=temp;Index=index_fa;break;}
94 case BN_ESC: {temp=para;Index=index_fa;break;}
95 case BN_PGUP: {Index=index_br1;break;}
96 case BN_PGDN: {Index=index_br2;break;}
97 }
98 }
99 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 102 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -