📄 键盘扫描.lst
字号:
C51 COMPILER V7.07 键臺蒧描 07/25/2007 11:14:43 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE 键臺蒧描
OBJECT MODULE PLACED IN 键盘扫描.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 键盘扫描.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "STC12C5410AD.H"
2 #include <stdio.h>
3 #include "键盘扫描.H"
4 #include <math.h>
5
6 unsigned int m=0,n=0;
7 unsigned int i=0,j=0;
8 unsigned char Key_InitNumber=0,Key_Number=0,Key_i=0,Key_Buffer=0;
9 unsigned int idata value[]={0,1,1,1,
10 1,1,1,1,
11 1,1,1,1,
12 1,1,1,1,
13 1,1,1,1};
14
15 #define NUMBER (0x131A)
16 unsigned int BUFF1=0;
17
18
19 void Delay_10US(void)
20 {
21 1 for(j=0;j<10;j++)
22 1 {;}
-
23 1 }
24
25 void D200M(void) //不开定时器0的时候,
26 { //定时200MS,示波器显示2MS--2.02MS
27 1 for(j=0;j<923;j++)
28 1 {
29 2 for(i=0;i<100;i++)
30 2 {
31 3 ;
32 3 }
33 2 }
34 1 }
35
36 void Key_Clock(unsigned char Key_InitNumber) //键盘扫描的时钟序列1
37 {
38 1 for(Key_i=0;Key_i<Key_InitNumber;Key_i++)
39 1 {
40 2 P2_1=0;
41 2 Delay_10US();
42 2 P2_1=1;
43 2 Delay_10US();
44 2 }
45 1 }
46
47 void Key_Clock1(void) //键盘扫描的时钟序列2
48 {
49 1 P2_1=0;
50 1 Delay_10US();
51 1 P2_1=1;
52 1 Delay_10US();
53 1 }
54
C51 COMPILER V7.07 键臺蒧描 07/25/2007 11:14:43 PAGE 2
55 void initTimer(void) //定时器初始化,晶振6MHz,
56 { //定时器0,方式2(8位定时器),中断100us
57 1 TMOD=0x22; //(2^8-x)*12/(6*(10^6))=100*(10^-6)
58 1 TH0=0xB2; //解得x=206,TH0=0xCE,TL0=0xCE;
59 1 TL0=0xB2;
60 1 //TL0=0x1f;
61 1 AUXR=0x80;
62 1
63 1 }
64
65 void initPWM(void) //PWM的初始化
66 {
67 1 CMOD=0x02;
68 1 // CL=0x00;
69 1 // CH=0x00;
70 1 CCAP0L=0x80; //80H=128D
71 1 CCAP0H=0x80;
72 1 CCAPM0=0x42;
73 1 // PCA_PWM0=0x00;
74 1 CR=1;
75 1
76 1 AUXR=0xE0;
77 1 TMOD=0x15;
78 1 IE=0x88;
79 1 TH0=0x00;
80 1 TL0=0x00;
81 1 TH1=0x15;
82 1 TL1=0xA0;
83 1
84 1
85 1 // P0=0x02; //RN3:CH2,通道2
86 1 P0=0x00; //RN1:CH0,通道0
87 1 }
88
89
90 void timer0(void) interrupt 1 using 1
91 { //每0.01ms中断一次
92 1 // P3_5=!P3_5;
93 1 P2_4=!P2_4;
94 1 }
95
96 void timer1(void) interrupt 3
97 {
98 1 TH1=0x15;
99 1 TL1=0xA0;
100 1 //add your code here.
101 1 BUFF1=(TH0<<8)+TL0;
102 1 TH0=0x00;
103 1 TL0=0x00;
104 1 }
105
106
107
108
109
110 void main()
111 {
112 1 // initTimer(); //定时器初始化
113 1 //AUXR=0x00;
114 1 //TR0=1;
115 1 ET0=1;
116 1 EA=1;
C51 COMPILER V7.07 键臺蒧描 07/25/2007 11:14:43 PAGE 3
117 1 AUXR=0x80;
118 1 P1=0xff; //默认为1,设置为0时才有效
119 1
120 1 P2_1=0; //164的初始化
121 1 P2_2=1;
122 1 P2_3=1;
123 1
124 1 P0_3=0; //LED和蜂鸣器的初始化
125 1 P2_0=0;
126 1 P1_7=1;
127 1
128 1 P2_4=0;
129 1 P3_4=0;
130 1
131 1 for(;;)
132 1 {
133 2 Key_Buffer=0;
134 2 P2_2=1;
135 2 P2_3=1;
136 2 Key_Clock(20); //键盘各按键的初始化
137 2 P2_4=0;
138 2 P3_4=0;
139 2 P1_7=1;
140 2
141 2 P2_2=0;
142 2 Key_Clock1();
143 2 /* if(P2_3=0)
144 2 {
145 2 initTimer();
146 2 Code_08();
147 2 P1_7=0;
148 2 } */
149 2
150 2 for(Key_Number=1;Key_Number<17;Key_Number++)
151 2 {
152 3 P2_2=1;
153 3 Key_Clock1();
154 3 if(P2_3==0)
155 3 {
156 4 Key_Buffer=Key_Number;
157 4 // break;
158 4 }
159 3
160 3 switch (Key_Buffer)
161 3 {
162 4 case 1:
163 4 break;
164 4 case 2:
165 4 break;
166 4 case 3:
167 4 break;
168 4 case 4:
169 4 break;
170 4
171 4 case 9:
172 4 break;
173 4 case 10:
174 4 break;
175 4 case 11:
176 4 break;
177 4 case 12:
178 4 break;
C51 COMPILER V7.07 键臺蒧描 07/25/2007 11:14:43 PAGE 4
179 4 case 13:
180 4 break;
181 4 case 14:
182 4 break;
183 4 case 15:
184 4 break;
185 4 default:
186 4 TR0=0;
187 4 TR1=0;
188 4 break;
189 4 }
190 3
191 3 }
192 2
193 2 P2_0=!P2_0;
194 2 D200M();
195 2 }
196 1
197 1
198 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 302 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 ----
IDATA SIZE = 40 ----
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 + -