|
這程序我理想的是在藍(lán)牙APk上按一下按鍵,轉(zhuǎn)45度,但卻是轉(zhuǎn)的180度,無法控制。求幫忙
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit pwm=P3^7;
uchar count,flag1,flag2,tmp; //0.5ms次數(shù)標(biāo)識
uchar jd; //角度標(biāo)識 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次數(shù)是否小于角度標(biāo)識
pwm=1; //確實(shí)小于,PWM輸出高電平
else
pwm=0; //大于則輸出低電平
count=(count+1); //0.5ms次數(shù)加1
count=count%40; //次數(shù)始終保持為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;
}
|
|