|
- #include <reg52.h>
- typedef unsigned char u8;
- typedef unsigned int u16;
- sbit PWM_OUT=P0^0; //PWM输出口
- u16 PWM_Value; //定义pwm值
- u8 order=0;
- void Delay(unsigned int s); //延时函数声明
- u8 flag;
- //舵机按键标志
- void Delay(unsigned int s)
- {
- unsigned int i;
- for(i=0; i<s; i++);
- for(i=0; i<s; i++);
- }
-
- /*定时器初始化*/
- void Init_Timer0()
- {
- TMOD=0x11;
- TH1=(65536-1500)/256;
- TL1=(65536-1500)%256;
- EA = 1;
- ET1= 1;
- TR1 = 1;
- PT1=1;
- }
-
- /*主函数*/
- void main(void)
- {
-
- Delay(6000);
- PWM_Value =101;
- //pwm初值为1500
- Init_Timer0();
- while(1)
- {
- PWM_Value += 10;
- Delay(1000);
-
- //PWM_Value -= 1;
- //Delay(1000);
- }
- }
- /*****中断程序*******/
- void timer0(void) interrupt 3
- {
-
- if(PWM_Value>=2500) //如果pwm的值大于2500
- PWM_Value = 2500; //则保持在2500
- if(PWM_Value<=100) //如果pwm的值小于500
- PWM_Value=500; //则保持在500
- switch(order)
- {
- case 1:PWM_OUT=1;
- TH1=(65536-PWM_Value)>>8;
- TL1=(u8)(65536-PWM_Value);
- break;
- case 2:PWM_OUT=0;
- TH1=(65536-(5000-PWM_Value))>>8;
- TL1=(u8)(65536-(5000-PWM_Value));
- break;
- case 3:
- TH1=60536>>8;
- TL1=(u8)60536;
- break;
- case 4:
- TH1=60536>>8;
- TL1=(u8)60536;
- order=0;
- break;
- default: order=0;
- break;
- }
-
- order++;
- }
复制代码
|
-
-
舵机.zip
30.78 KB, 下载次数: 16, 下载积分: 黑币 -5
|