fashi.c
来自「本篇文章介绍了一种智能小车」· C语言 代码 · 共 147 行
C
147 行
#include<reg52.h>
#include<stdio.h>
#include <absacc.h>
#include <string.h>
#include <intrins.h>//这个头文件中有_nop_();
#define uchar unsigned char
#define uint unsigned int
//------------------------------变量定义--------------------------
uint tme = 0; //PWM 变量
uint speed = 2; //速度变量
//---------左右超声波测得距离
bit shou_left = 0;
bit shou_right = 0;
//-------------AD0832
int ad=0x00;
unsigned char bdata DATAIN;
unsigned char bdata CTRL;
sbit BITIN = DATAIN^0;
sbit CBIT = CTRL^0;
//------------------------------口线----------------
//超声波口线
sbit fa = P2^5;
sbit shou_1 = P2^7;
sbit shou_2 = P2^6;
//控制方向电机口线
sbit duo = P2^0;
sbit left = P2^1;
sbit right = P2^2;
//行驶电机口线
sbit run = P1^3;
sbit b = P1^4;
sbit a = P1^5;
//AD口线
sbit SCS = P1^0;
sbit SCLK = P1^1;
sbit SDOUT = P1^2;
sbit SDIN = P1^2;
//------------------------------子程序声明---------------------------------------
void delay(int dey);
void start(void);
unsigned char get_ad(void);
//---------------------------------初始化----------------------------------------
void start(void)
{
EA=1;
ET0=1;
ET1=1;
TMOD=0x22;
TH1=0Xf9;
TL1=0Xf9;
TR0=1 ;
}
//---------------------------------读AD0832------------------------------------------
unsigned char get_ad()
{
unsigned char data i;
CTRL=0x07; //启动位,SGL 选CH0通道,011三位
SCS=1; //选通允许
SCS=0;
for(i=0;i<3;i++)
{
SDIN=CBIT;
SCLK=0; //发三个时钟
SCLK=1;
CTRL=CTRL>>1;
}
SCLK=0;
SCLK=1; //第四个时钟
/*------------------------------------------开始读A/D---------------------------*/
SCLK=0;
for(i=0;i<8;i++)
{
DATAIN=DATAIN<<1; //移位8次取到采样的值
BITIN=SDOUT;
SCLK=1;
SCLK=0;
}
SCS=1;
return(DATAIN);
}
//--------------------------------delay---------------------------------------
void delay(int dey)
{
while(dey > 0)
{
dey--;
}
}
//---------------------------------方向调整程序-------------------------------
void regu(int dri)
{
ad = get_ad();
if( ad > dri)
{
left=0;
right=1;
}
else if( ad < dri)
{
left=1;
right=0;
}
else if( ad == dri)
left=right=0;
}
//---------------------------------测量距离-----------------------------------------
void test( void )
{
uint i;
shou_left = shou_right = 0;
//while(1)//for( i = 0;i < 100;i ++)
{
fa =!fa;
_nop_();_nop_();_nop_();
_nop_(); _nop_();_nop_();
_nop_(); _nop_();_nop_();
_nop_();_nop_();_nop_();
_nop_(); _nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
if(shou_1 == 0)
{
shou_left = 1;
}
if(shou_2 == 0)
{
shou_right = 1;
}
}
}
//--------------------------------主程序------------------------------------------
void main(void)
{
start();
while(1);
{
test();
}
}
//--------------------------------速度中断-----------------------------------------
void time0(void) interrupt 3 using 1
{
fa=!fa;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?