📄 超声测距.lst
字号:
C51 COMPILER V8.02 砡蒧测__ 09/01/2007 01:37:26 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 砡蒧测__
OBJECT MODULE PLACED IN 超声测距.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 超声测距.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3 #define uint unsigned int
4 #define uchar unsigned char
5
6 sbit dula=P2^7;
7 sbit wela=P2^6; //数码管段,位定义
8
9 sbit send=P1^0; //发送端定义
10
11
12 uint count=0,js,L,a,b;
13 uchar a1,a2,a3;
14
15 void display(uchar,uchar,uchar);
16 void delay(uchar);
17 void tx();
18
19 uchar code table[]={
20 0x3f,0x06,0x5b,0x4f,
21 0x66,0x6d,0x7d,0x07,
22 0x7f,0x6f,0x77,0x7c,
23 0x39,0x5e,0x79,0x71}; //段码数组
24
25 void main()
26 {
27 1 EA=0;
28 1 send=0;
29 1 delay(100);
30 1
31 1
32 1 TH0=0x00;
33 1 TL0=0x00; //T0设初值刚好驱动探头
34 1 TMOD=0x11; //定时器0,1都为模式1,16位
35 1 /* TH1=0x00;
36 1 TL1=0x00;*/ //T1计数设初值
37 1 TR0=1; //开启定时0
38 1 /*TR1=1;*/ //开启定时1
39 1
40 1
41 1
42 1 EA=1;
43 1 ET0=1;
44 1 PT0=1;
45 1 tx();
46 1 /*PT0=1;*/ //开启定时器0中断并设优先级
47 1 /* ET1=1;
48 1 PX1=1; */
49 1
50 1 IT0=1; // 低电平触发方式
51 1 EX0=1; //开启外部中断0
52 1 IE=0x83;
53 1
54 1 /*PX0=1;*/
55 1
C51 COMPILER V8.02 砡蒧测__ 09/01/2007 01:37:26 PAGE 2
56 1
57 1
58 1 /*while(rec=1)
59 1 {
60 1 TR1=0;
61 1 js=TH1*256+TL1;
62 1
63 1 L=(js*85)/10000;
64 1
65 1 a1=L/100;
66 1 a2=L%100/10;
67 1 a3=L%100%10;
68 1 display(a1,a2,a3);
69 1 }
70 1 rec=0;*/
71 1
72 1 }
73
74
75 void tx() //从P1.0发出40KHz的脉冲
76 {
77 1 uchar n,p;
78 1 for(n=0;n<40;n++)
79 1 {
80 2 send=1;
81 2 for(p=0;p<3;p++);
82 2 send=0;
83 2 for(p=0;p<2;p++);
84 2 send=0;
85 2 }
86 1 }
87
88
89 void display(uchar bai,uchar shi,uchar ge)
90 {
91 1 for(;;)
92 1 {
93 2 dula=1;
94 2 P0=table[bai];
95 2 dula=0;
96 2 wela=1;
97 2 P0=0x0d;
98 2 wela=0;
99 2 delay(1);
100 2
101 2 dula=1;
102 2 P0=table[shi];
103 2 dula=0;
104 2 wela=1;
105 2 P0=0x0b;
106 2 wela=0;
107 2 delay(1);
108 2
109 2 dula=1;
110 2 P0=table[ge];
111 2 dula=0;
112 2 wela=1;
113 2 P0=0x07;
114 2 wela=0;
115 2 delay(1);
116 2 }
117 1 }
C51 COMPILER V8.02 砡蒧测__ 09/01/2007 01:37:26 PAGE 3
118
119
120 void delay(uchar x5ms)
121 {
122 1 for(b=x5ms;b>0;b--)
123 1 for(a=532;a>0;a--);
124 1 }
125
126
127
128 /*void time0_int(void) interrupt 1
129 {
130 count++;
131 send=~send;
132 TH0=0x1F;
133 TL0=0xF4;
134 if(count==17)
135 {
136 count=0;
137 TR0=0;
138 ET0=0;
139 TH0=0x00;
140 TL0=0x00;
141 }
142 }*/
143
144 void rec(void) interrupt 0 //外部中断0,接收信号
145 {
146 1 TR0=0;
147 1 js=TH0*256+TL0;
148 1 if(js<300);
149 1 if(js>=300)
150 1 {
151 2 L=(170*js)/1000;
152 2 a1=L/100;
153 2 a2=L%100/10;
154 2 a3=L%100%10;
155 2 display(a1,a2,a3);
156 2 }
157 1 }
158
159
160 /*void time1_over(void) interrupt 1 //T1溢出则无效测量,显示FFF
161 {
162 a1=table[15];
163 a2=table[15];
164 a3=table[15];
165 display(a1,a2,a3);
166 ET0=0;
167 }*/
168
169
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 346 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 3
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V8.02 砡蒧测__ 09/01/2007 01:37:26 PAGE 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -