📄 led.lst
字号:
C51 COMPILER V7.06 LED 01/14/2009 11:00:33 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN led.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE led.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<AT89X52.h>
2 #define PWM_DELAY 40
3 #define OFF_DELAY 40
4 unsigned char count;count1,count2;
5 sbit led_red=P3^3;
6 sbit led_BL=P3^4;
7 sbit led_GR=P3^5;
8 unsigned char data PWMR;PWMB;PWMG;
9
10 //-------初始化函数------------------
11 void init_serialcomm( void )
12 {
13 1 SCON = 0x50 ;
14 1 TMOD=0x01;
15 1 TMOD |= 0x20 ;
16 1 TH1=0XFD;
17 1 TL1=0XFD;
18 1 TR1 = 1 ;
19 1 TH0=0Xff;TL0=0X06;
20 1 IE=0X82;
21 1 TR0=1;
22 1 P1=0XFF;
23 1 PWMR=0;
24 1 PWMB=0;
25 1 PWMG=0;
26 1 }
27
28 //----------延时函数-----------------
29 void DELAY(unsigned int MS)
30 {
31 1 unsigned char us,usn;
32 1 while(MS!=0)
33 1 {
34 2 usn = 2; //在12M晶振下接近1ms
35 2 while(usn!=0)
36 2 {
37 3 us=0xf9;
38 3 while (us!=0){us--;};
39 3 usn--;
40 3 }
41 2 MS--;
42 2 }
43 1 }
44
45
46 //----------中断函数----------------------
47 void timeint(void) interrupt 1
48 { TH0=0XFF;
49 1 TL0=0XF9;
50 1 TR0=1;
51 1 count++;
52 1 if(count==100)
53 1 {
54 2 if(PWMR!=0)
55 2 led_red=1;
C51 COMPILER V7.06 LED 01/14/2009 11:00:33 PAGE 2
56 2 else
57 2 led_red=0;
58 2 if(PWMB!=0)
59 2 led_BL=1;
60 2 else
61 2 led_BL=0;
62 2 if(PWMG!=0)
63 2 led_GR=1;
64 2 else
65 2 led_GR=0;
66 2 count=0;
67 2 }
68 1 else
69 1 {
70 2 if (count==PWMR)
71 2 led_red=0;
72 2 if (count==PWMB)
73 2 led_BL=0;
74 2 if (count==PWMG)
75 2 led_GR=0;
76 2 }
77 1 }
78
79 main()
80 {
81 1 unsigned char i;
82 1 unsigned char DIP_P1;
83 1 init_serialcomm(); //初始化串口
84 1 while(1)
85 1 {
86 2 DIP_P1=P1&0X0F;
87 2 if(DIP_P1==0)
88 2 {
89 3 if(RI) //接收串口数据
90 3 {
91 4 RI=0;
92 4 i=SBUF;
93 4 if(i>0X7F)
94 4 {
95 5 count2=0;
96 5 PWMR=i-128;
97 5
98 5 }
99 4 else
100 4 {
101 5 count2++;
102 5 if(count2==1)
103 5 PWMB=i;
104 5 else
105 5 PWMG=i;
106 5 }
107 4 }
108 3 }
109 2 else
110 2 {
111 3 DIP_P1=P1&0X0F;
112 3 switch(DIP_P1)
113 3 {
114 4 case 1:PWMR=100; //红色
115 4 PWMB=0;
116 4 PWMG=0;
117 4 break;
C51 COMPILER V7.06 LED 01/14/2009 11:00:33 PAGE 3
118 4 case 2: PWMR=100; ////红色+绿色
119 4 PWMG=100;
120 4 PWMB=0;
121 4 break;
122 4 case 3: PWMR=0; ///+绿色
123 4 PWMG=100;
124 4 PWMB=0;
125 4 break;
126 4 case 4: PWMR=0; /////蓝色+绿色
127 4 PWMG=100;
128 4 PWMB=100;
129 4 break;
130 4 case 5: PWMR=0; /////蓝色
131 4 PWMG=0;
132 4 PWMB=100;
133 4 break;
134 4 case 6: PWMR=100; ////红色+蓝色
135 4 PWMG=0;
136 4 PWMB=100;
137 4 break;
138 4 case 7: PWMR=100; ////红色+蓝色+绿色
139 4 PWMG=100;
140 4 PWMB=100;
141 4 break;
142 4 case 8:
143 4 PWMG=0;
144 4 PWMB=0;
145 4 PWMR=0;
146 4 for(PWMR=0;PWMR<=100;PWMR++) //红色
147 4 DELAY( PWM_DELAY );
148 4 DIP_P1=P1&0X0F;
149 4 if(DIP_P1!=8)
150 4 break;
151 4 DELAY( 12000);
152 4 for(PWMR=100;PWMR>0;PWMR--)
153 4 DELAY( PWM_DELAY );
154 4 DELAY( OFF_DELAY);
155 4 PWMG=0;
156 4 PWMB=0;
157 4 PWMR=0;
158 4 for(PWMR=0;PWMR<=100;PWMR++, PWMG++) //红色+绿色
159 4 DELAY( PWM_DELAY );
160 4 DIP_P1=P1&0X0F;
161 4 if(DIP_P1!=8)
162 4 break;
163 4 DELAY( 12000);
164 4 for(PWMR=100;PWMR>0;PWMR--, PWMG--)
165 4 DELAY( PWM_DELAY );
166 4 DELAY( OFF_DELAY);
167 4 PWMG=0;
168 4 PWMB=0;
169 4 PWMR=0;
170 4 for(PWMG=0;PWMG<=100;PWMG++) //绿色
171 4 DELAY( PWM_DELAY );
172 4 DIP_P1=P1&0X0F;
173 4 if(DIP_P1!=8)
174 4 break;
175 4 DELAY( 12000);
176 4 for(PWMG=100;PWMG>0;PWMG--)
177 4 DELAY( PWM_DELAY );
178 4 DELAY( OFF_DELAY);
179 4 PWMG=0;
C51 COMPILER V7.06 LED 01/14/2009 11:00:33 PAGE 4
180 4 PWMB=0;
181 4 PWMR=0;
182 4 for(PWMG=0;PWMG<=100;PWMG++,PWMB++) //蓝色+绿色
-
183 4 DELAY( PWM_DELAY );
184 4 DIP_P1=P1&0X0F;
185 4 if(DIP_P1!=8)
186 4 break;
187 4 DELAY( 12000);
188 4 for(PWMG=100;PWMG>0;PWMG--, PWMB--)
189 4 DELAY( PWM_DELAY );
190 4 DELAY( OFF_DELAY);
191 4 PWMG=0;
192 4 PWMB=0;
193 4 PWMR=0;
194 4 for(PWMB=0;PWMB<=100;PWMB++) //蓝色
195 4 DELAY( PWM_DELAY );
196 4 DIP_P1=P1&0X0F;
197 4 if(DIP_P1!=8)
198 4 break;
199 4 DELAY( 12000);
200 4 for(PWMB=100;PWMB>0;PWMB--)
201 4 DELAY( PWM_DELAY );
202 4 DELAY( OFF_DELAY);
203 4 PWMG=0;
204 4 PWMB=0;
205 4 PWMR=0;
206 4 for(PWMR=0;PWMR<=100;PWMR++, PWMB++) //红色+蓝色
207 4 DELAY( PWM_DELAY );
208 4 DIP_P1=P1&0X0F;
209 4 if(DIP_P1!=8)
210 4 break;
211 4 DELAY( 12000);
212 4 for(PWMR=100;PWMR>0;PWMR--, PWMB--)
213 4 DELAY( PWM_DELAY );
214 4 DELAY( OFF_DELAY);
215 4 PWMG=0;
216 4 PWMB=0;
217 4 PWMR=0;
218 4 for(PWMR=0;PWMR<=100;PWMR++,PWMB++,PWMG++) //红色+绿色+蓝色
219 4 DELAY( PWM_DELAY );
220 4 DIP_P1=P1&0X0F;
221 4 if(DIP_P1!=8)
222 4 break;
223 4 DELAY( 12000);
224 4 for(PWMR=100;PWMR>0;PWMR--,PWMG--,PWMB--)
225 4 DELAY( PWM_DELAY );
226 4 DELAY( OFF_DELAY);
227 4 break;
228 4 default: PWMG=0;
229 4 PWMB=0;
230 4 PWMR=0;
231 4 break;
232 4
233 4 }
234 3 }
235 2
236 2 }
237 1 }
238
239
C51 COMPILER V7.06 LED 01/14/2009 11:00:33 PAGE 5
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1010 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
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 + -