|
寫了個(gè)用51單片機(jī)串口發(fā)送字符控制舵機(jī)的程序,發(fā)送0左轉(zhuǎn)動(dòng)90°,發(fā)送1右轉(zhuǎn)動(dòng)90°。我想要改為發(fā)送0左轉(zhuǎn)動(dòng)90°,延時(shí)1s后歸位,同理發(fā)送1也一樣,請(qǐng)問怎么改?
下面的是兩段主要程序:
void Com_Int(void) interrupt 4
{
if(RI == 1) //當(dāng)硬件接收到一個(gè)數(shù)據(jù)時(shí),RI會(huì)置位
{
cmd = SBUF; //這里接收到的是16進(jìn)制
RI = 0;
SBUF = cmd;
}
switch(cmd)
{
case 0:
SG1_count = 25;
break;
case 1:
SG1_count = 5;
break;
default: break;
}
if (TI) //字節(jié)發(fā)送完畢
{
TI = 0; //手動(dòng)清零發(fā)送中斷標(biāo)志位
} //TI清零
}
/*********************************
函數(shù):Time0Int()
參數(shù):無
返回:無
說明:定時(shí)器0中斷函數(shù)。用于處理PWM的信號(hào)。
**********************************/
void Time0Int(void) interrupt 1 using 1
{
if(count <= SG1_count) //控制占空比左右
{
//如果count的計(jì)數(shù)小于(5-25)也就是0.5ms-2.5ms則這段小t周期持續(xù)高電平。產(chǎn)生方波
SG1_PWM = 1;
}
else
{
SG1_PWM = 0;
}
count++;
if (count >= 200) //T = 20ms則定時(shí)器計(jì)數(shù)變量清0
{
count = 0;
}
}
|
|