📄 main.lst
字号:
C51 COMPILER V9.02 MAIN 01/01/2006 09:37:02 PAGE 1
C51 COMPILER V9.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\output\main.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\main.lst) OBJECT(.\output\mai
-n.obj)
line level source
1 #include "reg52.h"
2
3 unsigned char dspflag;
4 unsigned char keyflag;
5 unsigned char tflag;
6 unsigned char code dsp_code_ca[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
7
8 unsigned char keyscan(void);
9 void display(unsigned char d);
10
11 void main()
12 {
13 1 unsigned char temp;
14 1
15 1 TMOD = 0x02;
16 1 TH0 = 0x06;
17 1 TL0 = 0x06;
18 1 EA = 1;
19 1 ET0 = 1;
20 1 TR0 = 1;
21 1
22 1 while(1)
23 1 {
24 2 if(keyflag)
25 2 {
26 3 temp = keyscan();
27 3 keyflag = 0;
28 3 }
29 2 display(temp);
30 2 }
31 1 }
32
33 //定时器0中断服务函数
34 void isr_t0(void) interrupt 1
35 {
36 1 tflag++;
37 1 if(tflag == 16) // 4ms
38 1 {
39 2 dspflag++;
40 2 if(dspflag == 2)
41 2 dspflag = 0;
42 2 }
43 1 if(tflag == 20) //10ms
44 1 {
45 2 tflag = 0;
46 2 keyflag = 1;
47 2 }
48 1 }
49
50 // 4×4键盘矩阵扫描函数
51 unsigned char keyscan(void)
52 {
53 1 unsigned char keyvalue;
54 1
C51 COMPILER V9.02 MAIN 01/01/2006 09:37:02 PAGE 2
55 1 P3 = 0x7F; //S4 S5 S6 S7
56 1 switch(P3)
57 1 {
58 2 case 0x7E: keyvalue = 0;break;
59 2 case 0x7D: keyvalue = 4;break;
60 2 case 0x7B: keyvalue = 8;break;
61 2 case 0x77: keyvalue = 12;break;
62 2 default: break;
63 2 }
64 1 P3 = 0xBF; //S8 S9 S10 S11
65 1 switch(P3)
66 1 {
67 2 case 0xBE: keyvalue = 1;break;
68 2 case 0xBD: keyvalue = 5;break;
69 2 case 0xBB: keyvalue = 9;break;
70 2 case 0xB7: keyvalue = 13;break;
71 2 default: break;
72 2 }
73 1 P3 = 0xDF; //S12 S13 S14 S15
74 1 switch(P3)
75 1 {
76 2 case 0xDE: keyvalue = 2;break;
77 2 case 0xDD: keyvalue = 6;break;
78 2 case 0xDB: keyvalue = 10;break;
79 2 case 0xD7: keyvalue = 14;break;
80 2 default: break;
81 2 }
82 1 P3 = 0xEF; //S16 S17 S18 S19
83 1 switch(P3)
84 1 {
85 2 case 0xEE: keyvalue = 3;break;
86 2 case 0xED: keyvalue = 7;break;
87 2 case 0xEB: keyvalue = 11;break;
88 2 case 0xE7: keyvalue = 15;break;
89 2 default: break;
90 2 }
91 1 return keyvalue;
92 1 }
93
94 //数码管显示函数,显示两位
95 void display(unsigned char d)
96 {
97 1 if((dspflag == 0) && (d/10 != 0))
98 1 {
99 2 P0 = 0xFF;
100 2 P2 |= 0xE0;
101 2 P2 &= 0x1F;
102 2
103 2 P0 = dsp_code_ca[d/10];
104 2 P2 |= 0xE0;
105 2 P2 &= 0x1F;
106 2 P0 = 0x40;
107 2 P2 |= 0xC0;
108 2 P2 &= 0x3F;
109 2 }
110 1 if(dspflag == 1)
111 1 {
112 2 P0 = 0xFF;
113 2 P2 |= 0xE0;
114 2 P2 &= 0x1F;
115 2
116 2 P0 = dsp_code_ca[d%10];
C51 COMPILER V9.02 MAIN 01/01/2006 09:37:02 PAGE 3
117 2 P2 |= 0xE0;
118 2 P2 &= 0x1F;
119 2 P0 = 0x80;
120 2 P2 |= 0xC0;
121 2 P2 &= 0x3F;
122 2 }
123 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 315 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 2
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 + -