这程序我理想的是在蓝牙APk上按一下按键,转45度,但却是转的180度,无法控制。求帮忙
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit pwm=P3^7;
uchar count,flag1,flag2,tmp; //0.5ms次数标识
uchar jd; //角度标识 1,2,3,4,5
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
TMOD= 0x21;
TH1 = 0xfd;
TL1 = 0xfd;
TH0= 0xfe; //0.5ms
TL0=0x33;
ET0=1;
TR0=1;
TR1= 1;
REN= 1;
SM0= 0;
SM1= 1;
ES= 1; //串口中断允许位
EA=1;
}
void dj_up()
{
delay(10);
jd++;
count=0;
if(jd==6)
jd=5;
}
void dj_down()
{
delay(10);
jd--;
count=0;
if(jd==0)
jd=1;
}
void time0() interrupt 1
{
TH0 = 0xfe;
TL0 = 0x33;
if(count<jd) //判断0.5ms次数是否小于角度标识
pwm=1; //确实小于,PWM输出高电平
else
pwm=0; //大于则输出低电平
count=(count+1); //0.5ms次数加1
count=count%40; //次数始终保持为40 即保持周期为20ms
}
void main()
{
jd=1;
count=0;
init();
while(1)
{
switch(tmp)
{
case 0x05:dj_up(); break;
case 0x08: dj_down(); break;
}
}
}
void Com_Int() interrupt 4
{
RI=0;
tmp=SBUF;
}
|