需要使用單片機控制舵機往東西兩個方向轉(zhuǎn)動,但是在使用中斷器進行50us/次中斷時出現(xiàn)了錯誤,將時間設定為一秒一次角度變更。燒錄程序后無反應。
- #include <STC15.H>
- #define uchar unsigned char
- #define uint unsigned int
- sbit _PWM = P4^1;
- sbit b=P0^4;
- sbit x=P0^5;
- sbit n=P0^6;
- sbit d=P0^7;
- uchar count,jd,sj;
- void Timer01Init(void);
- void DelayMS(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- void main()
- {
- P4M1=0x00;
- P0M0=0x00;
- P4M0=0x02;
- P0M1=0x00;
- Timer01Init();
- while(1)
- {
-
- if(jd==2)
- {
- ET0=0;
- d=0x00;
- DelayMS(400);
- d=0xff;
- ET0=1;
- }
- if(jd==4)
- {
- ET0=0;
- x=0x00;
- DelayMS(400);
- x=0xff;
- ET0=1;
- }
-
- }
- }
- void Timer01Init(void)
- {
- AUXR &= 0x7F;
- TMOD &=0xf0;
- TL0 =0xd2;
- TH0 =0xff;
- TF0=0;
- EA=1;
- ET0=1;
- TR0 = 1;
- }
- void TIME0() interrupt 1
- {
- TL0 =0xd2;
- TH0 =0xff;
- sj++;
- if(sj==2000)
- {
- jd++;
- count=0;
- }
- if(count < jd)
- {
- _PWM=1;
- }
- else
- _PWM=0;
- count++;
- count=count%40;
- if(jd==6)
- jd=0;
- }
復制代碼
|