master-all.lst
来自「全国电子大赛智能小车赛题」· LST 代码 · 共 250 行
LST
250 行
C51 COMPILER V7.06 MASTER_ALL 12/13/2008 12:16:46 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MASTER_ALL
OBJECT MODULE PLACED IN master-all.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE master-all.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<all.h>
2
3
4 uchar timeflag,dplay;
5 uchar tf,flag,fflag;
6 uint time,needdisplay,disy;
7 uchar disx;
8 uchar i=0;
9 uchar stopflag=0;
10
11 sbit beer=P2^4; //蜂鸣器
12
13 unsigned char code Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
14 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x7f};//数码显示
15 uint Tab_data[5]={0};//数据池
16 void displayl(uchar dula,uchar wela )//显示
17 {
18 1 uchar i;
19 1 P2=0xff;
20 1 i=dula;
21 1 P0=Tab[i];
22 1 P2=wela;
23 1
24 1 }
25 void display(uint num)//显示
26 {
27 1 switch(tf)
28 1 {
29 2 case 0:displayl(num/100,0xfe);
30 2 break;
31 2 case 1:displayl((num%100)/10,0xfd);
32 2 break;
33 2 case 2:displayl(16,0xfb);
34 2 break;
35 2 case 3:displayl((num%100%10),0xf7);
36 2 break;
37 2 }
38 1 }
39
40 void beerring()//蜂鸣器响
41 {
42 1 // if(timeflag%2)beer=~beer;
43 1 beer=0;
44 1 }
45
46
47 void sendmsg(uchar sbuf)//发指令
48 {
49 1 uchar x;
50 1 TI=0;
51 1 SBUF=sbuf;
52 1 for(x=50;x>>0;x--);
53 1 }
54
55 void delay5s() //停车5s
C51 COMPILER V7.06 MASTER_ALL 12/13/2008 12:16:46 PAGE 2
56 {
57 1 uint i;
58 1 i=time+50;
59 1 while(i!=time)
60 1 {
61 2 display(i-time);
62 2 beerring();
63 2 }
64 1 flag=0x22;
65 1 sendmsg(flag);
66 1
67 1 }
68
69 void stoprun()
70 {
71 1 Tab_data[3]=disy;
72 1 Tab_data[4]=time;
73 1 stopflag=1;
74 1 ES=0;
75 1 EX1=0;
76 1 EX0=1;
77 1
78 1 }
79
80 void stop() //停车
81 {
82 1 uchar u=0;
83 1 flag=0x88;
84 1 sendmsg(flag);
85 1 while(1)
86 1 {
87 2
88 2 // if(!(time%50))
89 2 // {
90 2 // u++;
91 2 // if(u==5)u=0;
92 2 // }
93 2 // needdisplay=Tab_data[u];
94 2 display(Tab_data[4]);
95 2 }
96 1 }
97
98
99 void main()
100 {
101 1
102 1 TMOD=TMOD|0x21;
103 1 TH0=0xee;
104 1 TL0=0x00;
105 1 TH1=0xfd;
106 1 TL1=0xfd;
107 1
108 1 SCON=0x50;
109 1 PCON=0;
110 1 PS=1;
111 1 PT0=1;
112 1
113 1 EA=1;
114 1 ET0=1;
115 1
116 1 ES=1;
117 1 PX0=1;
C51 COMPILER V7.06 MASTER_ALL 12/13/2008 12:16:46 PAGE 3
118 1
119 1 IT0=1;
120 1 IT1=1;
121 1
122 1 EX0=1;
123 1 EX1=1;
124 1
125 1 TR0=1;
126 1 TR1=1;
127 1
128 1 time=0;
129 1 timeflag=0;
130 1 flag=0x11;
131 1 sendmsg(flag);
132 1 while(1)
133 1 {
134 2 if(stopflag==1)stop();
135 2 else if(i==0)needdisplay=time;
136 2 else if(i<4)needdisplay=i*10;
137 2 else if(i==6)needdisplay=time;
138 2
139 2 display(needdisplay);
140 2 // display(Tab_data[i-1]);
141 2 if(i==4)
142 2 {
143 3 flag=0x88;
144 3 sendmsg(flag);
145 3 delay5s();
146 3 i=6;
147 3 }
148 2 else if(time==900)stoprun();
149 2 // {
150 2 // flag=0x88;
151 2 // sendmsg(flag);
152 2 // while(1)stop();
153 2 //}
154 2 }
155 1 while(1);
156 1 }
157
158 void timer0int() interrupt 1 //定时器中断,系统时间
159 {
160 1 TR0=0;
161 1 TH0=0xf6;
162 1 TL0=0xf0;
163 1 timeflag++;
164 1 TR0=1;
165 1 if(tf==3)tf=0;
166 1 else tf++;
167 1 if(timeflag==40)
168 1 {
169 2 timeflag=0;
170 2 time++;
171 2 // if(time==901)
172 2 // {
173 2 //flag=0x88;
174 2 // time=time-1;
175 2 // }
176 2 }
177 1 }
178
179 void uartint() interrupt 4//通信中断,传输数据
C51 COMPILER V7.06 MASTER_ALL 12/13/2008 12:16:46 PAGE 4
180 {
181 1 TI=0;
182 1 while(RI)
183 1 {
184 2 switch(SBUF)
185 2 {
186 3 case 0x55:break;
187 3 case 0x88:stoprun();
188 3 break;
189 3 // default:sendmsg(flag);
190 3 }
191 2 RI=0;
192 2 }
193 1
194 1 }
195
196 void intin0() interrupt 0 //外0中断,距离检测
197 {
198 1 disx++;
199 1 if(disx==7)
200 1 {
201 2 disy++;
202 2 disx=0;
203 2 }
204 1 //if(disy==8)disz++;
205 1
206 1 }
207
208 void intin1() interrupt 2 //外1中断,金属检测
209 {
210 1 uchar ja,jb;
211 1 ja=disy;
212 1 while(INT1==0)beerring();
213 1 jb=disy;
214 1 Tab_data[i]=(ja+jb)/2;
215 1 i++;
216 1 if(i==4)
217 1 EX1=0;
218 1
219 1 }
220
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 533 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 24 3
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?