📄 keyboard.lst
字号:
C51 COMPILER V7.20 KEYBOARD 12/03/2004 14:58:06 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<stdio.h>
3 #include<stdlib.h>
4 #include<intrins.h>
5 #include<absacc.h>
6
7 #define uchar unsigned char
8 #define uint unsigned int
9 #define nop _nop_()
10
11 sbit pc=P2^0;
12 sbit pd=P2^1;
13
14 code uchar table[16]={0xfc,0x60,0xda,0xF2,0x66,
15 0xB6,0xBE,0xE0,0xFE,0xf6,
16 0x10,0x11,0x12,0x13,0x14,0x15};
17 uchar keycode;
18 //----------------------------------------------
19 void sendData(char c)
20 {
21 1 char i;
22 1 bit temp;
23 1 c=~c;
24 1 for(i=0;i<8;i++)
25 1 {
26 2 if (c&0xfe==0xfe) temp=0;
27 2 else temp=1;
28 2
29 2 pc=0;
30 2 pd=temp;
31 2 pc=1;
32 2
33 2 c>>=1;
34 2 }
35 1 }
36 //---------------------------------
37 void delay2ms()
38 {
39 1 uchar t=255;
40 1 while(t--);
41 1 t=52;
42 1 while(t--);
43 1 }
44 //---------------------------------
45 void delay10ms()
46 {
47 1 uchar i=5;
48 1 while(i--) delay2ms();
49 1 }
50 //---------------------------------
51 void detectkey(void)
52 {
53 1 uchar key,line,col;
54 1
55 1 P1=0xf0;
C51 COMPILER V7.20 KEYBOARD 12/03/2004 14:58:06 PAGE 2
56 1 key=P1&0xf0;
57 1 if(key!=0xf0)
58 1 {
59 2 delay10ms();
60 2 P1=0xf0;
61 2 key=P1&0xf0;
62 2 if(key!=0xf0) //confirm
63 2 {
64 3 if(key==0xe0) line=0;
65 3 if(key==0xd0) line=1;
66 3 if(key==0xb0) line=2;
67 3 if(key==0x70) line=3;
68 3
69 3 P1=0xfe;
70 3 key=P1&0xf0;
71 3 if(key!=0xf0) col=0;
72 3
73 3 P1=0xfd;
74 3 key=P1&0xf0;
75 3 if(key!=0xf0) col=1;
76 3
77 3 P1=0xfb;
78 3 key=P1&0xf0;
79 3 if(key!=0xf0) col=2;
80 3
81 3 P1=0xf7;
82 3 key=P1&0xf0;
83 3 if(key!=0xf0) col=3;
84 3
85 3 keycode=(line*4+col);
86 3 sendData(table[keycode]);
87 3
88 3 P1=0xf0;
89 3 key=P1&0xf0;
90 3 while(key!=0xf0)
91 3 {
92 4 P1=0xf0;
93 4 key=P1&0xf0;
94 4 };//wait until release
95 3 }
96 2 }
97 1 }
98 //==================================
99 void main(void)
100 {
101 1 while(1) detectkey();
102 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 202 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -