📄 ser.lst
字号:
C51 COMPILER V8.02 SER 08/19/2008 14:42:15 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SER
OBJECT MODULE PLACED IN ser.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ser.c BROWSE DEBUG OBJECTEXTEND
line level source
1 ///////////////////////////////////////////////////////////////////
2 //新规则交通灯设计/////////////////////////////////////////////////
3 //设置P3.0,P3.1,P3.2三个按键调节时间,key1(功能键)/////////////
4 //调节主次通道的时间,key2(减一键),key3(加一键)/////////////////////
5 //增加串口通信,人机互动//////
6 ////黄山////
7 #include <reg51.h> //定义头文件
8 #include <stdio.h>
9 #define uchar unsigned char //定义无符号变量
10 #define uint unsigned int //定义有符号变量
11 uchar num,num1,count,key1num,flag,a;
12 sbit key1=P3^3;
13 sbit key2=P3^1;
14 sbit key3=P3^2;
15 sbit zshi=P3^7;
16 sbit zge=P3^6;
17 sbit cshi=P3^5;
18 sbit cge=P3^4;
19 uchar code dis[]={
20
21 0X3f,/*0*/
22 0X06,/*1*/
23 0X5b,/*2*/
24 0X4f,/*3*/
25 0X66,/*4*/
26 0X6d,/*5*/
27 0X7d,/*6*/
28 0X07,/*7*/
29 0X7f,/*8*/
30 0X6f,/*9*/
31 0X00,/*NULL*/
32 }; //0-9位七段共阴数码管显示
33
34
35 void delay(uint c) //延时子程序
36 {
37 1 uint i,j;
38 1 for(i=0;i<c;i++)
39 1 for(j=0;j<100;j++);
40 1
41 1 }
42
43 void init() //初始化子程序
44 {
45 1 TMOD=0x21;//设置定时器0为工作方式1
46 1 TH0=(65536-10000)/256;
47 1 TL0=(65536-10000)%256;
48 1 TH1=0xfd;
49 1 TL1=0xfd;
50 1 EA=1;//开总中断
51 1 ET0=1;//开定时器0中断
52 1 TR0=1;//启动定时器0
53 1 TR1=1;
54 1 REN=1; //允许串口中断,采用串口中断法
55 1 SM0=0;
C51 COMPILER V8.02 SER 08/19/2008 14:42:15 PAGE 2
56 1 SM1=1;
57 1 ES=1;//中断
58 1
59 1 num=56;
60 1 num1=56;
61 1 P3=0xff;
62 1 P2=0x00;
63 1 P1=0x00;
64 1
65 1 }
66 void guan() //消影子程序
67 {
68 1 zshi=1;
69 1 cshi=1;
70 1 zge=1;
71 1 cge=1;
72 1
73 1 }
74 void display(uchar dat_z,dat_c) //显示子程序
75 {
76 1 if(dat_z>=23&&dat_z<=56) //分段显示
77 1 {
78 2 if(26<dat_z&&dat_z<=56)
79 2 {
80 3 P0=0xeb;
81 3 zshi=1;
82 3 P1=dis[(dat_z-23)%10];
83 3 zshi=0;
84 3 delay(5);
85 3 guan();
86 3
87 3 zge=1;
88 3 P1=dis[(dat_z-23)/10];
89 3 zge=0;
90 3 delay(5);
91 3 guan();
92 3
93 3 cshi=1;
94 3 P2=dis[(dat_c-26)%10];
95 3 cshi=0;;
96 3 delay(5);
97 3 guan();
98 3 cge=1;
99 3 P2=dis[(dat_c-26)/10];
100 3 cge=0;
101 3 delay(5);
102 3
103 3 }
104 2 if(dat_z>=23&&dat_z<=26) //黄灯亮,最后三秒倒计时
105 2 {
106 3 P0=0xe2;//黄灯
107 3 zge=1;
108 3 P1=dis[(dat_z-23)%10];
109 3 zshi=0;
110 3 delay(1);
111 3 guan();
112 3
113 3 cshi=1;
114 3 cge=1;
115 3 P2=dis[(dat_z-23)%10];
116 3 cge=0;
117 3 delay(5);
C51 COMPILER V8.02 SER 08/19/2008 14:42:15 PAGE 3
118 3 guan();
119 3 }
120 2 }
121 1
122 1 if(dat_z<23)
123 1 {
124 2 if(dat_z>3&&dat_z<23)
125 2 {
126 3 P0=0xdd;//红灯
127 3 zshi=1;
128 3 P1=dis[(dat_z)%10];
129 3 zshi=0;
130 3 delay(5);
131 3 guan();
132 3
133 3 zge=1;
134 3 P1=dis[(dat_z)/10];
135 3 zge=0;
136 3 delay(5);
137 3 guan();
138 3
139 3 cshi=1;
140 3 P2=dis[(dat_c-3)%10];
141 3 cshi=0;
142 3 delay(5);
143 3 guan();
144 3
145 3 cge=1;
146 3 P2=dis[(dat_c-3)/10];
147 3 cge=0;
148 3 delay(5);
149 3 guan();
150 3 }
151 2 if(dat_z<=3) //黄灯亮,最后三秒倒计时
152 2 {
153 3 P0=0xd4;
154 3 cge=1;
155 3 P1=0xff;
156 3 zshi=0;
157 3 P1=dis[(dat_z)%10];
158 3 delay(1);
159 3 zshi=1;
160 3 guan();
161 3
162 3 zge=1;
163 3 zshi=1;
164 3 cge=1;
165 3 P2=0xff;
166 3 cshi=0;
167 3 P2=dis[(dat_z)%10];
168 3 delay(1);
169 3 cshi=1;
170 3 guan();
171 3 }
172 2
173 2 }
174 1
175 1 }
176 void displayz(uchar dat_z) //设置主通道时间时显示子程序,相当于主通道时间闪烁功能
177 {
178 1 cge=1;
179 1 if(dat_z>=23&&dat_z<=56)
C51 COMPILER V8.02 SER 08/19/2008 14:42:15 PAGE 4
180 1 {
181 2 if(26<dat_z&&dat_z<=56)
182 2 {
183 3 P0=0xeb;
184 3 zshi=1;
185 3 P1=dis[(dat_z-23)%10];
186 3 zshi=0;
187 3 delay(5);
188 3
189 3 guan();
190 3
191 3 zge=1;
192 3 P1=dis[(dat_z-23)/10];
193 3 zge=0;
194 3 delay(5);
195 3 guan();
196 3
197 3 }
198 2 if(dat_z>=23&&dat_z<=26)
199 2 {
200 3 P0=0xe2;//黄灯
201 3 zge=1;
202 3 P1=dis[(dat_z-23)%10];
203 3 zshi=0;
204 3 delay(1);
205 3 guan();
206 3 }
207 2
208 2 if(dat_z<23)
209 2 {
210 3 if(dat_z>3&&dat_z<23)
211 3 {
212 4 P0=0xdd;//红灯
213 4 zshi=1;
214 4 P1=dis[(dat_z)%10];
215 4 zshi=0;
216 4 delay(5);
217 4 guan();
218 4
219 4 zge=1;
220 4 P1=dis[(dat_z)/10];
221 4 zge=0;
222 4 delay(5);
223 4 guan();
224 4 }
225 3 if(dat_z<=3)
226 3 {
227 4 P0=0xd4;
228 4 cge=1;
229 4 P1=0xff;
230 4 zshi=0;
231 4 P1=dis[(dat_z)%10];
232 4 delay(1);
233 4 zshi=1;
234 4 guan();
235 4
236 4 }
237 3
238 3 }
239 2 }
240 1 }
241 void displayc(uchar dat_c)///设置次通道时间时显示子程序,相当于主通道时间闪烁功能
C51 COMPILER V8.02 SER 08/19/2008 14:42:15 PAGE 5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -