|
- #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
2020-10-9 09:14 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
30.78 KB, 下載次數: 16, 下載積分: 黑幣 -5
|