请问我这个舵机控制程序哪里有问题呢~~~~(>_<)~~~~
时间:10-02
整理:3721RD
点击:
舵机基本没什么反应
Moto=0 后面加个count++;
把 count=count%40;移到中断函数最后
- #include<reg52.h>
- sbit Moto=P2^2;
- sbit Key1=P3^3;
- sbit Key2=P3^2;
- void Init_Timer();
- void KeyScan();
- void delay(unsigned int x);
- unsigned char flag=1,count=0;
- void main()
- {
- EA=1;
- Init_Timer();
- TR0=1; //开启定时器0
- while(1)
- {
- KeyScan();
- }
-
- }
- void Init_Timer()
- {
- TMOD=0x01; //定时器工作方式1
- TH0=0xfe; //装初值 500us
- TL0=0x0c;
- TR0 = 0; //关闭定时器0
- ET0 = 1; //打开定时器0中断
- }
- void KeyScan()
- {
- if((Key1==0) && (flag<5))
- {
- delay(1000); //按键消抖
- count=0; //按下按键新的周期开始
- flag++;
- }
- if((Key2==0) && (flag>1))
- {
- delay(1000); //按键消抖
- count=0; //按下按键新的周期开始
- flag--;
- }
-
- }
- void Timer0() interrupt 1
- {
-
- TH0=0xfe; //装初值 500us
- TL0=0x0c;
- count=count%40;
- if(count<flag) //中断高电平次数是否小于角度标识
- Moto=1,count++;
- else Moto=0;
-
- }
- void delay(unsigned int x)
- {
- unsigned int i, j;
- for(i = x; i > 0; i--)
- for(j = 110; j > 0; j--)
- ;
- }
发现问题,此贴终结
问题出在哪了?求解释下。
- if(count<flag) //中断高电平次数是否小于角度标识
- Moto=1,count++;
- else Moto=0
Moto=0 后面加个count++;
把 count=count%40;移到中断函数最后
将TL0改为0x33试试