📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 07/30/2008 23:55:01 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <absacc.h>
3 //code ledyang[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
4 // 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //0~9,A~F
5 unsigned char code seg_7[]={//定义数码管字型数据
6 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, //0123456789
7 0x77,0x7C,0x39,0x5E,0x79,0x71, //AbCdEF
8 0x40, //-
9 0x00 //空白
10 };
11 unsigned char code choose[]={0xfe,0xfd,0xfb,0xf7}; //位选
12 unsigned char data counter[]={0,0,0,0};
13 unsigned char data buffer[]={0,0,0,0};
14 unsigned char k, c=0;
15 unsigned int num=0,KT=0;
16 void delay(unsigned char m)
17 {
18 1 unsigned char i,j;
19 1 for(i=0;i<m;i++)
20 1 for(j=0;j<120;j++);
21 1 }
22 void getch()
23 {
24 1 unsigned char X,Y,Z,cc;
25 1 P2=0xff;
26 1 P2=0x0f; //行置1
27 1 if(P2!=0x0f) //可能有键按下
28 1 {
29 2 delay(20);
30 2 if(P2!=0x0f) //确实有键按下
31 2 {
32 3 X=P2; //保存P2的值
33 3 P2=0xf0; //列置1
34 3 Y=P2;
35 3 Z=X|Y; //取键盘值
36 3 c++; //标志位
37 3 //if(c==17) c=0;
38 3 if(c==9) c=0;
39 3 switch(Z)
40 3 {
41 4 case 0x7e: k=0;break;
42 4 case 0x7d: k=1;break;
43 4 case 0x7b: k=2;break;
44 4 case 0x77: k=3;break;
45 4 case 0xbe: k=4;break;
46 4 case 0xbd: k=5;break;
47 4 case 0xbb: k=6;break;
48 4 case 0xb7: k=7;break;
49 4 case 0xde: k=8;break;
50 4 case 0xdd: k=9;break;
51 4 case 0xdb: KT=10;break;
52 4 case 0xd7: KT=11;break;
53 4 case 0xee: KT=12;break;
54 4 case 0xed: KT=13;break;
55 4 case 0xeb: KT=14;break;
C51 COMPILER V7.50 MAIN 07/30/2008 23:55:01 PAGE 2
56 4 case 0xe7: KT=15;break;
57 4 }
58 3
59 3 for(cc=c;cc-1>0;cc--)
60 3 counter[cc-1]=counter[cc-2];
61 3 counter[0]=k;
62 3
63 3 while(P2!=0xf0);//检测案件是否弹起
64 3 }
65 2 }
66 1 }
67
68 void display_number()
69 {
70 1 unsigned char i;
71 1 for(i=0;i<4;i++)
72 1 {
73 2 P0=seg_7[counter[i]];
74 2 P1=choose[i];
75 2 delay(1);
76 2 P1=0xff;
77 2 }
78 1 }
79
80 void display()
81 {
82 1 unsigned int i;
83 1 num=counter[0]*1000+counter[1]*100+counter[2]*10+counter[3];
84 1 buffer[0]=num/1000; buffer[1]=num%1000/100;
85 1 buffer[2]=num%100/10; buffer[3]=num%10;
86 1 for(i=0;i<4;i++)
87 1 {
88 2 num--;
89 2 P0=seg_7[buffer[i]];
90 2 P1=choose[i];
91 2 delay(1);
92 2 P1=0xff;
93 2
94 2 }
95 1 }
96
97 void main(void)
98 {
99 1 while(1)
100 1 {
101 2 unsigned char c=0;
102 2 P2=0xff;
103 2 getch();
104 2 display_number();
105 2 if(KT>=10&&KT<=15)
106 2 goto loop;
107 2 }
108 1 loop:
109 1 while(1)
110 1 {
111 2 display();
112 2 }
113 1 }
114
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V7.50 MAIN 07/30/2008 23:55:01 PAGE 3
CODE SIZE = 491 ----
CONSTANT SIZE = 22 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 1
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 + -