📄 hldv13.lst
字号:
C51 COMPILER V7.06 HLDV13 10/11/2004 11:53:53 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE HLDV13
OBJECT MODULE PLACED IN HLDV13.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE HLDV13.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //************************************
2 //****护栏灯管控制程序*********
3 //**** 2004-06-19 mcu at89c2051 172800BPS OSC 11.0592MHZ
4 // ding li zhao ming
5 //************************************
6 #include <reg51.h>
7 #include <stdio.h>//一般I/O函数
8 #include <stdlib.h>//标准函数
9 #include <absacc.h>//绝对地址
10 #include <intrins.h>//内部函数
11 #include <setjmp.h>
12 #define uchar unsigned char
13 #define uint unsigned int
14 #define Byte unsigned char
15 #define Word unsigned int
16 #define ulong unsigned long
17 #define bool bit
18 #define true 1
19 #define false 0
20 #define V_TH0 0xfe /* 时间常数高8位 (65536-500)/256 */
21 #define V_TL0 0x0c /* 时间常数低8位 (65536-500)%256 11.0592*/
22 #define ADD 2
23
24
25 //******************************
26
27 sbit red0=P1^0;
28 sbit grn0=P1^4;
29 sbit blu0=P3^3;
30
31 sbit red1=P1^1;
32 sbit grn1=P1^5;
33 sbit blu1=P3^4;
34
35 sbit red2=P1^2;
36 sbit grn2=P1^6;
37 sbit blu2=P3^5;
38
39 sbit red3=P1^3;
40 sbit grn3=P1^7;
41 sbit blu3=P3^7;
42 sbit senden=P3^2;
43
44
45 //**************************************************************
46 uchar mode;
47 uchar pointer;
48 uchar dis_red0,dis_red1,dis_red2,dis_red3;
49 uchar dis_grn0,dis_grn1,dis_grn2,dis_grn3;
50 uchar dis_blu0,dis_blu1,dis_blu2,dis_blu3;
51
52 uchar send_buf[13];
53 uchar pwm,rl;
54 jmp_buf env;
55 int retval;
C51 COMPILER V7.06 HLDV13 10/11/2004 11:53:53 PAGE 2
56 uchar bdata flags;
57 sbit flag0=flags^0;
58 sbit flag1=flags^1;
59 sbit flag2=flags^2;
60 sbit flag3=flags^3;
61 sbit frameok=flags^4;
62
63 //*********************************
64 void delay(uint j);
65 void receive(void);
66 void qcgd(uint speed);
67 void qcld(uchar speed);
68 void qcpm(uchar speed);
69 //*********************************
70 void main(void)
71 {
72 1
73 1 TMOD=0x21;
74 1 SCON=0xd0;
75 1 TH1=0xfd;
76 1 TL1=0xfd;
77 1 PCON=0X80;
78 1 SM2=1;
79 1
80 1 TL0=V_TL0;
81 1 TH0=V_TH0;
82 1 TR0=1;
83 1 ET0=1;
84 1
85 1 TR1=1;
86 1 ET1=0;
87 1 ES=1;
88 1 EA=1;
89 1
90 1
91 1
92 1 rl=0x01;
93 1 senden=0;
94 1 frameok=0;
95 1 pointer=0;
96 1
97 1 while(1)
98 1 {
99 2 if(mode==0x55)
100 2 {delay(4);}
101 2 else
102 2 {
103 3 retval=setjmp(env);
104 3 if(retval==0)
105 3 {
106 4 qcgd(2000);
107 4 // qcld(50);
108 4 // qcgd(500);
109 4 // qcpm(50);
110 4 // qcld(50);
111 4 }
112 3 }
113 2 }
114 1 }
115 //*****************************************
116 // 延时
117 //**************************************
C51 COMPILER V7.06 HLDV13 10/11/2004 11:53:53 PAGE 3
118 void delay(uint tim)
119 {
120 1 uint i;
121 1 while(tim!=0)
122 1 {
123 2 for(i=0;i<500;i++)
124 2 {
125 3 // pwmcoun();
126 3 if(frameok)
127 3 {receive();
128 4 mode=0x55;
129 4 frameok=0;
130 4 retval=1;
131 4 longjmp(env,retval);
132 4 }
133 3 }
134 2 tim--;
135 2 }
136 1 }
137 //************************************
138 //七彩过渡
139 //**********************************
140 void qcgd(uint speed)
141 {
142 1 uchar i;
143 1 dis_red0=dis_red1=dis_red2=dis_red3=0;
144 1 dis_grn0=dis_grn1=dis_grn2=dis_grn3=0;
145 1 dis_blu0=dis_blu1=dis_blu2=dis_blu3=0;
146 1 for(i=1;i<16;i++)
147 1 {dis_red0=dis_red1=dis_red2=dis_red3=i;
148 2 delay(speed);
149 2 }
150 1 for(i=1;i<16;i++)
151 1 {//dis_red0=dis_red1=dis_red2=dis_red3=i;
152 2 dis_grn0=dis_grn1=dis_grn2=dis_grn3=i; //yello
153 2 delay(speed);
154 2 }
155 1 for(i=15;i<16;i--)
156 1 {dis_red0=dis_red1=dis_red2=dis_red3=i; //green
157 2 delay(speed);
158 2 }
159 1 for(i=1;i<16;i++)
160 1 {//dis_red0=dis_red1=dis_red2=dis_red3=i;
161 2 dis_blu0=dis_blu1=dis_blu2=dis_blu3=i;
162 2 delay(speed);
163 2 }
164 1 for(i=15;i<16;i--)
165 1 {//dis_red0=dis_red1=dis_red2=dis_red3=i; //blue
166 2 dis_grn0=dis_grn1=dis_grn2=dis_grn3=i;
167 2 delay(speed);
168 2 }
169 1 for(i=1;i<16;i++)
170 1 {dis_red0=dis_red1=dis_red2=dis_red3=i;
171 2 delay(speed);
172 2 }
173 1 for(i=15;i<16;i--)
174 1 {dis_red0=dis_red1=dis_red2=dis_red3=i; //green
175 2 delay(speed);
176 2 }
177 1 }
178 //*****************************************
179
C51 COMPILER V7.06 HLDV13 10/11/2004 11:53:53 PAGE 4
180 //*********************************
181 // 接收数据
182 //*********************************
183 void receive(void)
184 {
185 1 uchar i;
186 1 uchar data *s,*o;
187 1 //s=&dis_buf[0];
188 1 o=&send_buf[1];
189 1 for(i=0;i<12;i++)
190 1 {
191 2 // *s=*o;
192 2 s++;
193 2 o++;
194 2 }
195 1 }
196 //****************************************
197 // 通讯子程序
198 //**************************************
199 void send(void) interrupt 4
200 {
201 1 if(!TI && RI && !frameok)
202 1 {RI=0;
203 2 if(pointer==0)
204 2 {
205 3 if(SBUF==ADD||SBUF==0)
206 3 {//senden=1;TB8=1,
207 4 //SBUF=ADD;while(!TI);TI=0;
208 4 //senden=0;TB8=0;
209 4 SM2=0;pointer++;
210 4 }
211 3 // else
212 3 // {if(SBUF==0){SM2=0;pointer++;}
213 3 // }
214 3 }
215 2 else
216 2 {
217 3 if(pointer<12)
218 3 {send_buf[pointer]=SBUF;pointer++;}
219 3 else
220 3 {send_buf[pointer]=SBUF;SM2=1;frameok=1;pointer=0;}
221 3 }
222 2 }//end if
223 1 }//end sub
224 void pwmout(void)
225 {
226 1 red0=(bit)(dis_red0&rl);
227 1 red1=(bit)(dis_red1&rl);
228 1 red2=(bit)(dis_red2&rl);
229 1 red3=(bit)(dis_red3&rl);
230 1 grn0=(bit)(dis_grn0&rl);
231 1 grn1=(bit)(dis_grn1&rl);
232 1 grn2=(bit)(dis_grn2&rl);
233 1 grn3=(bit)(dis_grn3&rl);
234 1 blu0=(bit)(dis_blu0&rl);
235 1 blu1=(bit)(dis_blu1&rl);
236 1 blu2=(bit)(dis_blu2&rl);
237 1 blu3=(bit)(dis_blu3&rl);
238 1 }
239 //*******************************************
240 void timer1() interrupt 1
241 {
C51 COMPILER V7.06 HLDV13 10/11/2004 11:53:53 PAGE 5
242 1 pwm++;
243 1 switch(pwm)
244 1 {
245 2 case 1:
246 2 pwmout();
247 2 rl=0x02;
248 2 break;
249 2 case 2:
250 2 pwmout();
251 2 rl=0x02;
252 2 break;
253 2 case 4:
254 2 pwmout();
255 2 rl=0x08;
256 2 break;
257 2 case 8:
258 2 pwmout();
259 2 rl=0x01;
260 2 break;
261 2 case 15:
262 2 pwm=1;
263 2 break;
264 2 default:break;
265 2 }
266 1 TL0=V_TL0;
267 1 TH0=V_TH0;
268 1 }//end sub
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 607 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 39 8
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -