📄 led.lst
字号:
C51 COMPILER V7.06 LED 02/11/2007 20:19:36 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN LED.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE LED.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #include "EEprom.h"
4 sbit SET = P1^0;
5 sbit ADD = P1^1;
6 sbit DEC = P1^2;
7
8 //sbit UpEnable = P0^0;
9 //sbit UpBrake = P0^1;
10 //sbit DownEnable = P0^4;
11 //sbit DownBrake = P0^5;
12
13 sbit text = P3^4;
14
15 sbit UpS = P1^6;
16 sbit DownS = P1^7;
17
18 sbit chooseHigh = P3^7;
19 sbit chooseLow = P3^6;
20
21 sbit ControlSendReceive = P3^5; //主从控制位
22 /*
23 #define CHOOSE P3 //数码管位控制寄存器
24 #define chooseLeft 0x00 //左边数码管选择位数据
25 #define chooseMiddle 0x40 //中间数码管选择位数据
26 #define chooseRight 0x80 //右边数码管选择位数据
27 */
28
29 #define DATA P2 //数码管数据位
30
31 #define MOTOR P0 //无刷直流电机控制寄存器
32
33 #define UP 0x01 //上电机驱动数据
34 #define DOWN 0x10 //下电机驱动数据
35 #define STOP 0x22 //停止驱动数据
36
37 #define MoveUPdata 0x55
38 #define StopData 0x0f
39 #define MoveDOWNdata 0xf0
40 #define Receive() {while (RI == 0); RI = 0;}
41 #define Send() {while (TI == 0); TI = 0;}
42
43 unsigned char SendData = 0x0f;
44 unsigned char ReceiveData;
45
46 unsigned int photoLong = 0; //计算整个画面距离变量
47 unsigned char left; //左边数码管数据寄存器
48 unsigned char middle; //中间数码管数据寄存器
49 unsigned char right; //右面数码管数据寄存器
50
51 unsigned char sendflag; //发送次数标志
52
53 unsigned char setSec;
54 unsigned char setPage;
55
C51 COMPILER V7.06 LED 02/11/2007 20:19:36 PAGE 2
56 unsigned char code ledCode[19] =
57 {
58 0x3f, 0x06, 0x5B, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f,
59 0x77, 0x7c, 0x58, 0x5e, 0x79, 0x71, 0x40, 0x73, 0x76
60 };//0,1,2,3,4,5,6,7,8,9 共阴数码管
61
62 unsigned char code moveCode[4] =
63 {
64 0x00, 0x08, 0x40, 0x01
65 };
66
67 unsigned char code EEprom[4] =
68 {
69 0x02, 0x04
70 };
71
72 //定义
73 unsigned int flag = 0;
74 unsigned int flag1 = 0; //定义增量
75 unsigned char temp = 0;
76 unsigned int count1;
77 unsigned char control = 1;
78
79 unsigned char page = 1;
80
81
82 void DelayMs(unsigned int count1)
83 {
84 1 while (count1--)
85 1 {
86 2 unsigned char count2 = 0;
87 2 for (; count2<62; count2++);
88 2 }
89 1 }
90
91 void DisplaySegment(unsigned char temp)
92 {
93 1 DATA = moveCode[temp&0x03];
94 1
95 1 chooseHigh = 0;
96 1 chooseLow = 0;
97 1 DelayMs(1);
98 1
99 1 chooseHigh = 0;
100 1 chooseLow = 1;
101 1 DelayMs(1);
102 1
103 1 chooseHigh = 1;
104 1 chooseLow = 0;
105 1 DelayMs(1);
106 1 }
107
108
109 void DisplayStop(unsigned char one, unsigned char two, unsigned char three)
110 {
111 1 unsigned char temp;
112 1 chooseHigh = 0;
113 1 chooseLow = 0;
114 1 DATA = ledCode[one];
115 1 for(temp=0; temp<200; temp++);
116 1
117 1 chooseHigh = 0;
C51 COMPILER V7.06 LED 02/11/2007 20:19:36 PAGE 3
118 1 chooseLow = 1;
119 1 DATA = ledCode[two];
120 1 for(temp=0; temp<200; temp++);
121 1
122 1 chooseHigh = 1;
123 1 chooseLow = 0;
124 1 DATA = ledCode[three];
125 1 for(temp=0; temp<200; temp++);
126 1 }
127
128 //功能:从机时间设定
129 //函数:SetReceiveSecondUP()
130 //调用变量:unsigned char page
131 //返回值:无
132 //修改日期:2007-1-14
133 //作者:狼魅
134 void SetReceiveSecondUP(unsigned char page)
135 {
136 1 unsigned char count1;
137 1 unsigned char second = 0;
138 1 while (1)
139 1 {
140 2 for (count1=0; count1<255; count1++)
141 2 {
142 3 DisplayStop(page, second/10, second%10);
143 3 if (ReceiveData == MoveUPdata)
144 3 {
145 4 break;
146 4 }
147 3 }
148 2 if (ReceiveData == MoveUPdata)
149 2 {
150 3 break;
151 3 }
152 2 second++;
153 2 }
154 1 }
155
156 //功能:从机时间设定
157 //函数:SetReceiveSecondDOWN()
158 //调用变量:unsigned char page
159 //返回值:无
160 //修改日期:2007-1-14
161 //作者:狼魅
162 void SetReceiveSecondDOWN(unsigned char page)
163 {
164 1 unsigned char count1;
165 1 unsigned char second = 0;
166 1 while (1)
167 1 {
168 2 for (count1=0; count1<255; count1++)
169 2 {
170 3 DisplayStop(page, second/10, second%10);
171 3 if (ReceiveData == MoveDOWNdata)
172 3 {
173 4 break;
174 4 }
175 3 }
176 2 if (ReceiveData == MoveDOWNdata)
177 2 {
178 3 break;
179 3 }
C51 COMPILER V7.06 LED 02/11/2007 20:19:36 PAGE 4
180 2 second++;
181 2 }
182 1 }
183
184 //功能:主机时间设定
185 //函数:SetSendSecond()
186 //调用变量:unsigned char page
187 //返回值:无
188 //修改日期:2007-1-14
189 //作者:狼魅
190 void SetSendSecond(unsigned char page)
191 {
192 1 unsigned char count1;
193 1 unsigned char second = 0;
194 1
195 1 while (second <= setSec)
196 1 {
197 2 for (count1=0; count1<255; count1++)
198 2 {
199 3 DisplayStop(page, second/10, second%10);
200 3 }
201 2 second++;
202 2 }
203 1 }
204
205 /*****************************
206
207 设置手动模式
208
209 *****************************/
210 void ManPower(void)
211 {
212 1 unsigned int count1 = 0;
213 1 unsigned char temp1 = 0;
214 1 unsigned char flag1 = 0;
215 1 while (1)
216 1 {
217 2 if ((ADD==0) || (DEC==0))
218 2 {
219 3 if ((ADD==1) && (DEC==0))
220 3 {
221 4 MOTOR = UP;
222 4
223 4 DisplaySegment(temp1);
224 4
225 4 if (flag1 == 60)
226 4 {
227 5 temp1++;
228 5 flag1 = 0;
229 5 }
230 4 }
231 3
232 3 if ((ADD==0) && (DEC==1))
233 3 {
234 4 MOTOR = DOWN;
235 4
236 4 DisplaySegment(temp1);
237 4
238 4 if (flag1 == 60)
239 4 {
240 5 temp1--;
241 5 flag1 = 0;
C51 COMPILER V7.06 LED 02/11/2007 20:19:36 PAGE 5
242 5 }
243 4 }
244 3 }
245 2 else
246 2 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -