📄 1276.lst
字号:
C51 COMPILER V6.12 1276 03/28/2007 09:22:11 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE 1276
OBJECT MODULE PLACED IN .\1276.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\1276.c DEBUG OBJECTEXTEND
stmt level source
1 //按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下
2 //第一个显示1,第二个显示4...
3 #include<reg52.h>
4 #define uc unsigned char
5 #define ui unsigned int
6 sbit dus=P2^6;
7 sbit wes=P2^7;
8
9 ui num,temp,a2,a1,a0;
10 uc code table[]={
11 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
12 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
13
14 ui kscan();
15 delay(uc x)
16 {
17 1 ui i,j;
18 1 for(i=100;i>0;i--)
19 1 for(j=x;j>0;j--);
20 1 }
21 display(ui bi,ui si,ui ge)
22 {
23 1
24 1 P0=0xff;
25 1 wes=1;
26 1 wes=0;
27 1 P0=table[bi];
28 1 dus=1;
29 1 dus=0;
30 1 P0=0xf7;
31 1 wes=1;
32 1 wes=0;
33 1 delay(1);
34 1
35 1 P0=0xff;
36 1 wes=1;
37 1 wes=0;
38 1 P0=table[si];
39 1 dus=1;
40 1 dus=0;
41 1 P0=0xef;
42 1 wes=1;
43 1 wes=0;
44 1 delay(1);
45 1
46 1
47 1 P0=0xff;
48 1 wes=1;
49 1 wes=0;
50 1 P0=table[ge];
51 1 dus=1;
52 1 dus=0;
53 1 P0=0xdf;
54 1 wes=1;
55 1 wes=0;
C51 COMPILER V6.12 1276 03/28/2007 09:22:11 PAGE 2
56 1 delay(1);
57 1
58 1
59 1 }
60
61 void main()
62 {
63 1 while(1)
64 1 {
65 2 a2=kscan()/100;
66 2 a1=kscan()%100/10;
67 2 a0=kscan()%100%10;
68 2 display(a2,a1,a0);//kscan的返回值是num
69 2
70 2 }
71 1 }
72
73 ui kscan()
74 {
75 1 P3=0xfe;
76 1 temp=P3;
77 1 temp=temp&0xf0;
78 1 if(temp!=0xf0)
79 1 {
80 2 delay(8);
81 2 if(temp!=0xf0)
82 2 {
83 3 switch(temp)
84 3 {
85 4 case 0xe0:num=1;
86 4 break;
87 4 case 0xd0:num=4;
88 4 break;
89 4 case 0xb0:num=9;
90 4 break;
91 4 case 0x70:num=16;
92 4 break;
93 4
94 4 }
95 3 while(temp!=0xf0) //松手检测
96 3 {
97 4 temp=P3;
98 4 temp=temp&0xf0;
99 4 display(a2,a1,a0);
100 4 }
101 3 }
102 2
103 2 }
104 1 P3=0xfd;
105 1 temp=P3;
106 1 temp=temp&0xf0;
107 1 if(temp!=0xf0)
108 1 {
109 2 delay(8);
110 2 if(temp!=0xf0)
111 2 {
112 3 switch(temp)
113 3 {
114 4 case 0xe0:num=25;
115 4 break;
116 4 case 0xd0:num=36;
117 4 break;
C51 COMPILER V6.12 1276 03/28/2007 09:22:11 PAGE 3
118 4 case 0xb0:num=49;
119 4 break;
120 4 case 0x70:num=64;
121 4 break;
122 4 }
123 3 while(temp!=0xf0)
124 3 {
125 4 temp=P3;
126 4 temp=temp&0xf0;
127 4 display(a2,a1,a0);
128 4 }
129 3 }
130 2 }
131 1 P3=0xfb;
132 1 temp=P3;
133 1 temp=temp&0xf0;
134 1 if(temp!=0xf0)
135 1 {
136 2 delay(8);
137 2 if(temp!=0xf0)
138 2 {
139 3 switch(temp)
140 3 {
141 4 case 0xe0:num=81;
142 4 break;
143 4 case 0xd0:num=100;
144 4 break;
145 4 case 0xb0:num=121;
146 4 break;
147 4 case 0x70:num=144;
148 4 break;
149 4 }
150 3 while(temp!=0xf0)
151 3 {
152 4 temp=P3;
153 4 temp=temp&0xf0;
154 4 display(a2,a1,a0);
155 4 }
156 3 }
157 2
158 2 }
159 1 P3=0xf7;
160 1 temp=P3;
161 1 temp=temp&0xf0;
162 1 if(temp!=0xf0)
163 1 {
164 2 delay(8);
165 2 if(temp!=0xf0)
166 2 {
167 3 switch(temp)
168 3 {
169 4 case 0xe0:num=169;
170 4 break;
171 4 case 0xd0:num=196;
172 4 break;
173 4 case 0xb0:num=225;
174 4 break;
175 4 case 0x70:num=256;
176 4 break;
177 4 }
178 3 while(temp!=0xf0)
179 3 {
C51 COMPILER V6.12 1276 03/28/2007 09:22:11 PAGE 4
180 4 temp=P3;
181 4 temp=temp&0xf0;
182 4 display(a2,a1,a0);
183 4 }
184 3 }
185 2
186 2 }
187 1 return num;//返回值是num
188 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 632 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 6
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 + -