📄 shuzhishizhong_3.lst
字号:
C51 COMPILER V8.09 SHUZHISHIZHONG_3 10/15/2007 15:05:44 PAGE 1
C51 COMPILER V8.09, COMPILATION OF MODULE SHUZHISHIZHONG_3
OBJECT MODULE PLACED IN C:\DOCUME~1\ADMINI~1\桌面\他\SHUZHISHIZHONG_3.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\DOCUME~1\ADMINI~1\桌面\他\SHUZHISHIZHONG_3.C DB SB OE
line level source
1 /************************************************************
2 作者:邱星凌
3 版本:4.0
4 描述:采用两个中断来苗粟
5 *********************************************************/
6 #include <reg52.h>
7 #define OCS_FREQ (12000000UL) /*时钟周期*/
8 #define OCS_PER_INST (12) /*晶体频率*/
9 typedef unsigned int tWord; /*重定义INT*/
10 #define _TIMER0_COUNT (65536-(tWord)(OCS_FREQ/(OCS_PER_INST*200)))/*这是显示中断*/
11 #define _TIMER1_COUNT (65536-(tWord)(OCS_FREQ/(OCS_PER_INST*20)))/*这是最接近一秒的初值*/
12 #define _TEMES 250 /*去抖动*/
13 #define FO_VECTOR 1 /*timero的中断号*/
14 #define F1_VECTOR 3/*timer1的中段号*/
15 unsigned char n;/*保留p2的值**/
16 code v[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0~9
17 code scan[6]={0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};/*七段使能选择*/
18 typedef struct
19 {
20 char hour;
21 char minute;
22 char second;
23 }time; /*时间结果体*/
24 unsigned char i=0,keya=0,keyb=0,keyc=0,mode=0; /*计数变量 显示变量 按纽变量 模式变量*/
25 unsigned int timer0_tick;
26 sbit q3=P3^3; /*端口变量*/
27 sbit q7=P0^7;
28 time now; /*时间对象*/
29 /*中断服务函数*/
30 static void timer0_isr(void) interrupt FO_VECTOR
31 {
32 1 TR0=0;
33 1 TH0=(_TIMER0_COUNT/256);
34 1 TL0=(_TIMER0_COUNT%256);
35 1 TR0=1;
36 1 P1=0xFF;
37 1 P2=0xFF;
38 1 n= P2 & 0xFC;
39 1 q3=0;
40 1 if(keya!=0)
41 1 {
42 2 keya--; /*去抖动*/
43 2 if(keya==0 && n==0xF4 )
44 2 {
45 3 mode++;
46 3 if(mode==2)
47 3 {
48 4 mode=0;
49 4 }
50 3 }
51 2 }
52 1 else if(n==0xF4)
53 1 {
54 2 keya=_TEMES;
55 2 }
C51 COMPILER V8.09 SHUZHISHIZHONG_3 10/15/2007 15:05:44 PAGE 2
56 1 if(keyb!=0)
57 1 {
58 2 keyb--;
59 2 if(keyb==0 && n==0xDC && mode==1)
60 2 {
61 3 now.minute++;
62 3 if(now.minute==60)
63 3 {
64 4 now.minute=0;
65 4 }
66 3
67 3 }
68 2 }
69 1 else if(n==0xDC)
70 1 {
71 2 keyb=_TEMES;
72 2 }
73 1 if(keyc!=0)
74 1 {
75 2 keyc--;
76 2 if(keyc==0 && n==0x7C && mode==1)
77 2 {
78 3 now.hour++;
79 3 if(now.hour==24)
80 3 {
81 4 now.hour=0;
82 4 }
83 3 }
84 2 }
85 1 else if(n==0x7C)
86 1 {
87 2 keyc=_TEMES;
88 2 }
89 1
90 1 P2=0xFF;
91 1 P0=0xFF;
92 1 switch (mode)
93 1 {
94 2 case 0: /*显示模式下显示*/
95 2 switch(i)
96 2 {
97 3 case 0:
98 3 P0=v[now.second%10];
99 3 break;
100 3 case 1:
101 3 P0=v[now.second/10];
102 3 break;
103 3 case 2:
104 3 P0=v[now.minute%10];
105 3 q7=0;
106 3 break;
107 3 case 3:
108 3 P0=v[now.minute/10];
109 3 break;
110 3 case 4:
111 3 P0=v[now.hour%10];
112 3 q7=0;
113 3 break;
114 3 case 5:
115 3 P0=v[now.hour/10];
116 3 break;
117 3 default :
C51 COMPILER V8.09 SHUZHISHIZHONG_3 10/15/2007 15:05:44 PAGE 3
118 3 break;
119 3 }
120 2 break;
121 2 case 1: /*设置模式显示*/
122 2
123 2 switch (i)
124 2 {
125 3 case 0:
126 3
127 3 P0=v[0];
128 3 now.second=0;
129 3 timer0_tick=0;
130 3 break;
131 3 case 1:
132 3
133 3 P0=v[0];
134 3 break;
135 3 case 2:
136 3
137 3 P0=v[now.minute%10];
138 3 q7=0;
139 3
140 3
141 3 break;
142 3 case 3:
143 3 P2=0xFF;
144 3 P0=0xFF;
145 3 P0=v[now.minute/10];
146 3 break;
147 3 case 4:
148 3
149 3 P0=v[now.hour%10];
150 3 q7=0;
151 3 break;
152 3 case 5:
153 3
154 3 P0=v[now.hour/10];
155 3 break;
156 3 default :
157 3 break;
158 3 }
159 2 default :
160 2 break;
161 2
162 2 }
163 1 P2=scan[i];
164 1 i++;
165 1 if(i==6)
166 1 {
167 2 i=0;
168 2 }
169 1 }
170 static void timer1_isr(void) interrupt F1_VECTOR
171 {
172 1 TR1=0;
173 1 TH1=(_TIMER1_COUNT/256);
174 1 TL1=(_TIMER1_COUNT%256);
175 1 TR1=1;
176 1 timer0_tick++;
177 1 if(timer0_tick==170)
178 1 {
179 2 timer0_tick=0;
C51 COMPILER V8.09 SHUZHISHIZHONG_3 10/15/2007 15:05:44 PAGE 4
180 2 i=0;
181 2 now.second++;
182 2 if(now.second==60)
183 2 {
184 3 now.second=0;
185 3 now.minute++;
186 3 if(now.minute==60)
187 3 {
188 4 now.hour++;
189 4 now.minute=0;
190 4 if(now.hour==24)
191 4 {
192 5 now.hour=0;
193 5 }
194 4 }
195 3 }
196 2 }
197 1 }
198
199 static void timer0_initialize (void)
200 {
201 1 EA=0;
202 1
203 1 TR0=0;
204 1 TMOD &=0xF0;
205 1 TMOD &=0x01;
206 1 TH0=(_TIMER0_COUNT/256);
207 1 TL0=(_TIMER0_COUNT%256);
208 1 ET0=1;
209 1 PT0=0;
210 1 TF0=0;
211 1 TR0=1;
212 1 EA=1;
213 1
214 1 }
215 static void timer1_initialize (void)
216 {
217 1 EA=0;
218 1 timer0_tick=0;
219 1 TR1=0;
220 1 TMOD &=0xF0;
221 1 TMOD &=0x01;
222 1 TH1=(_TIMER0_COUNT/256);
223 1 TL1=(_TIMER0_COUNT%256);
224 1 ET1=1;
225 1 PT1=1;
226 1 TF1=0;
227 1 TR1=1;
228 1 EA=1;
229 1
230 1 }
231
232 void main (void)
233 {
234 1 timer0_initialize();
235 1 timer1_initialize();
236 1 while(1)
237 1 {
238 2 PCON |=0x01;
239 2 }
240 1 }
241
C51 COMPILER V8.09 SHUZHISHIZHONG_3 10/15/2007 15:05:44 PAGE 5
242
243
C51 COMPILER V8.09 SHUZHISHIZHONG_3 10/15/2007 15:05:44 PAGE 6
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 -----
timer1_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
ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
TF1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008FH 1
TH0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008CH 1
TH1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008DH 1
TL0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008AH 1
TL1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008BH 1
PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1
now. . . . . . . . . . . . . . . . . . PUBLIC DATA STRUCT 0004H 3
PT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BBH 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 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 -----
timer1_initialize. . . . . . . . . . . STATIC CODE PROC 0000H -----
v. . . . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 20
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 610 ----
CONSTANT SIZE = 32 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V8.09 SHUZHISHIZHONG_3 10/15/2007 15:05:44 PAGE 7
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -