📄 text1.lst
字号:
C51 COMPILER V8.02 TEXT1 04/18/2006 09:24:23 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <AT89X52.H>
2 unsigned char code SEG7[11]={0xC0,/*0*/
3 0xF9,/*1*/
4 0xA4,/*2*/
5 0xB0,/*3*/
6 0x99,/*4*/
7 0x92,/*5*/
8 0x82,/*6*/
9 0xF8,/*7*/
10 0x80,/*8*/
11 0x90,/*9*/
12 0xbf,/*-*/
13 };
14
15 unsigned short int tcount;
16
17 struct time
18 {
19 unsigned char second;
20 unsigned char minute;
21 unsigned char hour;
22 }time1;
23
24 void delay(k)
25 unsigned int k; //延时子程序
26 {
27 1 unsigned char j;
28 1 while((k--)!=0)
29 1 for(j=0;j<125;j++);
30 1 }
31
32 TimeUpDown(n,x,y) //时钟调整子程序
33 unsigned char n,x,y;
34 {
35 1 if(P1_1==0)
36 1 {
37 2 delay(50);
38 2 if(P1_1==0)
39 2 {
40 3 n++;
41 3 if(n==x)
42 3 n=0;
43 3 while(P1_1==0);
44 3 }
45 2 }
46 1
47 1 if(P1_2==0)
48 1 {
49 2 delay(50);
50 2 if(P1_2==0)
51 2 {
52 3 if(n==0)
53 3 n=y;
54 3 else
55 3 n--;
C51 COMPILER V8.02 TEXT1 04/18/2006 09:24:23 PAGE 2
56 3 while(P1_2==0);
57 3 }
58 2 }
59 1 return n;
60 1 }
61
62 void display(DisSecondH,DisSecondL,DisMinutH,DisMinutL,DisHourH,DisHourL)
63 unsigned char DisSecondH,DisSecondL,DisMinutH,DisMinutL,DisHourH,DisHourL; //显示子程序
64 {
65 1 P0=SEG7[DisSecondH]; //显示秒钟的十位
66 1 P2=0x80;
67 1 delay(2);
68 1
69 1 P0=SEG7[DisSecondL]; //显示分钟的个位
70 1 P2=0x40;
71 1 delay(2);
72 1
73 1 P0=0xbf; //显示-
74 1 P2=0x20;
75 1 delay(2);
76 1
77 1 P0=SEG7[DisMinutH]; //显示秒钟的十位
78 1 P2=0x10;
79 1 delay(2);
80 1
81 1 P0=SEG7[DisMinutL]; //显示分钟的个位
82 1 P2=0x08;
83 1 delay(2);
84 1
85 1 P0=0xbf; //显示-
86 1 P2=0x04;
87 1 delay(2);
88 1
89 1 P0=SEG7[DisHourH]; //显示小时的个位
90 1 P2=0x02;
91 1 delay(2);
92 1
93 1 if(DisHourL==0)
94 1 P0=0xff;
95 1 else
96 1 P0=SEG7[DisHourL]; //显示小时的十位
97 1 P2=0x01;
98 1 delay(2);
99 1 }
100
101 main()
102 {
103 1 unsigned char Flag;
104 1 TMOD = 0x01;
105 1 TH0 = (65536-50000)/256;
106 1 TL0 = (65536-50000)%256;
107 1 ET0 = 1;
108 1 EA = 1;
109 1
110 1
111 1 while(1)
112 1 {
113 2 if(P1_0 == 0) //设置标志位 Flag
114 2 {
115 3 delay(50);
116 3 if(P1_0 == 0)
117 3 {
C51 COMPILER V8.02 TEXT1 04/18/2006 09:24:23 PAGE 3
118 4 TR0 = 0;
119 4 Flag++;
120 4 if(Flag > 3)
121 4 Flag = 0;
122 4 }
123 3 while(P1_0 == 0);
124 3 }
125 2
126 2 switch(Flag)
127 2 {
128 3 case 0:
129 3 TR0=1;
130 3 display(time1.second%10,time1.second/10,time1.minute%10,time1.minute/10,time1.hour%10,time1.hour/10);
131 3 break;
132 3
133 3 case 1: //时钟小时调整
134 3 TR0=0;
135 3 time1.hour=TimeUpDown(time1.hour,24,23);
136 3 display(10,10,10,10,time1.hour%10,time1.hour/10);
137 3 break;
138 3
139 3 case 2: //时钟分钟调整
140 3 time1.minute=TimeUpDown(time1.minute,60,59);
141 3 display(10,10,time1.minute%10,time1.minute/10,10,10);
142 3 break;
143 3
144 3 case 3: //时钟秒调整
145 3 time1.second=TimeUpDown(time1.second,60,59);
146 3 display(time1.second%10,time1.second/10,10,10,10,10);
147 3 break;
148 3
149 3 default:
150 3 break;
151 3 }
152 2
153 2 }
154 1 }
155
156
157
158 void t0(void) interrupt 1 using 0
159
160 {
161 1
162 1 tcount++;
163 1 if(tcount==10)
164 1 {
165 2 tcount=0;
166 2 time1.second++;
167 2 }
168 1
169 1 if (time1.second>=60)
170 1 {
171 2 time1.second=0;
172 2 time1.minute++;
173 2 }
174 1
175 1 if (time1.minute>=60)
176 1 {
177 2 time1.minute=0;
178 2 time1.hour++;
179 2 }
C51 COMPILER V8.02 TEXT1 04/18/2006 09:24:23 PAGE 4
180 1
181 1 if(time1.hour>=24)
182 1 time1.hour=0;
183 1
184 1 TH0=(65536-50000)/256;
185 1 TL0=(65536-50000)%256;
186 1 }
187
188
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 493 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 7
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 + -