#include <reg52.h>
#include < intrins.h>
sbit PWM = P1^0;
unsigned char cnt=0;
unsigned char jd=0;
//定时器的初始化包括TCON寄存器中的TR0位、
void T0_init(){
//tcon
TR0=1;
//tmod
TMOD &= 0XF0;
TMOD |= 0X01;
//TMOD=0x01;
//tl0,th0
TL0 = 0x33; //设置定时初值 定时10ms
TH0 = 0xFE; //设置定时初值
}
void IT_init(){
//T0中断允许
ET0=1;
//总中断
EA=1;
}
void Delay100ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 5;
j = 52;
k = 195;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main(){
Delay100ms();
PWM=1;
T0_init();
IT_init();
while(1){
//让舵机从零度转到九十度再转到零度
//零度转到四十五度
jd = 3;
//cnt=0;
Delay100ms();
//四十五度转到零度
jd = 1;
// cnt=0;
Delay100ms();
};
}
void PWM_SHOW() interrupt 1{//每一种类型都对应了不同的中断号,根据芯片数据手册来编写
TL0 = 0x33; //设置定时初值
TH0 = 0xFE; //设置定时初值
if(cnt<jd){//PWM引脚输出高电平,改变这个值就能改变占空比
PWM=1;
cnt++;
}
else{ PWM引脚输出低电平
PWM=0;
cnt++;
}
if(cnt==40){
cnt=0;
}
}