📄 key.lst
字号:
C51 COMPILER V8.08 KEY 04/20/2009 16:06:22 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <init.h>
3 extern void Delay(unsigned char i);
4 extern void LCD_Write_Com(unsigned char com) ;
5 extern void LCD_Write_Dat(unsigned char dat) ;
6 extern unsigned char LCD_Read_Com(void);
7 unsigned char tr[]={0x83,0x84,0x85,0x86,0x88,0x89,0x8b,0x8c,
8 0xc4,0xc5,0xc7,0xc8,0xca,0xcb};
9
10 /*************键盘查询扫描函数*************************/
11 unsigned char Key_Scan(void)
12 {
13 1 unsigned char a,b,temp;
14 1 temp=0xff;
15 1 KEY=0x0f;
16 1 // while(c--!=0)
17 1 // {
18 1 if(KEY!=0x0f)
19 1 {
20 2 Delay(20);
21 2 if(KEY!=0x0f)
22 2 {
23 3 a=KEY;
24 3 KEY=0xf0;
25 3 b=KEY;
26 3 a=a|b;
27 3 switch(a)
28 3 {
29 4 case 0xe7:temp='1';break;
30 4 case 0xd7:temp='2';break;
31 4 case 0xb7:temp='3';break;
32 4 case 0x77:temp='T';break;
33 4 case 0xeb:temp='4';break;
34 4 case 0xdb:temp='5';break;
35 4 case 0xbb:temp='6';break;
36 4 case 0x7b:temp='C';break;
37 4 case 0xed:temp='7';break;
38 4 case 0xdd:temp='8';break;
39 4 case 0xbd:temp='9';break;
40 4 case 0x7d:temp='W';break;
41 4 case 0xee:temp='0';break;
42 4 case 0xde:temp='L';break;
43 4 case 0xbe:temp='R';break;
44 4 case 0x7e:temp='B';break;
45 4 default:break;
46 4 }
47 3 }
48 2
49 2 }
50 1
51 1 // if (temp!=0xff) break;
52 1 // }
53 1 return temp;
54 1 }
55 /*
C51 COMPILER V8.08 KEY 04/20/2009 16:06:22 PAGE 2
56 unsigned char Key_Scan(void)
57 {
58 unsigned char a,b,temp;
59 temp=0xff;
60 KEY=0x0f;
61 b=0x7f;
62 if((KEY&0x0f)!=0x0f)
63 {
64 Delay(20);
65 if((KEY&0x0f)!=0x0f)
66 {
67 for(a=0;a<4;a++)
68 {
69 KEY=b;
70 if((KEY&0x0f)!=0x0f)
71 {
72 temp=KEY;
73 break;
74 }
75 else
76 b=(b>>1)|0x80;
77 }
78 if(a>=4)
79 return 0xff;
80 switch(temp)
81 {
82 case 0x77:temp='1';break;
83 case 0x7b:temp='2';break;
84 case 0x7d:temp='3';break;
85 case 0x7e:temp='T';break;
86 case 0xb7:temp='4';break;
87 case 0xbb:temp='5';break;
88 case 0xbd:temp='6';break;
89 case 0xbe:temp='C';break;
90 case 0xd7:temp='7';break;
91 case 0xdb:temp='8';break;
92 case 0xdd:temp='9';break;
93 case 0xde:temp='W';break;
94 case 0xe7:temp='0';break;
95 case 0xeb:temp='L';break;
96 case 0xed:temp='R';break;
97 case 0xee:temp='B';break;
98 default:break;
99 }
100 }
101
102 }
103 return temp;
104 }*/
105 void Left(void)
106 {
107 1 unsigned char i,j,tmp;
108 1 j=LCD_Read_Com();
109 1 i=0;
110 1 while(j!=tr[i])
111 1 i++;
112 1 if(i==0)
113 1 tmp=tr[13];
114 1 else
115 1 tmp=tr[--i];
116 1 LCD_Write_Com(tmp);
117 1 }
C51 COMPILER V8.08 KEY 04/20/2009 16:06:22 PAGE 3
118 void Right(void)
119 {
120 1 unsigned char i,j,tmp;
121 1 j=LCD_Read_Com();
122 1 i=0;
123 1 while(j!=tr[i]) //先找出当前光标在什么位置
124 1 i++;
125 1 if(i==13)
126 1 tmp=tr[0];
127 1 else
128 1 {
129 2 i++;
130 2 tmp=tr[i];
131 2 }
132 1 LCD_Write_Com(tmp);
133 1 // LCD_Write_Com(0x0f);//开显示,开光标,闪烁
134 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 250 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 3
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 + -