#include<reg51.h> // 本程序是要輸出脈沖周期為20ms高電平1ms的脈沖用來控制舵機(jī),用兩個(gè)定時(shí)器,每次中斷時(shí)間都是0。1ms,中斷10次就是1ms。
sbit P1_0=P1^0; // 用兩個(gè)定時(shí)器,每次中斷時(shí)間都是0。1ms,中斷10次就是1ms。
int n,m,np=0,mp=0;
void init() //初始化設(shè)置
{
TMOD=0X22;
EA=1;
ET0=1;
ET1=1;
}
main()
{
init();
P1_0=0;
while(1)
{
n=10;m=200-10; // n m確定中斷的次數(shù)
TH0=156; //定時(shí)器方式2的初值設(shè)置晶振是12mhz,每0.1ms一個(gè)中斷TH0=256-100;
TL0=156;
TH1=156;
TH1=156;
P1_0=1;TR0=1;
while(np<n){P2=np;} //等待定時(shí)器1的中斷,中斷10次后就是1ms
TR0=0;P1_0=0;TR1=1;
while(mp<m){P3=mp;}
TR1=0;
}
}
void pwm0() interrupt 1
{
np++; P1_0=1; //np用來判別中斷了幾次,與n比較中斷10后就執(zhí)行下面程序
TH0=156;
TL0=156;
}
void pwm1() interrupt 3
{
mp++; P1_0=0;
TH1=156;
TL1=156;
}
求大神解答已經(jīng)困擾我很久了
|