📄 new.lst
字号:
C51 COMPILER V7.06 NEW 01/17/2008 11:24:59 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE NEW
OBJECT MODULE PLACED IN new.OBJ
COMPILER INVOKED BY: D:\Program\keil c\C51\BIN\C51.EXE new.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2
3 /*********************************************************************************************************
-***
4 端口定义:
5 P1口的3个口控制交通灯,输出
6 P2口的四个端口P2.0 2.1 2.2 2.3控制数码管,输出
7 P0口的 0.4口用作启动开关 输入
8 P0口的四个端口P0.0 0.1 0.2 0.3作为输入开关用,用以调节红绿灯的亮灭时间 输入
9 初始值 红绿灯亮2秒(2000毫秒)
10 可调节红绿灯亮灭的时间,每次调节必须等到一个周期 即左边的绿灯亮完红灯重新开始为起始点
11 **********************************************************************************************************
-***/
12 sbit P10=P1^0;//输出交通灯
13 sbit P11=P1^1;//输出交通灯
14 sbit P12=P1^2;//输出交通灯
15 sbit P00=P0^0;//输入开关
16 sbit P01=P0^1;//输入开关
17 sbit P02=P0^2;//输入开关
18 sbit P03=P0^3;//输入开关
19 sbit P04=P0^4;//启动开关
20
21
22 void Initial(void);//系统初始化;
23 int check(void);//判断是否改变 交通灯亮灭时间 返回参数
24 void delay_ms(unsigned int i);//延时程序,单位毫秒
25 /*
26 初始化状态
27 先对要输入的口P00~P04写1,表示要输入
28 P10 11 12口输出0,交通灯全灭
29 P2口输出0X0F,显示在数码管中
30 */
31
32
33 void Initial(void)//系统初始化
34 {
35 1 P00=1;
36 1 P01=1;
37 1 P02=1;
38 1 P03=1;
39 1 P04=1;//输入端口先写1
40 1 P10=0;
41 1 P11=0;
42 1 P12=0;//交通灯先灭
43 1 P2=0X0f;//计数灯先为F
44 1 }
45 /******************************************************************************************
46 P03 使能开关,当其打开时,才判断其他时间选择开关的值
47 三位值 高位到低位 P02 P01 P00
48 ******************************************************************************************/
49 int check(void) //判断是否改变 交通灯亮灭时间 返回参数
50 {
51 1 int count,P0,P1,P2;
52 1 P0=~P00;
53 1 P1=~P01;
C51 COMPILER V7.06 NEW 01/17/2008 11:24:59 PAGE 2
54 1 P2=~P02;
55 1 count=P2 * 4+P1 * 2+P0;
56 1 if(P03==1)
57 1 return -1;
58 1 else
59 1 return count;
60 1
61 1 }
62 /*****************************************************************************************************
63 未核实 精确延时时间 from 51系列单片机设计实例 (第二版) 楼然苗 北京航空航天大学出版社
64 ******************************************************************************************************/
65 void delay_ms(unsigned int i)//延时1毫秒程序
66 {
67 1 unsigned int j;
68 1 while(i--)
69 1 for(j=0;j<120;j++);
70 1 }
71
72 /****************************************************************************************************
73 修改延时时间
74 返回值 左边红灯(P1.0)亮时间增减量 左边绿灯(P1.3)时间增减量 数码管显示值
75 右边绿灯亮时间增减量 右边红灯时间增减量
76 option (timel) (timer)
77 0 1(3) 0(2) 1
78 1 2(4) 0(2) 2
79 2 3(5) 0(2) 3
80 3 4(6) 0(2) 4
81 4 0(2) 1(3) 5
82 5 0(2) 2(4) 6
83 6 0(2) 3(5) 7
84 7 0(2) 4(6) 8
85 -1 0(2) 0(2) 0
86 ****************************************************************************************************/
87
88 void main(void)
89 {
90 1 /*
91 1 变量说明:
92 1 option 返回的交通灯亮灭参数check(void) 用来调节数码管输出
93 1 timel 根据check(void)的值,调节后左边红灯(右边绿灯)的亮的时间
94 1 timer 根据check(void)的值,调节后右边红灯(左边绿灯)的亮的时间
95 1 */
96 1 int option,timel, timer;//
97 1 Initial();
98 1
99 1 while(P04==1);//等到按下开关 电路开始运作
100 1 /***********************调试输入输出端口********************************
101 1 while(1)
102 1 {if(P00==0)
103 1 P10=1;
104 1 else
105 1 P10=0;
106 1 if(P01==0)
107 1 P11=1;
108 1 else
109 1 P11=0;
110 1 if(P04==0)
111 1 P12=1;
112 1 else
113 1 P12=0;
114 1 }
115 1 **********************************************************************/
C51 COMPILER V7.06 NEW 01/17/2008 11:24:59 PAGE 3
116 1 /***********************调试check函数********************************
117 1 while(1)
118 1 {
119 1 int b;
120 1 b=check();
121 1 switch(b)
122 1 {
123 1 case -1:P10=0;P11=0;P12=0;break;
124 1 case 0:P10=1;P11=0;P12=0;break;
125 1 case 1:P10=0;P11=1;P12=0;break;
126 1 case 2:P10=1;P11=1;P12=0;break;
127 1 case 3:P10=0;P11=0;P12=1;break;
128 1 case 4:P10=1;P11=0;P12=1;break;
129 1 case 5:P10=0;P11=1;P12=1;break;
130 1 case 6:P10=1;P11=1;P12=1;break;
131 1 default :P10=0;P11=0;P12=0;break;
132 1 }
133 1 }
134 1 **********************************************************************/
135 1 /**/
136 1 for(;;)
137 1 {
138 2 P10=1;//先亮左边红灯,右边绿灯
139 2 P11=0;//黄灯灭
140 2 P12=0;//灭左边绿灯,右边红灯
141 2 option=check();//读入交通灯亮灭时间参数
142 2 P2=(option+1);
143 2 if(option>=0)//参照上面的表
144 2 {
145 3 if(option<4)
146 3 {
147 4 timel=2+option+1;
148 4 timer=2;
149 4 }
150 3 else
151 3 {
152 4 timer=option-1;
153 4 timel=2;
154 4 }
155 3 }
156 2 else
157 2 {
158 3 timel=2;
159 3 timer=2;
160 3 }
161 2
162 2 delay_ms(timel*1000);//延时,延时时间根据读入参数定
163 2 P10=0;//灭左边红灯和右边绿灯
164 2 P11=1;//黄灯亮 // 黄
165 2 delay_ms(300); // 灯
166 2 P11=~P11; // 闪
167 2 delay_ms(300); // 烁
168 2 P11=~P11; // 两
169 2 delay_ms(300); // 次
170 2 P11=0;//黄灯灭
171 2 P12=1;//亮左边绿灯,右边红灯
172 2 delay_ms(timer*1000);
173 2 P12=0;//左边绿灯,右边红灯灭
174 2 P11=1;//黄灯亮 // 黄
175 2 delay_ms(300); // 灯
176 2 P11=~P11; // 闪
177 2 delay_ms(300); // 烁
C51 COMPILER V7.06 NEW 01/17/2008 11:24:59 PAGE 4
178 2 P11=~P11; // 两
179 2 delay_ms(300); // 次
180 2 P11=0;//黄灯灭
181 2 }
182 1 /**/
183 1 }
184
185
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 262 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
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 + -