//å¦ææ¯ç¨51åçæº
//头æ件
#include<reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef long unsigned int uint32;
uint16 time0;
uint16 PULSE_WIDTH = 0x300; //èå²å®½
uint8 DUTY_CYCLE = PULSE_WIDTH*(1/5);//å 空æ¯
///////////////////////////////////////////////延æ¶åç¨åº
void delay(uint8 ms)
{
uint8 i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
///////////////////////////////////////////å®æ¶å¨0ï¼æ§å¶ä½çµå¹³
void Timer0() interrupt 1
{
TR1 = 0; //å
³éå®æ¶å¨1
time0 = 0xFFFF - PULSE_WIDTH; //å®æ¶å¨0åå§å¼
TL0 = (uint8)time0;
TH0 = time0 >> 8;
TH1 = DUTY_CYCLE;
TR1 = 1;
P0 = 0x00; //æå¼å®æ¶å¨1
}
//////////////////////////////////////////////å®æ¶å¨1.æ§å¶é«çµå¹³
void Timer1() interrupt 3
{
TR1 = 0; //å
³éå®æ¶å¨1
P0 = 0xFF;
}
//////////////////////////////////主å½æ°
int main(void)
{
TMOD = 0x21; //å®æ¶å¨1:å·¥ä½æ¹å¼1,å®æ¶å¨0:å·¥ä½æ¹å¼2
time0 = 0xFFFF - PULSE_WIDTH; //å®æ¶å¨0åå§å¼
TL0 = (uint8)time0;
TH0 = time0 >> 8;
TL1 = DUTY_CYCLE;
TH1 = DUTY_CYCLE;
EA = 1; //å
许å
¨å±ä¸æ
ET0 = 1; //å
许å®æ¶å¨0ä¸æ
ET1 = 1; //å
许å®æ¶å¨1ä¸æ
TR0 = 1;
////////////////// //主循ç¯
while(1)
{
do{
if(DUTY_CYCLE != PULSE_WIDTH*(1/4))
{
DUTY_CYCLE++;
delay(5);
}
else break;
}while(1);
do{
if(DUTY_CYCLE != 0x01)
{
DUTY_CYCLE--;
delay(5);
}
else break;
}while(1);
}
}
温馨提示:答案为网友推荐,仅供参考