📄 scar.c
字号:
//程序名:电机PWM调速控制小车。
//关键问题:两路PWM信号如何产生,解决方法之一,用FPGA产生。51只作控制。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rrc=P1^0;//最右边的红外接收头
sbit rc=P1^1;//右边的红外接收头
sbit lc=P1^2;//左边的红外接收头
sbit llc=P1^3;//小车底下用来探测黑线的四个红外接收头数据脚。
/*====================================================================================//
函数功能:根据黑线改变小车方向
入口参数:direction:小车方向控制字
/-------------------------------------------------------------------------------------*/
void turn(uchar direction )
{
P1=direction;
}
//=================================Main==============================================//
void main()
{
turn(0x0f);
while(1)
{
turn(0x0f);
}
}
//===================================================================================//
void itto() interrupt 0 using 1 //进中断后判断是那个红外接收头探测到黑线。
//根据探测所知黑线位置,调用不同强调的函数调整小车方向。
{ //可能要延时一小段时间。
//这样可能有问题,可以改成先把P1口的数据读回来,屏蔽掉高四位后进行判断
//改变速度通过改变占空比定时器,来改变PWM信号。
//这里有两个电机。
if(rc=1)
{
turn(0x00);//调用之后可能要适当的延时。
}
else if(lc=1)
{
turn(0x02);
}
else if(rrc=1)
{
turn(0x4);
}
else if(llc=1)
{
turn(0x08);
}
else
{
}//同时测到两个黑线以上,可以报警。
}
//***************************************END*****************************************//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -