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