📄 ultrasonic.lst
字号:
C51 COMPILER V8.12 ULTRASONIC 09/05/2009 17:42:31 PAGE 1
C51 COMPILER V8.12, COMPILATION OF MODULE ULTRASONIC
OBJECT MODULE PLACED IN ultrasonic.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ultrasonic.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG52.h>
2 #include<stdio.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6 extern char *itoa(int i);
7
8 uint code SEG7[16]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60,
9 0x30,0x25,0xa9,0x26,0xa1,0xb1};//0 1 2 3 4 5 6 7 8 9 A-E
10
11 uchar code ACT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //数码管显示位置
12
13 uchar dis[4];
14 sbit trig=P1^0;
15 sbit echo=P1^1;
16
17 void delay(uint k)
18 {
19 1 uint i,j;
20 1 for(i=0;i<k;i++)
21 1 {
22 2 for(j=0;j<121;j++)
23 2 {;}
24 2 }
25 1 }
26
27 void display(uint dis)
28 {
29 1 P0=SEG7[dis%10];
30 1 P2=ACT[3];
31 1 delay(1);
32 1
33 1 P0=SEG7[(dis/10)%10];
34 1 P2=ACT[2];
35 1 delay(1);
36 1
37 1 P0=SEG7[(dis/100)%10];
38 1 P2=ACT[1];
39 1 delay(1);
40 1
41 1 P0=SEG7[dis/1000];
42 1 P2=ACT[0];
43 1 delay(1);
44 1 }
45
46 void display2(uint Hi,uint Low)
47 {
48 1 P0=SEG7[Hi%10];
49 1 P2=ACT[3];
50 1 delay(1);
51 1
52 1 P0=SEG7[(Hi/10)%10];
53 1 P2=ACT[2];
54 1 delay(1);
55 1
C51 COMPILER V8.12 ULTRASONIC 09/05/2009 17:42:31 PAGE 2
56 1 P0=SEG7[(Hi/100)%10];
57 1 P2=ACT[1];
58 1 delay(1);
59 1
60 1 /* P0=SEG7[Hi/1000];
61 1 P2=ACT[0];
62 1 delay(1);
63 1 */
64 1 //Low
65 1 P0=SEG7[Low%10];
66 1 P2=ACT[7];
67 1 delay(1);
68 1
69 1 P0=SEG7[(Low/10)%10];
70 1 P2=ACT[6];
71 1 delay(1);
72 1
73 1 P0=SEG7[(Low/100)%10];
74 1 P2=ACT[5];
75 1 delay(1);
76 1
77 1 /* P0=SEG7[Low/1000];
78 1 P2=ACT[4];
79 1 delay(1); */
80 1 }
81
82 void delay10us()
83 {
84 1 uchar i;
85 1 for(i=11;i>0;i--);
86 1 }
87
88 void init()
89 {
90 1 TMOD=0x21;//模式1
91 1 TH1=0xf3;//4800bps fosc=12M
92 1 TL1=0xf3;
93 1 TR0=0;
94 1 trig=0;
95 1 echo=0;
96 1 TH0=0;
97 1 TL0=0;
98 1 TCON=0x00;
99 1 SCON=0x50;//SM0=0 SM1=1 SM2=0 REN=1 TB8=0 R8=0 TI=0 RI=0
100 1 PCON=0x80;//SMOD=1
101 1 TR1=1;
102 1 ES=1;
103 1 EA=1;
104 1 }
105
106 uint getDistance()
107 {
108 1 uint i=29412;//5m来回需要的时间(us) (5*2/340)*1000000
109 1 TR0=0;
110 1 TH0=0;
111 1 TL0=0;
112 1 //接收信号端置0
113 1 echo=0;
114 1 //开始触发
115 1 trig=1;
116 1 //延时10微秒
117 1 delay10us();
C51 COMPILER V8.12 ULTRASONIC 09/05/2009 17:42:31 PAGE 3
118 1 //停止触发
119 1 trig=0;
120 1 //没有信号返回并且在5米障碍物信号返回需要的时间前则等待 (无信号即时返回,防止死循环,阻碍其它程序的执
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -