📄 keyboard_serial.lst
字号:
C51 COMPILER V8.05a KEYBOARD_SERIAL 03/13/2009 14:46:00 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE KEYBOARD_SERIAL
OBJECT MODULE PLACED IN keyboard_serial.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE keyboard_serial.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<stdio.h>
3
4 //发光管显示码,共阳极
5 unsigned char data displaycode[10]={0x00,0x9f,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08};
6 //LED显示数据
7 unsigned char leddisplay[4]={1,1,1,1};
8 //键扫描值,低四位为行号,高四位为列号
9 unsigned char key;
10
11 // 键消抖的延时函数
12 void delay_10ms(void)
13 {
14 1 unsigned char j,k;
15 1 for(j=20;j>0;j--)
16 1 for(k=248;k>0;k--);
17 1 }
18
19 // kbscan键扫描函数
20 unsigned char kbscan(void)
21 {
22 1
23 1 unsigned char sccode,recode;
24 1
25 1 P1=0xf0;
26 1
27 1 if((P1&0xf0)!=0xf0)
28 1 {
29 2
30 2 delay_10ms();
31 2
32 2 if((P1&0xf0)!=0xf0)
33 2 {
34 3 sccode=0xfe;
35 3
36 3 while((sccode&0x10)!=0)
37 3 {
38 4 P1=sccode;
39 4
40 4 if((P1&0xf0)!=0xf0)
41 4 {
42 5 recode=(P1&0xf0)|0x0f;
43 5 return((~sccode)+(~recode));
44 5 }
45 4 else
46 4 {
47 5 sccode=(sccode<<1)|0x01;
48 5 }
49 4 }
50 3 }
51 2 }
52 1
53 1 return(0);
54 1
55 1 }
C51 COMPILER V8.05a KEYBOARD_SERIAL 03/13/2009 14:46:00 PAGE 2
56
57 //LED显示函数
58 void display(void)
59 {
60 1 unsigned char count;
61 1
62 1 for(count=4;count>0;count--)
63 1 {
64 2 SBUF=displaycode[leddisplay[count-1]];
65 2 while(TI==0);
66 2 TI=0;
67 2 }
68 1 }
69 //初始化LED显示数据
70 void leddisplay_ini(unsigned i)
71 {
72 1 leddisplay[0]=i;leddisplay[1]=i;leddisplay[2]=i;leddisplay[3]=i;
73 1 }
74
75 void main(void)
76 {
77 1 SCON=0x00; //移位寄存器工作方式
78 1 display();
79 1 while(1)
80 1 {
81 2 key=kbscan(); //键盘扫描函数
82 2 delay_10ms(); //延时函数
83 2 if(key!=0)
84 2 {
85 3 switch(key)
86 3 {
87 4 case 0x11: //显示1,第一行第一列
88 4 leddisplay_ini(1); //显示数据初始化,显示1
89 4 display(); //显示数据
90 4 break;
91 4 case 0x21:
92 4 leddisplay_ini(2);
93 4 display();
94 4 break;
95 4 case 0x41:
96 4 leddisplay_ini(3);
97 4 display();
98 4 break;
99 4 case 0x12: //显示4,第二行第一列
100 4 leddisplay_ini(4);
101 4 display();
102 4 break;
103 4 case 0x22:
104 4 leddisplay_ini(5);
105 4 display();
106 4 break;
107 4 case 0x42:
108 4 leddisplay_ini(6);
109 4 display();
110 4 break;
111 4 case 0x14:
112 4 leddisplay_ini(7); //显示7,第三行第一列
113 4 display();
114 4 break;
115 4 case 0x24:
116 4 leddisplay_ini(8);
117 4 display();
C51 COMPILER V8.05a KEYBOARD_SERIAL 03/13/2009 14:46:00 PAGE 3
118 4 break;
119 4 case 0x44:
120 4 leddisplay_ini(9);
121 4 display();
122 4 break;
123 4 default:
124 4 leddisplay_ini(0); //显示其他
125 4 display();
126 4 break;
127 4
128 4 }
129 3
130 3 }
131 2 }
132 1
133 1 }
134
135
136
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 249 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 ----
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 + -