📄 chaosheng.lst
字号:
C51 COMPILER V6.02 CHAOSHENG 12/07/2006 20:32:16 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE CHAOSHENG
OBJECT MODULE PLACED IN F:\STUDY\WAVEWO~1\CAR\超声波\CHAOSHENG.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE F:\STUDY\WAVEWO~1\CAR\超声波\CHAOSHENG.C DB SB OE
stmt level source
1 #include<reg52.h>
2 #include<stdio.h>
3 #include <absacc.h>
4 #include <string.h>
5 #include <intrins.h>//这个头文件中有_nop_();
6 #define uchar unsigned char
7 #define uint unsigned int
8 //------------------------------变量定义--------------------------
9 uint data tme = 0,PWM = 0; //PWM
10 uint data speed = 6; //shift
11 uint data fang_xiang = 70;//直行时AD值
12 uint data max = 105; //130
13 uint data min = 30; //25
14 //---------超声波测距变量
15 uint data shou_left = 0;
16 uint data shou_right = 0;
17 uint data far = 0;
18 //超声波口线
19 //----------------
20 sbit fa = P2^5;
21 sbit shou_1 = P2^7;
22 sbit shou_2 = P2^6;
23 int data ad = 0x00;
24 unsigned char bdata DATAIN;
25 unsigned char bdata CTRL;
26 sbit BITIN = DATAIN^0;
27 sbit CBIT = CTRL^0;
28 //------------------------------口线----------------
29 //---------------------方向电机
30 sbit duo = P2^0;
31 sbit left = P2^1;
32 sbit right = P2^2;
33 //----------------------驱动电机
34 sbit run = P1^3;
35 sbit b = P1^4;
36 sbit a = P1^5;
37 //---------------------0832
38 sbit SCS = P1^0;
39 sbit SCLK = P1^1;
40 sbit SDOUT = P1^2;
41 sbit SDIN = P1^2;
42 //------------------------------子程序声明---------------------------------------
43 void delay( uint dey );
44 void start( void );
45 unsigned char get_ad( void );
46 //---------------------------------初始化----------------------------------------
47 void start( void )
48 {
49 1 EA = 1;
50 1 ET0 = 1;
51 1 TMOD = 0x22;
52 1 TH0 = 0X40;
53 1 TL0 = 0X40;
54 1 PT0 = 1;
55 1 TR0 = 1;
C51 COMPILER V6.02 CHAOSHENG 12/07/2006 20:32:16 PAGE 2
56 1 IT0 = 0;
57 1 EX0 = 1;
58 1 }
59
60 //---------------------------------0832------------------------------------------
61 uchar get_ad( )
62 {
63 1 uchar data i;
64 1 CTRL = 0x07; //启动位,SGL 选CH0通道,011三位
65 1 SCS = 1; //选通允许
66 1 SCS = 0;
67 1 for( i = 0;i < 3;i ++ )
68 1 {
69 2 SDIN = CBIT;
70 2 SCLK = 0; //发三个时钟
71 2 SCLK = 1;
72 2 CTRL = CTRL >> 1;
73 2 }
74 1 SCLK = 0;
75 1 SCLK = 1; //第四个时钟
76 1 /*------------------------------------------开始读A/D---------------------------*/
77 1 SCLK = 0;
78 1 for( i = 0;i < 8;i ++ )
79 1 {
80 2 DATAIN = DATAIN << 1; //移位8次取到采样的值
81 2 BITIN = SDOUT;
82 2 SCLK = 1;
83 2 SCLK = 0;
84 2 }
85 1 SCS = 1;
86 1 return( DATAIN );
87 1 }
88 //--------------------------------delay---------------------------------------
89 void delay( uint dey )
90 {
91 1 while( dey -- );
92 1 }
93 //---------------------------------方向调整程序-------------------------------
94 void regu( int dri )
95 {
96 1 int data k;
97 1 ad = 0;
98 1 for(k = 0;k < 25;k ++)
99 1 {
100 2 ad += get_ad();
101 2 }
102 1 ad /= 25;
103 1 k = ad - dri;
104 1 if( k > 2)
105 1 {
106 2 left = 0;
107 2 right = 1;
108 2 }
109 1 else if( k < -1)
110 1 {
111 2 left = 1;
112 2 right = 0;
113 2 }
114 1 else
115 1 left = right = 0;
116 1 }
117 //--------------------------------探障程序---------------------------------------
C51 COMPILER V6.02 CHAOSHENG 12/07/2006 20:32:16 PAGE 3
118 void test( void )
119 {
120 1 ET1 = 1;
121 1 TH1 = 0xe9;
122 1 TL1 = 0xe9;
123 1 far = 0;
124 1 TR1 = 1;
125 1 EX0 = 1;
126 1 delay ( 100 );
127 1 EX0 = 0;
128 1 TR1 = 0;
129 1 }
130 //--------------------------------行驶程序-----------------------------------------
131 void on_the_way( void )
132 {
133 1 a = 0; b = 1; // 小车的前进电平
134 1 if( shou_right )
135 1 {
136 2 fang_xiang += 30;
137 2 if( fang_xiang > max )
138 2 fang_xiang = max;
139 2 }
140 1 if( shou_left )
141 1 {
142 2 fang_xiang -= 30;
143 2 if( fang_xiang < min )
144 2 fang_xiang = min;
145 2 }
146 1 shou_left = 0;
147 1 shou_right = 0;
148 1 TR1 = 0;
149 1 }
150 //-------------------------------直行------------------------------------------
151 void zhi_xing ( void )
152 {
153 1 if( fang_xiang > 70 )
154 1 fang_xiang -= 1;
155 1 if( fang_xiang < 70 )
156 1 fang_xiang += 1;
157 1 }
158 //--------------------------------主程序------------------------------------------
159 void main ( void )
160 {
161 1 uint data i;
162 1 start( );
163 1 while(1)
164 1 {
165 2 for( i = 0;i < 5;i ++ )
166 2 {
167 3 test( );
168 3 on_the_way( );
169 3 regu( fang_xiang );
170 3 }
171 2 zhi_xing( );
172 2 }
173 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -