📄 keil.lst
字号:
C51 COMPILER V7.50 KEIL 04/02/2009 15:13:15 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE KEIL
OBJECT MODULE PLACED IN keil.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keil.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <absacc.h>
3 #define unit unsigned int
4 #define uchar unsigned char
5
6 /*定义各管脚*/
7 sbit P10=P1^0; /*调整时钟的时位*/
8 sbit P11=P1^1; /*调整时钟的分位*/
9 sbit L0=P1^4; /*时钟正常运行指示灯,1秒亮一次*/
10 sbit L1=P1^5; /*调整时钟的时位指示灯,调整时,灯亮*/
11 sbit L2=P1^6; /*调整时钟的分位指示灯,调整时,灯亮*/
12
13 sbit P20=P2^0; /*给时钟分位低位送上升沿*/
14 sbit P21=P2^1; /*给时钟分位高位送上升沿*/
15 sbit P22=P2^2; /*给时钟时位低位送上升沿*/
16 sbit P23=P2^3; /*给时钟时位高位送上升沿*/
17 sbit P27=P2^7; /*用于配合中断消抖,增强抗干扰能力*/
18
19 uchar data BUFFER[2]={00,12}; /*显示缓冲区(依次为低位,高位)*/
20 uchar data CLOCK[4]={0,0,0,12}; /*存放时钟时间(依次为百分秒,秒,分和时位)*/
21 uchar data BUFFER_A[2]={0,0}; /*存放调整时钟时间(分和时位)*/
22 uchar n; /*用来确定时钟的状态,0正常运行,1小时调整,2分钟调整,3数据更新*/
23 uchar m; /*用来表明定时器是否到了1S,若一秒到了,则刷新显示数据*/
24
25 /*数码管显示编码"0"-"9","A","-"*/
26 uchar code TABLE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
27
28
29 void display(void)
30 {
31 1
32 1 uchar disp;
33 1 disp=BUFFER[0]%10;
34 1 P20=0;
35 1 P0=TABLE[disp];
36 1 P20=1;P20=0;
37 1 disp=BUFFER[0]/10;
38 1 P21=0;
39 1 P0=TABLE[disp];
40 1 P21=1;P21=0;
41 1 disp=BUFFER[1]%10;
42 1 P22=0;
43 1 P0=TABLE[disp];
44 1 P22=1;P22=0;
45 1 disp=BUFFER[1]/10;
46 1 P23=0;
47 1 P0=TABLE[disp];
48 1 P23=1;P23=0;
49 1 }
50
51
52
53 void timer0(void) interrupt 1 using 1
54 {
55 1 /*重置定时初值*/
C51 COMPILER V7.50 KEIL 04/02/2009 15:13:15 PAGE 2
56 1 TH0=0x3c; TL0=0xbc; /*定时50MS,20次为一分钟*/
57 1
58 1
59 1
60 1
61 1 /*时钟处理*/
62 1 CLOCK[0]=CLOCK[0]+1;
63 1 if (CLOCK[0]==10)
64 1 {
65 2 L0=!L0; /*L0为正常运行指示灯,一秒闪烁一次*/
66 2 }
67 1 if (CLOCK[0]==20)
68 1 {
69 2 L0=!L0;
70 2 CLOCK[0]=0;
71 2 CLOCK[1]=CLOCK[1]+1;
72 2
73 2 if (CLOCK[1]==60)
74 2 {
75 3 CLOCK[1]=0;
76 3 m=1;
77 3 CLOCK[2]=CLOCK[2]+1;
78 3 if (CLOCK[2]==60)
79 3 {
80 4 CLOCK[2]=0;
81 4 CLOCK[3]=CLOCK[3]+1;
82 4 if (CLOCK[3]==24)
83 4 {
84 5 CLOCK[3]=0;
85 5 }
86 4 }
87 3 }
88 2 }
89 1 }
90 void main()
91 {
92 1 EA=1; ET0=1;IT1=1;
93 1 TMOD=0x01; /*T0方式1计时*/
94 1 TH0=0x3c; TL0=0xbc;
95 1 P20=0;P21=0;P22=0;P23=0;
96 1 TR0=1;
97 1 display();
98 1 n=0;
99 1 m=1;
100 1
101 1 for(;;)
102 1 {
103 2
104 2 if(n==1) /*小时,分钟调整,P1.0口为时调整,P1.1口为分调整*/
105 2 {
106 3 if(P10==0)
107 3 {
108 4 delay(); /*延时10MS去抖*/
*** WARNING C206 IN LINE 108 OF KEIL.C: 'delay': missing function-prototype
109 4 if (P10==0)
110 4 {
111 5 EX1=1;TR0=0;
112 5 while (!P10); /*如果P10发生翻转,则时加1*/
113 5 CLOCK[3]=CLOCK[3]+1;
114 5 if (CLOCK[3]==24) CLOCK[3]=0;
115 5 BUFFER_A[1]=CLOCK[3];
116 5 BUFFER_A[0]=CLOCK[2];
C51 COMPILER V7.50 KEIL 04/02/2009 15:13:15 PAGE 3
117 5 display_t();
*** WARNING C206 IN LINE 117 OF KEIL.C: 'display_t': missing function-prototype
118 5 }
119 4 }
120 3
121 3
122 3
123 3 if(P11==0)
124 3 {
125 4 delay();
126 4 if (P11==0)
127 4 {
128 5 EX1=1;TR0=0;
129 5 while (!P11);
130 5 CLOCK[2]=CLOCK[2]+1;
131 5 if (CLOCK[2]==60) CLOCK[2]=0;
132 5 BUFFER_A[0]=CLOCK[2];
133 5 BUFFER_A[1]=CLOCK[3];
134 5 display_t();
135 5
136 5 }
137 4 }
138 3 }
139 2 if(n==2)
140 2 {
141 3 n=0;
142 3 BUFFER[0]=CLOCK[2];
143 3 BUFFER[1]=CLOCK[3];
144 3 display();
145 3 TH0=0x3c; TL0=0xb0; /*如果更新数据,则重新开始计时下一50MS*/
146 3 TR0=1;
147 3 CLOCK[0]=0;CLOCK[1]=0;
148 3 m=1;
149 3 }
150 2 if (m==1)
151 2 {
152 3 m=0;
153 3
154 3 EX1=1;
155 3 BUFFER[0]=CLOCK[2];
156 3 BUFFER[1]=CLOCK[3];
157 3 display();
158 3
159 3 }
160 2 }
161 1 }
162
163
164
165 display_t(void)
166 {
167 1
168 1 uchar disp_t;
169 1 disp_t=BUFFER_A[0]%10;
170 1 P20=0;
171 1 P0=TABLE[disp_t];
172 1 P20=1;P20=0;
173 1 disp_t=BUFFER_A[0]/10;
174 1 P21=0;
175 1 P0=TABLE[disp_t];
176 1 P21=1;P21=0;
177 1 disp_t=BUFFER_A[1]%10;
C51 COMPILER V7.50 KEIL 04/02/2009 15:13:15 PAGE 4
178 1 P22=0;
179 1 P0=TABLE[disp_t];
180 1 P22=1;P22=0;
181 1 disp_t=BUFFER_A[1]/10;
182 1 P23=0;
183 1 P0=TABLE[disp_t];
184 1 P23=1;P23=0;
185 1 }
186 delay(void)
187 {
188 1 uchar a,b;
189 1 for(a=100;a>0;a--);
190 1 for(b=100;b>0;b--);
191 1 }
192
193
194
195 void intsvr1(void) interrupt 2 using 3
196 {
197 1 delay(); /*延时十毫秒,用于消抖*/
198 1 if (P27==0)
199 1 {
200 2
201 2 n=n+1;
202 2 TR0=0;
203 2 }
204 1
205 1 }
206
207
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 394 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -