📄 hanglishikeybanchen.lst
字号:
C51 COMPILER V6.23a HANGLISHIKEYBANCHEN 03/16/2006 11:40:05 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE HANGLISHIKEYBANCHEN
OBJECT MODULE PLACED IN .\HangliShiKeyBanChen.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ..\SCR\HangliShiKeyBanChen.c BROWSE DEBUG OBJECTEXTEND PRINT(.\HangliShiKey
-BanChen.lst) OBJECT(.\HangliShiKeyBanChen.obj)
stmt level source
1
2
3
4
5 //c语言 行列键盘数码管加发光二级管
6
7 #include"at89x52.h"
8 sbit LampFull=P3^7;//红色
9 sbit LampEempty=P3^6; //绿色
10 unsigned char OverFlag=0;
11 #define KeyBufSize 12
12 unsigned char a[]={0x3f,0x06,0x5b,0x4f,0x66 ,0x6d ,0x7d ,0x07 ,0x7f ,0x6f ,0x77 ,0x7c};
13 unsigned char dispbuf[KeyBufSize],JianZi,PointW,PointR; //全局变量
14 void delay(unsigned char j)
15 {
16 1 unsigned char m,k;
17 1 for(m=0;m<j;m++)
18 1 for(k=0;k<5;k++);
19 1 }
20 unsigned char PutKey()
21 {
22 1 if((PointW-PointR)==KeyBufSize-1) {LampEempty=0;LampFull=1;return 255;}
23 1 if(PointW>=KeyBufSize) { PointW=0; OverFlag=1;}
24 1 if((PointW==PointR)&(OverFlag==1)){LampEempty=0;LampFull=1;OverFlag=0;return 255;}
25 1 dispbuf[PointW]=JianZi;
26 1 PointW++;
27 1 }
28 unsigned char GetKey()
29 { unsigned char x;
30 1 if((PointW==PointR)&(OverFlag==0)) {LampEempty=1;LampFull=0;return 255;}
31 1 if(PointR>=KeyBufSize) PointR=0;
32 1 x=dispbuf[PointR];
33 1 PointR++;
34 1 return x;
35 1 }
36
37 void Key()
38 {
39 1 unsigned char x,y,key;
40 1 P2=0x0f; //低四位输入1,高四位输出0
41 1 x=P2;
42 1 x=x&0x0f; //P2输入后,清高四位,作为X值
43 1 P2=0xf0; //高四位输入1,低四位输出0
44 1 y=P2;
45 1 y=y&0xf0; //P2输入后移位到低四位,并清高四位,作为Y值
46 1 key=x|y;
47 1 key=key&0xfe;
48 1 if(key==254) return;
49 1 switch(key)
50 1 {
51 2 case 236: JianZi=3; break;
52 2 case 234: JianZi=2; break;
53 2 case 230: JianZi=1; break;
54 2
C51 COMPILER V6.23a HANGLISHIKEYBANCHEN 03/16/2006 11:40:05 PAGE 2
55 2 case 220: JianZi=6; break;
56 2 case 218: JianZi=5; break;
57 2 case 214: JianZi=4; break;
58 2
59 2 case 188: JianZi=9; break;
60 2 case 186: JianZi=8; break;
61 2 case 182: JianZi=7; break;
62 2
63 2 case 124: JianZi=0; break;
64 2 case 122: JianZi=11; break;
65 2 case 118: JianZi=10; break;
66 2 }
67 1 PutKey();
68 1 }
69 void display(void) //显示函数
70 {
71 1 static unsigned char i,j;
72 1 j=i;
73 1 i=GetKey();
74 1 if (i==255)
75 1 { P0=a[j];
76 2 i=j;}
77 1 else P0=a[i];
78 1 }
79 main()
80 {
81 1 LampFull=0;
82 1 LampEempty=0;
83 1 while(1)
84 1 {
85 2 Key();
86 2 display();
87 2 LampFull=0;
88 2 LampEempty=0;
89 2 }
90 1 }
91
92
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 327 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 30 ----
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 + -