?? 0820.lst
字號:
C51 COMPILER V8.02 0820 08/21/2008 01:50:51 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 0820
OBJECT MODULE PLACED IN 0820.OBJ
COMPILER INVOKED BY: E:\design tools\keilc\C51\BIN\C51.EXE 0820.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 count,key1num,flag,a,zg,zr,y,cg,cr,numzg,numzr,numcg,numcr,countser,flagSer,dyflagSer;
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 0820 08/21/2008 01:50:51 PAGE 2
56 1 SM1=1;
57 1 ES=1;//中斷
58 1 y=3;
59 1 zg=30;
60 1 zr=23;
61 1 cg=20;
62 1 cr=33;
63 1
64 1 P3=0xff;
65 1 P2=0x00;
66 1 P1=0x00;
67 1
68 1 }
69 void guan() //消影子程序
70 {
71 1 zshi=1;
72 1 cshi=1;
73 1 zge=1;
74 1 cge=1;
75 1
76 1 }
77 void display(uchar dat_z,dat_c) //顯示子程序
78 {
79 1
80 1 zshi=1;
81 1 P1=dis[(dat_z)%10];
82 1 zshi=0;
83 1 delay(5);
84 1 guan();
85 1
86 1 zge=1;
87 1 P1=dis[(dat_z)/10];
88 1 zge=0;
89 1 delay(5);
90 1 guan();
91 1
92 1 cshi=1;
93 1 P2=dis[(dat_c)%10];
94 1 cshi=0;;
95 1 delay(5);
96 1 guan();
97 1 cge=1;
98 1 P2=dis[(dat_c)/10];
99 1 cge=0;
100 1 delay(5);
101 1
102 1 }
103 void displayy(uchar dat)
104 {
105 1 zshi=1;
106 1 P1=dis[dat];
107 1 zshi=0;
108 1 delay(5);
109 1 guan();
110 1
111 1 cshi=1;
112 1 P2=dis[dat];
113 1 cshi=0;
114 1 delay(5);
115 1 guan();
116 1 }
117 void displayz(uchar dat_z)
C51 COMPILER V8.02 0820 08/21/2008 01:50:51 PAGE 3
118 {
119 1 zshi=1;
120 1 P1=dis[(dat_z)%10];
121 1 zshi=0;
122 1 delay(5);
123 1 guan();
124 1
125 1 zge=1;
126 1 P1=dis[(dat_z)/10];
127 1 zge=0;
128 1 delay(5);
129 1 guan();
130 1 }
131 void displayc(uchar dat_c)
132 {
133 1
134 1 cshi=1;
135 1 P2=dis[(dat_c)%10];
136 1 cshi=0;;
137 1 delay(5);
138 1 guan();
139 1 cge=1;
140 1 P2=dis[(dat_c)/10];
141 1 cge=0;
142 1 delay(5);
143 1 guan();
144 1 }
145 void keyscan()
146 {
147 1 if(key1==0)
148 1 {
149 2 delay(5);
150 2 if(key1==0)
151 2 {
152 3 while(!key1)
153 3 {
154 4 if(flag==0)
155 4 {
156 5 display(zg,cr);
157 5 }
158 4 if(flag==2)
159 4 {
160 5 display(cg,zr);
161 5 }
162 4 }
163 3 key1num++;
164 3 if(key1num==1)
165 3 {
166 4 TR0=0;
167 4
168 4 }
169 3 if(key1num==3)
170 3 {
171 4 TR0=1;
172 4 key1num=0;
173 4 }
174 3
175 3 }
176 2
177 2 }
178 1 if(key1num!=0)
179 1 {
C51 COMPILER V8.02 0820 08/21/2008 01:50:51 PAGE 4
180 2 if(key1num==1)
181 2 {
182 3 if(key2==0)
183 3 {
184 4 delay(2);
185 4 if(key2==0)
186 4 {
187 5 while(!key2)
188 5 {
189 6 if(flag==0)
190 6 {
191 7 displayz(zg);
192 7 }
193 6 if(flag==2)
194 6 {
195 7 displayz(cg);
196 7 }
197 6 }
198 5 if(flag==0)
199 5 {
200 6 zg++;
201 6 }
202 5 if(flag==2)
203 5 {
204 6 cg++;
205 6 }
206 5
207 5 }
208 4
209 4 }
210 3
211 3 if(key3==0)
212 3 {
213 4 delay(5);
214 4 if(key3==0)
215 4 {
216 5 while(!key3)
217 5 {
218 6 if(flag==0)
219 6 {
220 7 displayz(zg);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -