scankey.lst
来自「C8051ucos源码」· LST 代码 · 共 107 行
LST
107 行
C51 COMPILER V8.02 SCANKEY 01/09/2009 16:21:00 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SCANKEY
OBJECT MODULE PLACED IN ScanKey.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE program\ScanKey.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\ScanKey.lst) OBJE
-CT(ScanKey.obj)
line level source
1
2 #include "C8051F020.h"
3 #include "CM240128.H"
4
5
6 idata unsigned char Shift;//0英文/1数值 切换
7
8 code unsigned char KEYVAL[4][2][10]=
9 {
10 {
11 "\x04., \x05\x06\x07\x08\x02\x03",
12 "\x04:, \x05\x06\x07\x08\x02\x03",
13 },
14 {
15 ",MNBVCXZ\n\x01",
16 ":0987)(`\n\x01",
17 },
18 {
19 "KJHGFDSA\xfL",
20 "!#654+@\"\xf\0",
21 },
22 {
23 "IUYTREWQPO",
24 "/*321-&|?=",
25 },
26 };
27
28 unsigned char ScanKey(void)
29 {
30 1 idata unsigned int val[4];
31 1 static idata unsigned int oldval[4];
32 1 static idata unsigned char sw;
33 1 unsigned char scanLoc;
34 1 unsigned char i,j;
35 1 P74OUT=0x00;
36 1 scanLoc=0x01;
37 1 for(i=0;i<4;i++)
38 1 {
39 2 P6=0xff;P5=0xff;
40 2 P5&=(~scanLoc);
41 2 scanLoc<<=1;
42 2 val[i] = ((P5<<2)&0x0300)+P6;
43 2 val[i]=~val[i];
44 2 val[i]&=0x03ff;
45 2 P6=0xff;P5=0xff;
46 2 j=200;while(j--);
47 2 }
48 1 if(val[0]==0&&val[1]==0&&val[2]==0&&val[3]==0)
49 1 {
50 2 oldval[0]=val[0];
51 2 oldval[1]=val[1];
52 2 oldval[2]=val[2];
53 2 oldval[3]=val[3];
54 2 sw=0;
C51 COMPILER V8.02 SCANKEY 01/09/2009 16:21:00 PAGE 2
55 2 return 0;
56 2 }
57 1 if(val[0]==oldval[0]&&val[1]==oldval[1]&&val[2]==oldval[2]&&val[3]==oldval[3])
58 1 {
59 2 if(sw==0)
60 2 {
61 3 sw=1;
62 3 for(j=0;j<4;j++)
63 3 {
64 4 for(i=0;i<10;i++)
65 4 {
66 5 if(val[j]&0x0001)break;
67 5 val[j]>>=1;
68 5 }
69 4 if(i<10)
70 4 return KEYVAL[j][Shift][i];
71 4 }
72 3 }
73 2 return 0;
74 2 }
75 1 oldval[0]=val[0];
76 1 oldval[1]=val[1];
77 1 oldval[2]=val[2];
78 1 oldval[3]=val[3];
79 1 return 0;
80 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 452 ----
CONSTANT SIZE = 80 ----
XDATA SIZE = ---- 2
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 10 8
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?