/*功能:寻迹小车使用芯片:AT89S52 或者 STC89C52 或 AT89S51 STC89C51晶振:12MHZ编译环境:Keil作者:MH~ */#include 〈reg51。h> // 引用标准库的头文件#include 〈intrins。h〉#define uchar unsigned char#define uint unsigned int//=================电机驱动=====================sbit dianji_r = P3^0; //右边电机控制口,低电平转?sbit dianji_l = P3^7; //左边电机控制口,低电平转//=============循迹感应接口======================sbit xjmk_r = P3^2;// 右边寻迹模块检测口 INT0sbit xjmk_l = P3^3;// 左边寻迹模块检测口 INT1void check_righet();//右边时候检测到黑线测试程序void check_left();//左边时候检测到黑线测试程序void delay_50us(uint t);void delayms(uint Ms);uchar r_count;//右边传感器检测到的次数计数单元uchar l_count;uint time;//***********************主程序******************************main() { time=50; dianji_r=0;//上电时右侧电机运行 dianji_l=0;//上电时左侧电机运行 EA=1; EX1=1; EX0=1; IT1=0; IT0=0; xjmk_r=1;//置 IO 为 1,准备读取数据 xjmk_l=1; _nop_(); r_count=0; l_count=0; while(1) { _nop_(); // check_righet();//调用右边寻迹检测传感器 // check_left();// if(r_count>=1) { delayms(time); dianji_r=0; dianji_l=0; r_count=0; _nop_(); } if(l_count〉=1) { delayms(time); dianji_r=0; dianji_l=0; l_count=0; _nop_(); } } }void init0int() interrupt 2 { l_count=5; dianji_l=1; dianji_r=0; if(r_count〉0) { EX0=0; delayms(20); if(time〉=20)time—=19; EX0=0; } return;}void init1int() interrupt 0 { r_count=5; dianji_r=1; dianji_l=0; if(l_count>0) { EX1=0; delayms(20); if(time>=20)time-=19; EX1=1;} return; }//*******************************************************************************//函数名称://功能:左边边时候检测到黑线测试程序void check_left(){ if(xjmk_l==0)//检测右边的传感器是否感应到黑线 { delay_50us(1);//延时,去除机械振动 _nop_(); if(xjmk_l==0)//再...