89 lines
1.5 KiB
C
89 lines
1.5 KiB
C
#include "REG51.h"
|
|
#include "INTRINS.h"
|
|
|
|
sbit K1 =P1^4 ; //增加键
|
|
sbit K2 =P1^5 ; //减少键
|
|
sbit P00 =P0^1;
|
|
unsigned char PWM=0xe7; //赋初值
|
|
|
|
|
|
void delayms(unsigned char ms);
|
|
void delay(unsigned char t);
|
|
|
|
/*********************************************************/
|
|
void main()
|
|
{
|
|
|
|
P1=0xff;
|
|
TMOD=0x21 ;
|
|
TH0=0xff ; //50us延时常数
|
|
TL0=0xce ; //频率调节
|
|
|
|
TH1=PWM ; //脉宽调节
|
|
TL1=0 ;
|
|
|
|
EA=1;
|
|
ET0=1;
|
|
ET1=1;
|
|
|
|
TR0=1 ;
|
|
|
|
while(1)
|
|
{
|
|
do{
|
|
if(PWM!=0xff)
|
|
{PWM++ ;delayms(10);}
|
|
else Beep() ;
|
|
}
|
|
while(K1==0);
|
|
|
|
do{
|
|
if(PWM!=0xce)
|
|
{PWM-- ;delayms(10);}
|
|
else Beep() ;
|
|
}
|
|
while(K2==0);
|
|
}
|
|
}
|
|
|
|
void timer0() interrupt 1
|
|
{
|
|
TR1=0 ;
|
|
TH0=0xff ;
|
|
TL0=0xce ;
|
|
TH1=PWM ;
|
|
TR1=1 ;
|
|
P00=0 ; //启动输出
|
|
}
|
|
|
|
|
|
void timer1() interrupt 3
|
|
{
|
|
TR1=0 ;
|
|
P00=1 ; //结束输出
|
|
}
|
|
|
|
|
|
/*********************************************************/
|
|
// 延时子程序
|
|
/*********************************************************/
|
|
void delay(unsigned char t)
|
|
{
|
|
while(t--) ;
|
|
}
|
|
|
|
/*********************************************************/
|
|
// 延时子程序
|
|
/*********************************************************/
|
|
void delayms(unsigned char ms)
|
|
|
|
{
|
|
unsigned char i ;
|
|
while(ms--)
|
|
{
|
|
for(i = 0 ; i < 120 ; i++) ;
|
|
}
|
|
}
|
|
|
|
/*********************************************************/
|