📄 text1.lst
字号:
152 1 Delay ( 20 );
153 1 return ddata;
154 1 }
155
156 void BC7281Init(){
157 1 Write_7281 ( 0x12 ); // 写BC7281B工作模式寄存器
158 1 Write_7281 ( 0x8e ); // 扫描使能,扩展开关,164模式,扩展闪烁模式,输出反向,键盘工作模式为' 1 '
159 1 Write_7281 ( 0x11 ); // 写闪烁速度控制寄存器
160 1 Write_7281 ( 0x80 ); // 闪烁频率 2 HZ
161 1 Write_7281 ( 0x10 ); // 初始化时,不闪烁显示
162 1 Write_7281 ( 0xFF ); // 1不闪烁
163 1 Write_7281 ( 0x19 );
164 1 Write_7281 ( 0xFF );
165 1 }
166 min(unsigned char a,b,c,d){
167 1 unsigned char m;
168 1 m=a;
169 1 if(a>=b) m=b;
170 1 if(m>c) m=c;
171 1 if(m>d) m=d;
172 1 return( m);
173 1 }
174 zs(unsigned char j)
175 {unsigned char i;
176 1 unsigned int m;
177 1 m=1;
178 1 for(i=0;i<j;i++)
179 1 m*=10;
C51 COMPILER V7.50 TEXT1 06/17/2007 20:27:35 PAGE 4
180 1 return m;}
181 ///////////////////////////////////////////////////
182 //主函数
183 void main(){
184 1 unsigned char a,b,c,d, i,j,k,m,n,count1,count0,count2,count3,count4,read,k1[8],k2,m1;
185 1 unsigned int x,y,z;
186 1
187 1 n=0;a=0x10;b=0x10;c=0x10;d=0x10;count1=0;count2=0;count3=0;count4=0;count0=0;
188 1
189 1 WDTCN = 0XDE; //禁止看门狗
190 1 WDTCN = 0XAD;
191 1
192 1 PortInitialization (); // 初始化端口
193 1 ExternalClock (); // 起振外部时钟,使它成为系统时钟
194 1 Timer3Init();
195 1 ExternIntInit();
196 1 BC7281Init();
197 1 EA = 1; //开总中断
198 1 TMR3CN |= 0X04; //启动定时器
199 1 Write_7281(0x15);Write_7281(0x00);
200 1 Write_7281(0x15);Write_7281(0x10);
201 1 Write_7281(0x15);Write_7281(0x20);
202 1 Write_7281(0x15);Write_7281(0x30);
203 1 Write_7281(0x15);Write_7281(0x40);
204 1 Write_7281(0x15);Write_7281(0x50);
205 1 Write_7281(0x15);Write_7281(0x60); //hex译码,显示0
206 1 Write_7281(0x15);Write_7281(0x70); //hex译码,显示0*/
207 1 Delay(6);
208 1 while(1){
209 2 if(key_flag == 1){
210 3 key_flag = 0;
211 3 Write_7281(0x13 | 0x80);
212 3 Delay(6);Delay(6);Delay(6);Delay(6);Delay(6);Delay(6);Delay(6);
213 3 Delay(6);Delay(6);
214 3
215 3 read=Read_7281 ();
216 3 Delay(6);Delay(6);Delay(6);Delay(6);Delay(6);Delay(6);
217 3 n++;
218 3 m=min(a,b,c,d);
219 3 switch(read)
220 3 {case 0x0f:{ //F时所有有值复位
221 5 for(k=0;k<8;k++) {key_value[k]=0x00;
222 6 key_value1[k]=0x00;
223 6 k1[k]=0x00;}
224 5 n=0; read=0;
225 5 a=0x10;b=0x10;c=0x10;d=0x10;
226 5 k2=0;m1=0;
227 5 count1=0;count2=0;count3=0;count4=0;count0=0;
228 5 x=0;y=0;z=0;
229 5 Write_7281(0x15);Write_7281(0x00);
230 5 Write_7281(0x15);Write_7281(0x10);
231 5 Write_7281(0x15);Write_7281(0x20);
232 5 Write_7281(0x15);Write_7281(0x30);
233 5 Write_7281(0x15);Write_7281(0x40);
234 5 Write_7281(0x15);Write_7281(0x50);
235 5 Write_7281(0x15);Write_7281(0x60);
236 5 Write_7281(0x15);Write_7281(0x70);
237 5 Write_7281 ( 0x10 );
238 5 Write_7281 ( 0xFF );
239 5 }break;
240 4 case 0x0a:{
241 5 if(count1!=1){a=n;count1++;k2=0x0a;}
C51 COMPILER V7.50 TEXT1 06/17/2007 20:27:35 PAGE 5
242 5 else n--;
243 5 }break;
244 4 case 0x0b:{
245 5 if(count2!=1){b=n;count1++;k2=0x0b;}
246 5 else n--;
247 5 }break;
248 4 case 0x0c:{
249 5 if(count3!=1){c=n;count1++;k2=0x0c;}
250 5 else n--;
251 5 }break;
252 4 case 0x0d:{
253 5 if(count4!=1){d=n;count1++;k2=0x0d;}
254 5 else n--;
255 5 }break;
256 4
257 4 case 0x0e:{
258 5 if(count0!=1){count0++;m1=n;
259 6
260 6 for(i=0;i<m-1;i++)x+=key_value[8-m1+m-i]*zs(i);
261 6 for(i=0;i<=(m1-m-2);i++)y+=key_value[7-i]*zs(i);
262 6 if (k2==0x0a) z=x+y;
263 6 if (k2==0x0b) z=x-y;
264 6 if (k2==0x0c) z=x*y;
265 6 if (k2==0x0d) z=x/y;
266 6 for(i=0;i<8;i++)
267 6 k1[7-i]=z/zs(i)%10;
268 6 for(i=0;i<8;i++)
269 6 {Write_7281(add1[i]);Write_7281(add[k1[i]]); }
270 6
271 6
272 6 }else n--;
273 5 }break;
274 4
275 4 default :{for(i=0;i<7;i++)
276 5 key_value[i]=key_value[i+1];
277 5 key_value[7] =read;
278 5
279 5 if(m==0x10)for(j=0;j<8;j++)
280 5 {Write_7281(add1[j]);Write_7281(add[key_value[j]]);}
281 5 if(m!=0x10) {
282 6
283 6
284 6 for(i=0;i<7;i++)
285 6 key_value1[i]=key_value1[i+1];
286 6 key_value1[7] =read;
287 6
288 6 for(j=0;j<8;j++)
289 6 {Write_7281(add1[j]);Write_7281(add[key_value1[j]]);}}
290 5
291 5 };
292 4 }
293 3
294 3 Delay(6); Delay(6);Delay(6);Delay(6);Delay(6); }}}
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1643 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 92 ----
IDATA SIZE = ---- ----
C51 COMPILER V7.50 TEXT1 06/17/2007 20:27:35 PAGE 6
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 + -