📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 03/14/2009 10:19:32 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*********************Copyright (c)***********************************************************************
-*
2 **--------------文件信息------------------------------------------------------
3 **文 件 名: 黑白线
4 **创 建 人: 黄海明
5 **最后修改日期: 2008年10月10日
6
7 **--------------历史版本信息--------------------------------------------------
8 ** 创建人: 黄海明
9 ** 版 本: 1.0
10 ** 日 期: 2008年10月10日
11 ** 描 述: 原始版本
12 **********************************************************************************************************
-*/
13
14
15 #include<reg52.h>
16 #include<math.h>
17
18 #define uchar unsigned char
19 #define uint unsigned int
20
21 sbit signal0 = P0^2;
22 sbit signal1 = P0^5;
23 sbit a0 = P0^0;
24 sbit a1 = P0^1;
25 sbit b0 = P0^3;
26 sbit b1 = P0^4;
27 sbit buzzer=P2^2;
28
29 uchar state0 = 0;
30 uchar n0 =0 ;
31 uchar TH0Data1 = 0, TH0Data2 = 0;
32 uchar TL0Data1 = 0, TL0Data2 = 0; //, enable0 = 0
33 uint pulseWidth0 = 0;
34
35 uchar state1 = 0;
36 uchar n1 =0 ;
37 uchar TH1Data1 = 0, TH1Data2 = 0;
38 uchar TL1Data1 = 0, TL1Data2 = 0; // , enable1 = 0
39 uint pulseWidth1 = 0;
40
41 //uchar key=0;
42
43 bit flag0=0;
44 bit flag1=0;
45
46
47 //---------------------延时------------------------
48 void delay1ms(uint time) //11.0592M晶振 1ms
49 {
50 1 uint i;
51 1 uchar j;
52 1 for (i=0;i<time;i++)
53 1 {
C51 COMPILER V8.02 MAIN 03/14/2009 10:19:32 PAGE 2
54 2 j=147;
55 2 while(j--);
56 2 }
57 1 }
58
59 ////////////////////////////////////////////////////////////////////////
60
61
62
63 /////////////////////////////////////////////////////////////
64 void Calculate0()
65 {
66 1 TH0Data1 = (65536 - pulseWidth0) / 256;
67 1 TL0Data1 = (65536 - pulseWidth0) % 256;
68 1 TH0Data2 = (47119 + pulseWidth0) / 256;
69 1 TL0Data2 = (47119 + pulseWidth0) % 256;
70 1 TH0 = TH0Data1;
71 1 TL0 = TL0Data1;
72 1 }
73
74 /////////////////////////////////////////////////////////////
75 void Calculate1()
76 {
77 1 TH1Data1 = (65536 - pulseWidth1) / 256;
78 1 TL1Data1 = (65536 - pulseWidth1) % 256;
79 1 TH1Data2 = (47119 + pulseWidth1) / 256;
80 1 TL1Data2 = (47119 + pulseWidth1) % 256;
81 1 TH1 = TH1Data1;
82 1 TL1 = TL1Data1;
83 1 }
84
85 //////////////////////////////////////////////////
86 void T0init()
87 {
88 1 signal0 = 0;
89 1 TMOD |= 0x01; //16位模式
90 1 ET0 = 1;
91 1 pulseWidth0 = 10000; //脉宽初值xx us
92 1 Calculate0();
93 1 EA =1;
94 1 state0 = 1;
95 1 }
96 //////////////////////////////////////////////////
97 void T1init()
98 {
99 1 signal1 = 0;
100 1 TMOD |= 0x10; //16位模式
101 1 ET1 = 1;
102 1 pulseWidth1 = 10000; //脉宽初值xx us
103 1 Calculate1();
104 1 EA =1;
105 1 state1 = 1;
106 1 }
107 /////////////////////////////////////////////////////
108 void int0() interrupt 0 using 0
109 {
110 1 flag0=1;
111 1
112 1 }
113
114 /////////////////////////////////////////////////////
115 void int1() interrupt 2 using 2
C51 COMPILER V8.02 MAIN 03/14/2009 10:19:32 PAGE 3
116 {
117 1
118 1 flag1=1;
119 1
120 1 }
121
122 ////////////////////////////////////////
123 void Timer0() interrupt 1 using 1
124
125 {
126 1 signal0 = ~signal0 ;
127 1 if( state0 == 0)
128 1 {
129 2
130 2 TH0 = TH0Data1;
131 2 TL0 = TL0Data1;
132 2
133 2 state0 =1;
134 2 n0++;
135 2 }
136 1 else if(state0 == 1)
137 1 {
138 2 TH0 = TH0Data2;
139 2 TL0 = TL0Data2;
140 2 state0 = 0;
141 2 }
142 1
143 1 }
144 ////////////////////////////////////////
145 void Timer1() interrupt 3 using 3
146
147 {
148 1 signal1 = ~signal1 ;
149 1 if( state1 == 0)
150 1 {
151 2
152 2 TH1 = TH1Data1;
153 2 TL1 = TL1Data1;
154 2
155 2 state1 =1;
156 2 n1++;
157 2 }
158 1 else if(state1 == 1)
159 1 {
160 2 TH1 = TH1Data2;
161 2 TL1 = TL1Data2;
162 2 state1 = 0;
163 2 }
164 1
165 1 }
166
167 /////////////////////////////////////////////////
168 void zuo(uint time)
169 {
170 1 a0=a1;
171 1 // buzzer=0;
172 1 delay1ms(time);
173 1 a0=0;
174 1 a1=1;
175 1 flag0=0;
176 1 buzzer=1;
177 1 }
C51 COMPILER V8.02 MAIN 03/14/2009 10:19:32 PAGE 4
178
179 ///////////////////////////////////////////////
180 void you(uint time)
181 {
182 1 b0=b1;
183 1 // buzzer=0;
184 1 delay1ms(time);
185 1 b0=1;
186 1 b1=0;
187 1 flag1=0;
188 1 buzzer=1;
189 1 }
190
191 ///////////////////////////////////////////////////////////////////////////////
192 ///////////////////////////////////////////////////////////////////////////
193 void main(void)
194 {
195 1 uchar i=0;
196 1
197 1 T0init();
198 1 TR0 = 1; //定时计数器控制位,1工作,0停止工作
199 1 signal0 = 1;
200 1
201 1 T1init();
202 1 TR1 = 1;
203 1 signal1 = 1;
204 1
205 1 EX0=1;
206 1 EX1=1;
207 1 IT0=0;
208 1 IT1=0;
209 1
210 1 a0=0;
211 1 a1=1;
212 1 b0=1;
213 1 b1=0;
214 1 buzzer=1;
215 1
216 1 pulseWidth0 =10000;
217 1 Calculate0();
218 1 pulseWidth1 =10000;
219 1 Calculate1();
220 1
221 1 while(1)
222 1 {
223 2 if(flag0==1)
224 2 {
225 3 EX0=0;
226 3 zuo(800);
227 3 EX0=1;
228 3 }
229 2
230 2 if(flag1==1)
231 2 {
232 3 EX1=0;
233 3 you(800);
234 3 EX1=1;
235 3 }
236 2 }
237 1
238 1
239 1
C51 COMPILER V8.02 MAIN 03/14/2009 10:19:32 PAGE 5
240 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 533 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 1
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -