📄 key.lst
字号:
C51 COMPILER V8.05a KEY 05/08/2009 19:14:20 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <stdio.h>
3 #define uchar unsigned char
4
5
6 unsigned char key_scan(void );
7 void send(uchar add,uchar );
8 void s_seg(uchar,uchar ,uchar,uchar,uchar,uchar,uchar , uchar);
9
10 uchar vo[]; // 输入速度存储区
11 uchar length[]; // 输入间距存储区
12 bit enterflag; // 确认键按下与否标志
13
14 void delay(void) //延时函数
15 {
16 1 uchar i;
17 1 for (i=300;i>0;i--);
18 1 }
19 uchar Peyscan(void) //键盘扫描函数
20 {
21 1 uchar scan,tep;
22 1
23 1 P1=0xf0; // 发全0扫描码
24 1
25 1 if((P1&0xf0)==0xf0) //若有键盘按下
26 1 {
27 2 delay(); //延时函数
28 2
29 2 if((P1&0xf0)==0xf0) //再判断一次,去除抖动
30 2 {
31 3 scan=0xfe;
32 3 while((scan&0x10)!=0) // 顺行扫描
33 3 {
34 4 P1=scan; //输出行扫描码
35 4
36 4 if((P1&0xf0)!=0xf0) //本行有键按下
37 4 {
38 5 tep = (P1&0xf0)|0x0f;
39 5
40 5 return((~scan)+(~tep));
41 5 }
42 4
43 4 else scan=(scan<<1)|0x01; //行扫描码左移一位
44 4 }
45 3 }
46 2 } //无键按下,返回值0
47 1 return(0);
48 1 }
49
50
51 uchar getcode(uchar i)
52 {
53 1 uchar P;
54 1
55 1 switch(i)
C51 COMPILER V8.05a KEY 05/08/2009 19:14:20 PAGE 2
56 1 {
57 2 case 0: /* 0 */
58 2 P=0x3f;
59 2 break;
60 2
61 2 case 1: /* 1 */
62 2 P=0x06;
63 2 break;
64 2
65 2 case 2: /* 2 */
66 2 P=0x5B;
67 2 break;
68 2
69 2 case 3: /* 3 */
70 2 P=0x4f;
71 2 break;
72 2
73 2 case 4:
74 2 P=0x66; /* 4 */
75 2 break;
76 2
77 2 case 5:
78 2 P=0x6D; /* 5 */
79 2 break;
80 2
81 2 case 6:
82 2 P=0x7D; /* 6 */
83 2 break;
84 2
85 2 case 7: /* 7 */
86 2 P=0x07;
87 2 break;
88 2
89 2 case 8: /* 8 */
90 2 P=0x7F;
91 2 break;
92 2
93 2 case 9: /* 9 */
94 2 P=0x67;
95 2 break;
96 2
97 2 case 10: /* A */
98 2 P=0x77;
99 2 break;
100 2
101 2 case 11: /* B */
102 2 P=0x7c;
103 2 break;
104 2
105 2 case 12: /* C */
106 2 P=0x39;
107 2 break;
108 2
109 2 case 13: /* D */
110 2 P=0x5E;
111 2 break;
112 2
113 2 case 14: /* E */
114 2 P=0x79;
115 2 break;
116 2
117 2 case 15: /* F */
C51 COMPILER V8.05a KEY 05/08/2009 19:14:20 PAGE 3
118 2 P=0x71;
119 2 break;
120 2
121 2 default:
122 2 break;
123 2 }
124 1 return(P);
125 1 }
126
127 P1 = 0xf0; // 发全0扫描码
*** ERROR C231 IN LINE 127 OF KEY.C: 'P1': redefinition
*** ERROR C231 IN LINE 127 OF KEY.C: 'P1': redefinition
128
129 while((P1&0xf0)!=0xf0)
*** ERROR C141 IN LINE 129 OF KEY.C: syntax error near 'while'
*** ERROR C141 IN LINE 129 OF KEY.C: syntax error near '&', expected ')'
130 //若没松开按键
131 {
132 P1 = 0xf0;
*** ERROR C279 IN LINE 132 OF KEY.C: 'P1': multiple initialization
*** ERROR C231 IN LINE 132 OF KEY.C: 'P1': redefinition
*** ERROR C231 IN LINE 132 OF KEY.C: 'P1': redefinition
133 }
*** ERROR C141 IN LINE 133 OF KEY.C: syntax error near '}'
134
135
136
137 /* 主电机转动 */
138
139 int x
140
141 unsigned char output[6] ={0x08,0x24,0x16,0x48,0x32,0x40}
*** ERROR C129 IN LINE 141 OF KEY.C: missing ';' before 'unsigned'
142
143 unsigned i=0
144
145 while x>0
146 {
147 P1=output[i] ;
148
149 Delay();
150
151 i++;
152 if(i==6) i=0;
153 }
154
155
156 /* 排电机转动 */
157
158
159 void send(uchar add,uchar dat)
160 {
161 uchar ADS,i,j;
162 CLP=0;
163 LOAD=0;
164 DIN=0;
165 i=4;
166 while(i<16)
167 {
168 if(i<8)
169 {
170 ADS=add;
C51 COMPILER V8.05a KEY 05/08/2009 19:14:20 PAGE 4
171 }
172 else
173 {
174 ADS=dat;
175 }
176 for(j=8;j>=1;j--)
177 {
178
179 if((ADS&0x80)==0)
180 { DIN=0 ;}
181 else
182 { DIN=1;}
183 ADS=ADS<<1;
184
185 CLP=1;
186 CLP=0;
187 }
188 i=i+8;
189 }
190 LOAD=1;
191 }
192
193 void s_seg(uchar X1,uchar X2,uchar X3,uchar X4,uchar X5,uchar X6,uchar X7, uchar X8)
194 {
195 send(0x0c,0x01);//正常状态
196 send(0x0b,0x07);//设置扫描范围DIG0-7
197 send(0x0a,0x05);//设置亮度11/32
198 send(0x09,0xff);//采用译码方式
199
200 send(0x01,X1);
201 send(0x02,X2);
202 send(0x03,X3);
203 send(0x04,X4);
204 send(0x05,X5);
205 send(0x06,X6);
206 send(0x07,X7);
207 send(0x08,X8);
208 }
209
210
211
212
213
214
215
C51 COMPILATION COMPLETE. 0 WARNING(S), 9 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -