金牌会员
- 积分
- 1165
- 威望
- 593
- 贡献
- 266
- 兑换币
- 363
- 注册时间
- 2013-1-10
- 在线时间
- 153 小时
- 毕业学校
- 福建工程学院
|
本人现在用52单片机学习智能车制作,现在编写程序遇到了一个问题,希望有人能伴我解答下,下面是我写的程序:
#include<reg52.h>
#include<intrins.h>
sbit ENA=P0^0; //左电机使能端
sbit P01=P0^1; //电机接口,左,INT1
sbit P02=P0^2; // 左,INT2
sbit P03=P0^3; // 右,INT4
sbit P04=P0^4; // 右,INT3
sbit ENB=P0^5; //右电机使能端
unsigned char LPWM,RPWM;
unsigned char i=0,j=0,k=0;
/*
void delay(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
*/
void init()
{
P01=1,P02=0,P03=0,P04=1;
ENA=0,ENB=0;
TMOD=0x11 ;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-(50000-RPWM))/256;
TL1=(65536-(50000-RPWM))%256;
RCAP2H=(65536-(50000-LPWM))/256;
RCAP2L=(65536-(50000-LPWM))%256;
TH2=RCAP2H;
TL2=RCAP2L;
EA=1;
ET0=1;
ET1=1;
ET2=1;
TR0=1; //打开T0计时器
TR1=0,TR2=0;
}
void main()
{
//LPWM=1000,RPWM=4000;
//LPWM=2000,RPWM=3000;
//LPWM=2500,RPWM=2500;
LPWM=3000,RPWM=2000;
//LPWM=4000,RPWM=1000;
init();
while(1);
}
void timer0() interrupt 1
{
i++;
TR1=0,TR2=0;
ENA=0,ENB=0;
TH0=(65536-50000)/256; //周期设为50ms
TL0=(65536-50000)%256;
TH1=(65536-(50000-RPWM))/256;
TL1=(65536-(50000-RPWM))%256;
TH2=(65536-(50000-LPWM))/256;
TL2=(65536-(50000-LPWM))%256;
TR1=1,TR2=1; //打开T0、T1计时器
}
void timer1() interrupt 3 //控制右电机
{
j++;
ENB=1;
TR1=0;
}
void timer2() interrupt 5 //控制左电机
{
TF2=0;
k++;
ENA=1;
TR2=0;
}
现在问题是定时器T1和T2里面的语句都没运算,然后ENA、ENB的值都是0,请问这是什么原因? |
|