📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 10/26/2008 17:03:12 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil C51\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <regx52.h>
2 #include "KeyBoardService.h"
3 #include "seg.h"
4
5 unsigned char press_flag=0;
6 unsigned char key_value;
7
8 #define uchar unsigned char
9 uchar deta, sec, min, hour;
10 uchar display[4];
11 uchar i,xint_flag;
12 extern uchar modal;
13 unsigned int k,j;
14 unsigned int count_pt;
15
16 void T2Init()
17 {
18 1 T2MOD=0x01; //自动重装方式2
19 1 T2CON=0x00;
20 1 TH2=0x4c;
21 1 TL2=0x00;
22 1 RCAP2H=0x4c; //50ms定时0x4c00 修改至54ms 10%
23 1 RCAP2L=0x00;
24 1 ET2=1;
25 1 }
26
27 void Int0Init()
28 {
29 1 EX0=1;
30 1 IT0=1;
31 1 PX0=1;
32 1 }
33
34 void TInit()
35 {
36 1 TMOD=0x31; //T0方式1 60ms键盘扫描 T1方式2控制EX0
37 1 TH0=0x28;
38 1 TL0=0x00;
39 1 ET0=1;
40 1 TR0=1;
41 1 // TH1=
42 1 }
43
44 void Init()
45 {
46 1 T2Init();
47 1 TInit();
48 1 Int0Init();
49 1 }
50
51 void T0_Int() interrupt 1
52 {
53 1 TH0=0x28;
54 1 TL0=0x00;
55 1 key_value = P1|0x1f;
C51 COMPILER V7.06 MAIN 10/26/2008 17:03:12 PAGE 2
56 1 if(key_value != 0xff)
57 1 {
58 2 if(press_flag == 0)
59 2 press_flag=1;
60 2 else if(press_flag == 1)
61 2 press_flag = 2;
62 2 }
63 1 else press_flag = 0;
64 1 }
65
66 void T2_Int() interrupt 5
67 {
68 1 EA=0;
69 1 TF2=0;
70 1 deta++;
71 1 if(deta >= 20)
72 1 {
73 2 sec++;
74 2 deta = 0;
75 2 }
76 1 if(sec >= 60)
77 1 {
78 2 sec = 0;
79 2 min++;
80 2 }
81 1 if(min >= 60)
82 1 {
83 2 min = 0;
84 2 hour++;
85 2 }
86 1 if(hour >= 24)
87 1 {
88 2 hour = 0;
89 2 }
90 1 if(modal == 0)
91 1 {
92 2 if(xint_flag != 1)
93 2 {
94 3 display[3] = min%10;
95 3 display[2] = min/10;
96 3 display[1] = hour%10;
97 3 display[0] = hour/10;
98 3 }
99 2 }
100 1 EA = 1;
101 1 }
102
103 void Int0() interrupt 0
104 {
105 1 EA = 0;
106 1 xint_flag = 1;
107 1
108 1 EA = 1;
109 1 }
110
111
112 void LCDdisplay()
113 {
114 1 count_pt++;
115 1 for(i=0; i<4; i++)
116 1 {
117 2 WriteCsData(4);
C51 COMPILER V7.06 MAIN 10/26/2008 17:03:12 PAGE 3
118 2 WriteSegData(display[i]);
119 2 WriteCsData(i);
120 2 }
121 1 if(modal == 1)
122 1 {
123 2 WriteCsData(4);
124 2 WritePoint(1);
125 2 WriteCsData(1);
126 2 }
127 1 else if(modal == 0)
128 1 {
129 2 if(count_pt > 2000) //display[3]会再次被点亮
130 2 {
131 3 count_pt = 0;
132 3 }
133 2 else if(count_pt < 1000)
134 2 {
135 3 WriteCsData(4);
136 3 WritePoint(1);
137 3 WriteCsData(1);
138 3 }
139 2 else
140 2 {
141 3
142 3 }
143 2 }
144 1 }
145
146 void delay(unsigned int k)
147 {
148 1 while(--k)
149 1 for(j = 255; j>0; j--);
150 1 }
151
152 void main()
153 {
154 1 Init();
155 1 TR2=1;
156 1 EA=1;
157 1 while(1)
158 1 {
159 2 if(hour > 8 && hour < 22)
160 2 {
161 3 EX0=0;
162 3 }
163 2 else EX1=1;
164 2
165 2 if(xint_flag == 1)
166 2 {
167 3 P1_0=~P1_0;
168 3 delay(10);
169 3 }
170 2 KeyBoardService();
171 2 LCDdisplay();
172 2 }
173 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 394 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
C51 COMPILER V7.06 MAIN 10/26/2008 17:03:12 PAGE 4
PDATA SIZE = ---- ----
DATA SIZE = 18 ----
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 + -