#include <REGX52.H>
sbit ENA=P1^0;
sbit ENB=P1^5;
sbit IN1=P0^1;
sbit IN2=P0^2;
sbit IN3=P0^3;
sbit IN4=P0^4;
unsigned int Duty_cycle_A,Duty_cycle_B£»
void advance() //ǰ½ø
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
void back() //ºóÍË
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
void right() //ÓÒת
{
IN1=0;
IN2=0;
IN3=0;
IN4=1;
}
void left() //×óת
{
IN1=1;
IN2=0;
IN3=0;
IN4=0;
}
void Timer0Init(void)
{
TMOD = 0x01; //???????
TL0 = (65536-10)/256; //???????
TH0 = (65536-10)%256; //???????
TR0 = 1; //???0????
ET0=1;
EA=1;
}
void Timer0_Routine() interrupt 1
{
unsigned int T0Count;
TR0=0;
TL0 = (65536-10)/256; //???????
TH0 = (65536-10)%256; //???????
TR0=1;
Duty_cycle_A=13;
Duty_cycle_B=100;
T0Count++;
if(T0Count<Duty_cycle_A)
{
ENA=1;
}
else
{
ENA=0;
}
if(T0Count<Duty_cycle_B)
{
ENB=1;
}
else
{
ENB=0;
}
if(T0Count>=100)
{
T0Count=0;
}
}
void main()
{
Timer0Init();
EA=1;
while(1)
{
advance();
}
}
提示哪里重复了?
顺便问一下 T0Count怎么不定义为static了?你这样每次进去中断不都重置了吗
这段代码可能是从其他地方copy出来的,好多个备注都显示乱码。
分析了下,主要问题是乱码导致的,第8行的末尾应该要有一个“;”,因为是乱码,所以没掉了,导致后面的编译误报错了,更正过来就OK了。