📄 shuzhishizhong_1.lst
字号:
C51 COMPILER V8.09 SHUZHISHIZHONG_1 10/15/2007 15:00:13 PAGE 1
C51 COMPILER V8.09, COMPILATION OF MODULE SHUZHISHIZHONG_1
OBJECT MODULE PLACED IN C:\DOCUME~1\ADMINI~1\桌面\饿\SHUZHISHIZHONG_1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\DOCUME~1\ADMINI~1\桌面\饿\SHUZHISHIZHONG_1.C DB SB OE
line level source
1 /************************************************************
2 作者:邱星凌
3 版本:2.0
4 描述:采用硬件时沿1秒一般是10倍关系,每十毫秒显示一次
5
6 *********************************************************/
7 #include <reg52.h>
8 #define OCS_FREQ (12000000UL) /*时钟周期*/
9 #define OCS_PER_INST (12) /*晶体频率*/
10 typedef unsigned int tWord; /*重定义INT*/
11 #define _TIMER0_COUNT (65536-(tWord)(OCS_FREQ/(OCS_PER_INST*200))) /*这是最接近一秒的初值*/
12 #define _TEMES 200 /*去抖动*/
13 #define FO_VECTOR 1 /*timero的中断号*/
14 unsigned char n;/*保留p2的值**/
15 code v[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0~9
16 code scan[6]={0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};/*七段使能选择*/
17 typedef struct
18 {
19 char hour;
20 char minute;
21 char second;
22 }time; /*时间结果体*/
23 unsigned char i=0,keya=0,keyb=0,keyc=0,mode=0; /*计数变量 显示变量 按纽变量 模式变量*/
24 unsigned int timer0_tick;
25 sbit q3=P3^3; /*端口变量*/
26 sbit q7=P0^7;
27 time now; /*时间对象*/
28 /*中断服务函数*/
29 static void timer0_isr(void) interrupt FO_VECTOR
30 {
31 1 TR0=0;
32 1 TH0=(_TIMER0_COUNT/256);
33 1 TL0=(_TIMER0_COUNT%256);
34 1 TR0=1;
35 1 P1=0xFF;
36 1 P2=0xFF;
37 1 n= P2 & 0xFC;
38 1 q3=0;
39 1 if(keya!=0)
40 1 {
41 2 keya--; /*去抖动*/
42 2 if(keya==0 && n==0xF4 )
43 2 {
44 3 mode++;
45 3 if(mode==2)
46 3 {
47 4 mode=0;
48 4 }
49 3 }
50 2 }
51 1 else if(n==0xF4)
52 1 {
53 2 keya=_TEMES;
54 2 }
55 1 if(keyb!=0)
C51 COMPILER V8.09 SHUZHISHIZHONG_1 10/15/2007 15:00:13 PAGE 2
56 1 {
57 2 keyb--;
58 2 if(keyb==0 && n==0xDC)
59 2 {
60 3 now.minute++;
61 3 if(now.minute==60)
62 3 {
63 4 now.minute=0;
64 4 }
65 3
66 3 }
67 2 }
68 1 else if(n==0xDC)
69 1 {
70 2 keyb=_TEMES;
71 2 }
72 1 if(keyc!=0)
73 1 {
74 2 keyc--;
75 2 if(keyc==0 && n==0x7C)
76 2 {
77 3 now.hour++;
78 3 if(now.hour==24)
79 3 {
80 4 now.hour=0;
81 4 }
82 3 }
83 2 }
84 1 else if(n==0x7C)
85 1 {
86 2 keyc=_TEMES;
87 2 }
88 1 timer0_tick++;
89 1 if(timer0_tick==1545) /**/
90 1 {
91 2 timer0_tick=0;
92 2 i=0;
93 2 now.second++;
94 2 if(now.second==60)
95 2 {
96 3 now.second=0;
97 3 now.minute++;
98 3 if(now.minute==60)
99 3 {
100 4 now.hour++;
101 4 now.minute=0;
102 4 if(now.hour==24)
103 4 {
104 5 now.hour=0;
105 5 }
106 4 }
107 3 }
108 2 }
109 1 P2=0xFF;
110 1 P0=0xFF;
111 1 switch (mode)
112 1 {
113 2 case 0: /*显示模式下显示*/
114 2 switch(i)
115 2 {
116 3 case 0:
117 3 P0=v[now.second%10];
C51 COMPILER V8.09 SHUZHISHIZHONG_1 10/15/2007 15:00:13 PAGE 3
118 3 break;
119 3 case 1:
120 3 P0=v[now.second/10];
121 3 break;
122 3 case 2:
123 3 P0=v[now.minute%10];
124 3 q7=0;
125 3 break;
126 3 case 3:
127 3 P0=v[now.minute/10];
128 3 break;
129 3 case 4:
130 3 P0=v[now.hour%10];
131 3 q7=0;
132 3 break;
133 3 case 5:
134 3 P0=v[now.hour/10];
135 3 break;
136 3 default :
137 3 break;
138 3 }
139 2 break;
140 2 case 1: /*设置模式显示*/
141 2
142 2 switch (i)
143 2 {
144 3 case 0:
145 3
146 3 P0=v[0];
147 3 now.second=0;
148 3 timer0_tick=0;
149 3 break;
150 3 case 1:
151 3
152 3 P0=v[0];
153 3 break;
154 3 case 2:
155 3
156 3 P0=v[now.minute%10];
157 3 q7=0;
158 3
159 3
160 3 break;
161 3 case 3:
162 3 P2=0xFF;
163 3 P0=0xFF;
164 3 P0=v[now.minute/10];
165 3 break;
166 3 case 4:
167 3
168 3 P0=v[now.hour%10];
169 3 q7=0;
170 3 break;
171 3 case 5:
172 3
173 3 P0=v[now.hour/10];
174 3 break;
175 3 default :
176 3 break;
177 3 }
178 2 default :
179 2 break;
C51 COMPILER V8.09 SHUZHISHIZHONG_1 10/15/2007 15:00:13 PAGE 4
180 2
181 2 }
182 1 P2=scan[i];
183 1 i++;
184 1 if(i==6)
185 1 {
186 2 i=0;
187 2 }
188 1 }
189
190 static void timer0_initialize (void)
191 {
192 1 EA=0;
193 1 timer0_tick=0;
194 1 TR0=0;
195 1 TMOD &=0xF0;
196 1 TMOD &=0x01;
197 1 TH0=(_TIMER0_COUNT/256);
198 1 TL0=(_TIMER0_COUNT%256);
199 1 ET0=1;
200 1 PT0=1;
201 1 TF0=0;
202 1 TR0=1;
203 1 EA=1;
204 1
205 1 }
206
207 void main (void)
208 {
209 1 timer0_initialize();
210 1 while(1)
211 1 {
212 2 PCON |=0x01;
213 2 }
214 1 }
215
216
217
C51 COMPILER V8.09 SHUZHISHIZHONG_1 10/15/2007 15:00:13 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
timer0_isr . . . . . . . . . . . . . . STATIC CODE PROC 0000H -----
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
tWord. . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
q3 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
mode . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0000H 1
scan . . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0014H 12
q7 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0087H 1
keya . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0001H 1
keyb . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0002H 1
keyc . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0003H 1
time . . . . . . . . . . . . . . . . . TYPEDEF ----- STRUCT ----- 3
hour . . . . . . . . . . . . . . . . MEMBER ----- CHAR 0000H 1
minute . . . . . . . . . . . . . . . MEMBER ----- CHAR 0001H 1
second . . . . . . . . . . . . . . . MEMBER ----- CHAR 0002H 1
PCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0087H 1
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
TH0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008CH 1
TL0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008AH 1
PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1
now. . . . . . . . . . . . . . . . . . PUBLIC DATA STRUCT 0004H 3
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
timer0_tick. . . . . . . . . . . . . . PUBLIC DATA U_INT 0007H 2
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
i. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0009H 1
n. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 000AH 1
timer0_initialize. . . . . . . . . . . STATIC CODE PROC 0000H -----
v. . . . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 20
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 555 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 ----
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 + -