需要使用单片机控制舵机往东西两个方向转动,但是在使用中断器进行50us/次中断时出现了错误,将时间设定为一秒一次角度变更。烧录程序后无反应。
- #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;
- }
复制代码
|