📄 dsq_main.lst
字号:
C51 COMPILER V6.12 DSQ_MAIN 03/11/2009 20:31:19 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE DSQ_MAIN
OBJECT MODULE PLACED IN G:\DSQ\DSQ_MAIN.OBJ
COMPILER INVOKED BY: C:\keil\c51\bin\C51.EXE G:\DSQ\DSQ_MAIN.C DB SB OE
stmt level source
1 //本程序用于铁路道口管理等的定时记录等功能
2 //修改时间2009-3-7
3 //设计:魏兆俊
4 //版本:1.0
5
6 #include<reg52.h>
7 //#include<w77c32.h>
8 #include<stdio.h>
9 #include<intrins.h>
10 #include<absacc.h>
11
12 /*
13 版本说明
14
15 */
16 #define uchar unsigned char
17 #define uint unsigned int
18 #define true 1
19 #define faluse 0
20 #define on 1
21 #define off 0
22
23
24
25 sbit warm_control=P2^3;
26 sbit LED_BIT_A=P2^4;
27 sbit LED_BIT_B=P2^5;
28 sbit LED_BIT_C=P2^6;
29 sbit LED_BIT_D=P2^7;
30 sbit key_select=P2^0;
31 sbit key_inc=P2^1;
32 sbit key_dec=P2^2;
33
34
35
36
37 uchar led_scan_counter;
38 uchar display_counter;
39 uchar led_code[17];
40 uchar led_code_black[17];
41 uchar code led_code_ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xff};
42 uchar time_write[12];
43 uint light_on;
44 uchar led_light_flag;
45
46
47
48
49 //CPU 系统初始化函数
50 void system_start();
51 void delay500ms();
52 //74HC154译码输出
53 void ym_out();
54 /********************************************************************
55 *
C51 COMPILER V6.12 DSQ_MAIN 03/11/2009 20:31:19 PAGE 2
56 * 名称: v_Get1302
57 * 说明:
58 * 功能: 读取DS1302当前时间
59 * 调用: uc_R1302()
60 * 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年
61 * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
62 * 返回值: 无
63 ***********************************************************************/
64 void v_Get1302();
65 /********************************************************************
66 *
67 * 名称: v_Set1302
68 * 说明:
69 * 功能: 设置初始时间
70 * 调用: v_W1302()
71 * 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年
72 * 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
73 * 返回值: 无
74 ***********************************************************************/
75 void v_Set1302();
76 //键盘处理函数
77 void key_function();
78 void delay5000ms();
79
80
81
82
83
84 //系统主程序
85 void main ()
86 {
87 1 uchar i;
88 1 system_start();
89 1 led_scan_counter=0;
90 1
91 1 time_write[12]=0x9;
92 1 time_write[11]=0x0;
93 1 time_write[10]=0x03;
94 1 time_write[9]=0x0;
95 1 time_write[8]=0x0;
96 1 time_write[7]=0x1;
97 1 time_write[6]=0x2;
98 1 time_write[5]=0x2;
99 1 time_write[4]=0x5;
100 1 time_write[3]=0x4;
101 1 time_write[2]=0x4;
102 1 time_write[1]=0x0;
103 1
104 1 // v_Set1302();
105 1
106 1
107 1 while (1)
108 1 {
109 2
110 2 v_Get1302();
111 2 for (i=0;i<17;i++)
112 2 {led_code_black[i]=led_code[i];}
113 2
114 2 // led_code_black[7]=0x0b;
115 2 // led_code_black[8]=0x0b;
116 2 warm_control=on;
117 2 key_function();
C51 COMPILER V6.12 DSQ_MAIN 03/11/2009 20:31:19 PAGE 3
118 2
119 2 delay500ms();
120 2 delay500ms();
121 2 delay500ms();
122 2 delay500ms();
123 2 delay500ms();
124 2 delay500ms();
125 2
126 2 }
127 1 }
128
129
130 //键盘处理函数
131 void key_function()
132 {
133 1 led_light_flag=0;
134 1 key_function0:if (key_select==0)
135 1 {delay5000ms();
136 2 goto key_function1; }
137 1 if (led_light_flag>0)
138 1 {goto key_function_change; }
139 1 return;
140 1 key_function1:if (key_select==0)
141 1 {goto key_function2;}
142 1 if (led_light_flag>0)
143 1 {goto key_function_change; }
144 1 return ;
145 1 key_function2:
146 1 delay5000ms();
147 1 delay5000ms();
148 1 led_light_flag++;
149 1 if (led_light_flag>14)
150 1 {goto key_function_end;}
151 1 switch (led_light_flag)
152 1 {
153 2 case 1:led_code_black[3]=0x0b;
154 2 break;
155 2 case 2:led_code_black[3]=led_code[3];
156 2 led_code_black[4]=0x0b;
157 2 break;
158 2 case 3:led_code_black[4]=led_code[4];
159 2 led_code_black[5]=0x0b;
160 2 break;
161 2 case 4:led_code_black[5]=led_code[5];
162 2 led_code_black[6]=0x0b;
163 2 break;
164 2 case 5:led_code_black[6]=led_code[6];
165 2 led_code_black[7]=0x0b;
166 2 break;
167 2 case 6:led_code_black[7]=led_code[7];
168 2 led_code_black[8]=0x0b;
169 2 break;
170 2 case 7:led_code_black[8]=led_code[8];led_code_black[9]=0x0b;
171 2 break;
172 2 case 8:led_code_black[9]=led_code[9];led_code_black[10]=0x0b;
173 2 break;
174 2 case 9:led_code_black[10]=led_code[10];led_code_black[11]=0x0b;
175 2 break;
176 2 case 10:led_code_black[11]=led_code[11];led_code_black[12]=0x0b;
177 2 break;
178 2 case 11:led_code_black[12]=led_code[12];led_code_black[13]=0x0b;
179 2 break;
C51 COMPILER V6.12 DSQ_MAIN 03/11/2009 20:31:19 PAGE 4
180 2 case 12:led_code_black[13]=led_code[13];led_code_black[14]=0x0b;
181 2 break;
182 2 case 13:led_code_black[14]=led_code[14];led_code_black[15]=0x0b;
183 2 break;
184 2 case 14:led_code_black[15]=led_code[15];led_code_black[16]=0x0b;
185 2 break;
186 2
187 2 default:
188 2 break;
189 2 }
190 1
191 1 delay5000ms();
192 1 delay5000ms();
193 1 delay5000ms();
194 1 delay5000ms();
195 1 goto key_function0;
196 1
197 1
198 1 key_function_change:if (key_inc==0) //判断是否有加减键
199 1 {goto key_function_change1;}
200 1 if(key_dec==0)
201 1 {goto key_function_change1;}
202 1 goto key_function0;
203 1
204 1 key_function_change1:delay5000ms();
205 1 if (key_inc==0)
206 1 {goto key_inc_process;}
207 1 if (key_dec==0)
208 1 {
209 2 goto key_dec_process;}
210 1 delay5000ms();
211 1 delay5000ms();
212 1 delay5000ms();
213 1 delay5000ms();
214 1 goto key_function0;
215 1 //加键处理函数
216 1 key_inc_process:
217 1 switch (led_light_flag)
218 1 {
219 2 case 1:if (led_code[3]==9)
220 2 {led_code[3]=0;}else
221 2 led_code[3]=led_code[3]+1;
222 2 break;
223 2
224 2 case 2:if (led_code[4]==9)
225 2 {led_code[4]=0;}else
226 2 led_code[4]=led_code[4]+1;
227 2 break;
228 2 case 3:if (led_code[5]==9)
229 2 {led_code[5]=0;}else
230 2 led_code[5]=led_code[5]+1;
231 2 break;
232 2 case 4:if (led_code[6]==9)
233 2 {led_code[6]=0;}else
234 2 led_code[6]=led_code[6]+1;
235 2 break;
236 2 case 5:if (led_code[7]==9)
237 2 {led_code[7]=0;}else
238 2 led_code[7]=led_code[7]+1;
239 2 break;
240 2 case 6:if (led_code[8]==9)
241 2 {led_code[8]=0;}else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -