📄 main.lst
字号:
C51 COMPILER V7.00 MAIN 09/30/2007 23:44:12 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "ATMEL89X51.H"
2 #include <intrins.h>
3
4 /*************************ds1302与at89s52引脚连接********************/
5 sbit T_RST=P3^5;
6 sbit T_CLK=P3^6;
7 sbit T_IO=P3^7;
8
9 #define KEY_CODE 0x0f
10 #define KEY_PORT P2
11 unsigned char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~~9段码 //0~~9段码
12 unsigned char play_bit[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //确定哪一位显示
13 unsigned char at24c02_velual[6];
14 unsigned char key_velual;
15 unsigned char Playvelual=0;
16 unsigned char diode_set;
17 unsigned char PlayMode_low = 1, PlayMode_hi = 0;
18 unsigned char PlayAdd = 0,PlaySub = 0;
19 unsigned char a1=0,a2=0,a3=0,a4=0,a5=0,a6=0;
20 unsigned int flash_cont=0;
21 //unsigned char clock_set[6]; //设置定时时间
22 unsigned char led_play=0; //点亮led指示灯
23 unsigned char play_mode = 0;
24 unsigned char clock_cutt[15] = {0,0,12,1,1,07,0,0,12,0,0,12,0,0,12}; //秒,分,时,日,月,年,定时1秒分时
-,定时2秒分时,定时3秒分时,
25 unsigned char yue_fen[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
26 unsigned char mode_cont = 0;
27
28 void Read_key_code(void);
29 void delay(unsigned char a);
30 led_disp(unsigned char num,unsigned char vdata,unsigned char on_switch);
31 Key_set(unsigned char sw);
32
33 void time_interrupt_init(void)
34 {
35 1 TMOD = 0x01;
36 1 TH0 = -(50000/256);
37 1 TL0 = -(50000%256);
38 1 ET0 = 1;
39 1 TR0 = 1;
40 1 EA = 1;
41 1 }
42
43 void time0(void) interrupt 1
44 {
45 1 TH0 = -(50000/256);
46 1 TL0 = -(50000%256);
47 1 Read_key_code();
48 1 Key_set(key_velual);
49 1 }
50
51 unsigned key_flag=0;
52
53
54 void Read_key_code(void)
C51 COMPILER V7.00 MAIN 09/30/2007 23:44:12 PAGE 2
55 {
56 1 P2 = 0x0f;
57 1 if(key_flag==0)
58 1 {
59 2
60 2 if((P2 & 0x0f) != 0x0f)
61 2 {
62 3 P2 = 0x0f;
63 3 delay(10);
64 3 if((P2&0x0f) != 0x0f)
65 3 {
66 4 key_velual = P2 & 0x0f;
67 4 // while((P2&0x0f)!=0x0f);
68 4 key_flag=1;
69 4 // P2 = 0x0f;
70 4 }
71 3 }
72 2 }
73 1 else if(key_flag!=0)
74 1 {
75 2 key_velual=0;
76 2 if((P2 & 0x0f) == 0x0f)
77 2 key_flag=0;
78 2 }
79 1
80 1 }
81
82
83 Key_set(unsigned char sw)
84 {
85 1 switch(sw)
86 1 {
87 2
88 2 case 0x0b: {
89 3 PlayMode_low++;
90 3 if(PlayMode_low>3)
91 3 {
92 4 PlayMode_low = 1;
93 4 }
94 3 } break;
95 2 case 0x07: {
96 3 PlayMode_hi++;
97 3 PlayMode_low = 1;
98 3 if(PlayMode_hi>5)
99 3 {
100 4 PlayMode_hi = 0;
101 4
102 4 }
103 3
104 3 }break;
105 2
106 2 case 0x0d: {
107 3 PlayAdd++;
108 3
109 3 }break;
110 2 case 0x0e: {
111 3 PlaySub++;
112 3
113 3 }break;
114 2 default: //led_disp(5,seg[0],0);
115 2 break;
116 2 /**/ }
C51 COMPILER V7.00 MAIN 09/30/2007 23:44:12 PAGE 3
117 1 }
118
119
120
121 clock_play(unsigned char on_switch)
122 {
123 1 int i,temp;
124 1 unsigned char flash1,flash2,flash3;
125 1
126 1 if(clock_cutt[0]>59) //秒
127 1 {
128 2 clock_cutt[0] = 0;
129 2 clock_cutt[1]++;
130 2 }
131 1 if(clock_cutt[1]>59) //分
132 1 {
133 2 clock_cutt[1] =0;
134 2 clock_cutt[2]++;
135 2 }
136 1 if(clock_cutt[2]>23) //时
137 1 {
138 2 clock_cutt[2]=0;
139 2 clock_cutt[3]++;
140 2 clock_cutt[1]=0;
141 2 }
142 1
143 1 if(clock_cutt[5]%4 == 0)
144 1 yue_fen[1] = 29;
145 1
146 1 else if(clock_cutt[5]%4 != 0)
147 1 yue_fen[1] = 28;
148 1
149 1 temp =clock_cutt[4]; //读取当前月份
150 1
151 1 if(clock_cutt[3]>yue_fen[temp-1])
152 1 {
153 2 clock_cutt[3] = 1;
154 2 clock_cutt[4]++;
155 2 }
156 1
157 1
158 1 if(clock_cutt[4]>12)
159 1 {
160 2 clock_cutt[4] = 1;
161 2 clock_cutt[5]++;
162 2 }
163 1
164 1 flash_cont++;
165 1 if(flash_cont>50)
166 1 flash_cont = 0;
167 1 if(flash_cont>25)
168 1 {
169 2 if(on_switch == 1)
170 2 {
171 3 flash1=1;
172 3 flash2=0;
173 3 flash3=0;
174 3 }
175 2 else if(on_switch == 2)
176 2 {
177 3 flash1=0;
178 3 flash2=1;
C51 COMPILER V7.00 MAIN 09/30/2007 23:44:12 PAGE 4
179 3 flash3=0;
180 3 }
181 2 else if(on_switch == 3)
182 2 {
183 3 flash1=0;
184 3 flash2=0;
185 3 flash3=1;
186 3 }
187 2
188 2 else
189 2 {
190 3 flash1=0;
191 3 flash2=0;
192 3 flash3=0;
193 3 }
194 2 }
195 1 else
196 1 {
197 2 flash1=0;
198 2 flash2=0;
199 2 flash3=0;
200 2 }
201 1
202 1 for(i=0;i<8;i++)
203 1 {
204 2 P2 = play_bit[i];
205 2 switch(i)
206 2 {
207 3 case 0:
208 3 led_disp(1,seg[clock_cutt[play_mode]%10],flash3);
209 3 break;
210 3 case 1:
211 3 led_disp(2,seg[clock_cutt[play_mode]/10],flash3);
212 3 break;
213 3 case 2:
214 3 led_disp(3,seg[clock_cutt[play_mode+1]%10],flash2);
215 3 break;
216 3 case 3:
217 3 led_disp(4,seg[clock_cutt[play_mode+1]/10],flash2);
218 3 break;
219 3 case 4:
220 3 led_disp(5,seg[clock_cutt[play_mode+2]%10],flash1);
221 3 break;
222 3 case 5:
223 3 led_disp(6,seg[clock_cutt[play_mode+2]/10],flash1);
224 3 break;
225 3 case 6:
226 3 led_disp(7,led_play,0);
227 3 break;
228 3 case 7:
229 3 led_disp(8,0x00,0);
230 3 break;
231 3 default:
232 3 // P3_4 = 1;
233 3 break;
234 3 }
235 2 }
236 1 }
237
238 void cutt_mode(void)
239 {
240 1 if(PlayAdd != 0x00)
C51 COMPILER V7.00 MAIN 09/30/2007 23:44:12 PAGE 5
241 1 {
242 2 play_mode = 3;
243 2 mode_cont++;
244 2 if(mode_cont >100)
245 2 {
246 3 PlayAdd = 0;
247 3 mode_cont = 0;
248 3 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -