| 
 | 
 
#include <reg52.h>             //头文件 
#define uchar unsigned char           //宏定义无符号字符型 
#define uint  unsigned  int           //宏定义无符号整型 
 
uint b;                //中断值 
uint N=0;                //占空比计数值 
uint X=8;                //初始角度值  (取值范2~15) 
 
 
uchar key_up; 
uchar key_down; 
 /*************************************************************************/ 
sbit P2_2=P2^2;//角度加 
sbit P2_3=P2^3;//角度减 
sbit PWM=P1^0;//PWM输出          (舵机控制端) 
 /*************************************************************************/ 
void get_key(void)//按键扫描函数 
 
{ 
while(P2_2==0)//按键加计数标志 
{key_up=1; 
} 
while(P2_3==0)//按键减计数标志 
{key_down=1; 
} 
} 
 /*************************************************************************/ 
void timer0( ) interrupt 1 //定时器0工作方式1 
{ 
 TH0=0xff;          //重装计数初值 
 TL0=0x38;          //重装计数初值 
 b++; 
 get_key(); 
 if (key_up==1) 
       { 
           if(X!=15)//判断是否计数到9999 
              { 
               X=X+1;//加一 
               key_up=0; 
                           } 
        } 
if (key_down==1) 
       { 
            if(X!=2)//判断是否计数到0 
              { 
                   X=X-1;//减一 
               key_down=0; 
               } 
        } 
} 
/*************************************************************************/ 
void main() 
{  
TMOD=0X01;          //定时器中断0 
TH0=0xff;          //重装计数初值 
TL0=0x38;          //重装计数初值 
EA=1;                                  //开CPU中断 
ET0=1;                                  //开T/C0中断 
TR0=1; 
 while(1)                           //无限循环 
        { 
 PWM=1;                   //输出PWM正 
 while(1) 
 { 
 b=0; 
 while(!b); 
 if (N==X) 
 PWM=0; 
 if (N==100)break; 
 N++; 
 
          } 
            N=0; 
          } 
}                                                                                                /***************************************结束**********************************/ 
 
 
 |   
 
 
 
 |