📄 测距程序.lst
字号:
C51 COMPILER V8.08 瞋距程序 05/01/2010 20:54:32 PAGE 1
C51 COMPILER V8.08, 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 /*********************************************************************************************************
-**/
2 //DYP-ME007 超声波测距模块 DEMO 程序
3 //晶振:11。0592
4 //程序编写:Tvrostar QQ: 77154401
5 //taobao店铺:wxdz.taobao.com
6 //接线:模块TRIG接 P1.2 ECH0 接P1.1
7 //串口波特率9600
8 /*********************************************************************************************************
-**/
9 #include <AT89X51.H>
10 #include <intrins.h>
11 #include <STDIO.H>
12
13 #define uchar unsigned char
14 #define uint unsigned int
15 #define RX P1_1
16 #define TX P1_2
17
18
19 unsigned int time=0;
20 unsigned int timer=0;
21 float S=0;
22 bit flag =0;
23
24
25 /********************************************************/
26 void Conut(void)
27 {
28 1 time=TH0*256+TL0;
29 1 TH0=0;
30 1 TL0=0;
31 1 S=(time*1.87)/100; //算出来是CM
32 1 if(flag==1) //超出测量
33 1 {
34 2 flag=0;
35 2 printf("-----\n");
36 2 }
37 1
38 1 printf("S=%f\n",S);
39 1 }
40 /********************************************************/
41 void delayms(unsigned int ms)
42 {
43 1 unsigned char i=100,j;
44 1 for(;ms;ms--)
45 1 {
46 2 while(--i)
47 2 {
48 3 j=10;
49 3 while(--j);
50 3 }
51 2 }
52 1 }
53 /********************************************************/
C51 COMPILER V8.08 瞋距程序 05/01/2010 20:54:32 PAGE 2
54 void zd0() interrupt 1 //T0中断用来计数器溢出,超过测距范围
55 {
56 1 flag=1; //中断溢出标志
57 1 }
58 /********************************************************/
59 void StartModule() //T1中断用来扫描数码管和计800MS启动模块
60 {
61 1 TX=1; //800MS 启动一次模块
62 1 _nop_();
63 1 _nop_();
64 1 _nop_();
65 1 _nop_();
66 1 _nop_();
67 1 _nop_();
68 1 _nop_();
69 1 _nop_();
70 1 _nop_();
71 1 _nop_();
72 1 _nop_();
73 1 _nop_();
74 1 _nop_();
75 1 _nop_();
76 1 _nop_();
77 1 _nop_();
78 1 _nop_();
79 1 _nop_();
80 1 _nop_();
81 1 _nop_();
82 1 _nop_();
83 1 TX=0;
84 1 }
85 /********************************************************/
86 void main(void)
87 {
88 1 TMOD=0x21; //设T0为方式1,GATE=1;
89 1 SCON=0x50;
90 1 TH1=0xFD;
91 1 TL1=0xFD;
92 1 TH0=0;
93 1 TL0=0;
94 1 TR0=1;
95 1 ET0=1; //允许T0中断
96 1 TR1=1; //开启定时器
97 1 TI=1;
98 1
99 1 EA=1; //开启总中断
100 1
101 1
102 1 while(1)
103 1 {
104 2 StartModule();
105 2 while(!RX); //当RX为零时等待
106 2 TR0=1; //开启计数
107 2 while(RX); //当RX为1计数并等待
108 2 TR0=0; //关闭计数
109 2 Conut(); //计算
110 2 delayms(100); //100MS
111 2
112 2 }
113 1
114 1 }
C51 COMPILER V8.08 瞋距程序 05/01/2010 20:54:32 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 199 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -