📄 traffic.lst
字号:
C51 COMPILER V7.50 TRAFFIC 05/25/2008 20:12:44 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TRAFFIC
OBJECT MODULE PLACED IN traffic.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE traffic.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #define uchar unsigned char
3
4 sbit led1=P2^0; //定义各管脚
5 sbit led2=P2^1;
6 sbit CO1=P2^2;
7 sbit CO2=P2^3;
8 sbit CO3=P2^4;
9 sbit CO4=P2^5;
10 sbit K1=P3^1; //
11 sbit K2=P3^2;
12 sbit K3=P3^3;
13 sbit K4=P3^4;
14 sbit K5=P3^5;
15 sbit beep=P3^6;
16 uchar second,state;
17 uchar state=1; //初始化
18 uchar urgent=1;
19 uchar standard;
20 uchar t1=10;
21 uchar t2=20;
22 uchar t3=15;
23 uchar t4=25;
24 unsigned char code table[]={0x3F, 0x06, 0x5B, 0x4F, 0x66,
25 0x6D, 0x7D, 0x07, 0x7F, 0x6F};//0-9
26 bit flag =0 ;
27 uchar stateflag =0;
28
29 /*****************************************************************************
30 ** 函数名称:delay()
31 ** 功能描述:延时子程序,大约延时 n MS
32 ** 输 入: n
33 ** 输 出:
34 ** 全局变量:
35 ** 调用模块:
36 **
37 **----------------------------------------------------------------------------
38 ******************************************************************************/
39 delay(int n)
40 {uchar k;int j;
41 1 for(j=n;j>0;j--)
42 1 for(k=125;k>0;k--);
43 1 }
44
45 /*****************************************************************************
46 ** 函数名称:speaker()
47 ** 功能描述:峰鸣器程序
48 ** 输 入:
49 ** 输 出:
50 ** 全局变量:
51 ** 调用模块:
52 **
53 **----------------------------------------------------------------------------
54 ******************************************************************************/
55 speaker()
C51 COMPILER V7.50 TRAFFIC 05/25/2008 20:12:44 PAGE 2
56 {
57 1 beep=0;delay(100);beep=1;
58 1 }
59
60
61 /*****************************************************************************
62 ** 函数名称:speaker1()
63 ** 功能描述:峰鸣器程序,峰鸣警告时间较长
64 ** 输 入:
65 ** 输 出:
66 ** 全局变量:
67 ** 调用模块:
68 **
69 **----------------------------------------------------------------------------
70 ******************************************************************************/
71 speaker1()
72 {
73 1 beep=0;delay(2000);beep=1;delay(100);
74 1 }
75 /*****************************************************************************
76 ** 函数名称:timer0()
77 ** 功能描述:中断子程序
78 ** 输 入:
79 ** 输 出:
80 ** 全局变量:
81 ** 调用模块:
82 **
83 **----------------------------------------------------------------------------
84 ******************************************************************************/
85 void timer0() interrupt 1 using 0
86 {uchar tcount;
87 1 if(urgent!=2)
88 1 {
89 2 TH0=(65536-50000)/256; //中断设置初始化
90 2 TL0=(65536-50000)%256;
91 2 tcount++;
92 2
93 2 if(tcount==20)
94 2 {tcount=0;second++;
95 3 if(standard-second<=5)
96 3 speaker();
97 3 if(second==standard)
98 3 {second=0;state++;speaker(); //4种交通灯状态的转变
99 4 if(state==5)
100 4 {state=1;
101 5 }
102 4 if(state==1)
103 4 {standard=t1;
104 5 }
105 4 if(state==2)
106 4 {
107 5 standard=t2;
108 5 }
109 4 if(state==3)
110 4 {
111 5 standard=t3;
112 5 }
113 4 if(state==4)
114 4 {
115 5 standard=t4;
116 5 }
117 4 }
C51 COMPILER V7.50 TRAFFIC 05/25/2008 20:12:44 PAGE 3
118 3 }
119 2 }
120 1 }
121
122 /*****************************************************************************
123 ** 函数名称:key()
124 ** 功能描述:键盘事件显测程序
125 ** 输 出:
126 ** 全局变量:
127 ** 调用模块:
128 **
129 **----------------------------------------------------------------------------
130 ******************************************************************************/
131 void key()
132 {
133 1
134 1 if(K1==0) //按下键1
135 1 {
136 2 delay(1000); //软件去抖
137 2 if(K1==0){
138 3 delay(1000);
139 3 if(K1==0){
140 4 delay(1000);
141 4 if(K1==0){
142 5 if(K1==0)
143 5 urgent++;speaker();
144 5 if(urgent==2)
145 5 {EA=1;ET0=1;TMOD=0x21;TR0=0;second=standard-1;state=6;}
146 5 if(urgent==3)
147 5 {urgent=1;}
148 5 if(urgent==1)
149 5 {EA=1;ET0=1;TMOD=0x21;TR0=1;second=0;state=1;}
150 5 }}}}
151 1 if(K2==0 && urgent!=2) //按下键2且不处于紧急状态
152 1 {delay(30);
153 2 if(K2==0)
154 2 while(K2==0);
155 2 state++;speaker();
156 2 second=0;
157 2 if(state==5)
158 2 {state=1;
159 3 }
160 2 if(state==1)
161 2 {standard=t1;
162 3 }
163 2 if(state==2)
164 2 {
165 3 standard=t2;
166 3 }
167 2 if(state==3)
168 2 {
169 3 standard=t3;
170 3 }
171 2 if(state==4)
172 2 {
173 3 standard=t4;
174 3 }
175 2 }
176 1
177 1 while((K5 ==0 ||flag == 1)&& urgent!=2 )
178 1 {
179 2
C51 COMPILER V7.50 TRAFFIC 05/25/2008 20:12:44 PAGE 4
180 2 EA = 0 ;
181 2 flag = 1 ;
182 2 if(K5 ==0)
183 2 {
184 3 delay(30);
185 3 if(K5 == 0)
186 3 {
187 4 stateflag++;
188 4 if(stateflag==5)
189 4 stateflag=1;
190 4
191 4 while(K5 ==0);
192 4 }
193 3 }
194 2
195 2
196 2 if(stateflag ==1)
197 2 {
198 3 if(K4 == 0)
199 3 {
200 4 delay(30);
201 4 if(K4 == 0)
202 4 {
203 5 if(t1<99)
204 5 t1++ ;
205 5 speaker();
206 5 while(K4==0);
207 5 }
208 4 }
209 3 if(K3 == 0)
210 3 {
211 4 delay(30);
212 4 if(K3 == 0)
213 4 {
214 5 if(t1>1)
215 5 t1-- ;
216 5 speaker();
217 5 while(K3==0);
218 5 }
219 4
220 4 }
221 3 P1=table[t1%10]; //数码管动态显示
222 3 led1=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -