|
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit c0=P2^0;//c0右避障---紅外傳感器
sbit c1=P2^1;//c1左避障
sbit c2=P2^2;//c2中間避障
sbit D1A=P1^0;//右輪電機輸出
sbit D1B=P1^1;
sbit D2A=P1^2;//左輪電機輸出
sbit D2B=P1^3;
int t=0;
int PWM_T1=0;//右輪電機占空比
int PWM_T2=0;//左輪電機占空比
//延時函數
void delay_ms(int x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<110;j++);
}
/********************************************
主程序
********************************************/
void main(void)
{
D1B=0;
D2B=0;
TMOD=0x02;//定時器0,工作模式2,8位定時模式
TH0=210; //寫入預置初值(取值1-255,數值越大PWM頻率越高)
TL0=210; //寫入預置值(取值1-255,數值越大PWM頻率越高)
TR0=1; //啟動定時器
ET0=1; //允許定時器0中斷
EA=1; //允許總中斷
PWM_T1=150;
PWM_T2=150;
delay_ms(10);
while(1)
{
if(c0==0&&c1==1)
{
PWM_T1=0;
PWM_T2=100;
delay_ms(10);
}
if(c0==1&&c1==0)
{
PWM_T1=100;
PWM_T2=0;
delay_ms(10);
}
if(c2==0)
{
PWM_T1=0;
PWM_T2=0;
delay_ms(10);
}
if(c2==1)
{
PWM_T1=100;
PWM_T2=100;
delay_ms(10);
}
if(c0==1&&c1==1)
{
PWM_T1=100;
PWM_T2=100;
delay_ms(10);
}
if(c0==0&&c1==0)
{
PWM_T1=0;
PWM_T2=0;
delay_ms(10);
}
}
}
//部分程序見附件
|
-
-
避障.zip
2020-1-8 09:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
856 Bytes, 下載次數: 18, 下載積分: 黑幣 -5
|