|
/********************************************************************
*********************************************************************/
#include<reg52.h>
#define uchar unsigned char //宏定義無符號字符型
#define uint unsigned int //宏定義無符號整型
uchar b; //中斷值
uchar N=0; //占空比計數(shù)值
uchar X=50; //占空比初始值百分比
uchar z=0;
uchar key_up;
uchar key_down;
/************************************************************************
按鍵初始化
*************************************************************************/
sbit P2_0=P2^0;//占空比加
sbit P2_1=P2^1;//占空比減
sbit PWM=P3^7;//控制PWM的占空比輸出
/************************************************************************
調(diào)速按鍵掃描函數(shù)
*************************************************************************/
void get_key(void)//按鍵掃描函數(shù)
{
while(P2_0==0)//按鍵加計數(shù)標(biāo)志
{key_up=1;
}
while(P2_1==0)//按鍵減計數(shù)標(biāo)志
{key_down=1;
}
}
/************************************************************************
定時器中斷執(zhí)行函數(shù)
*************************************************************************/
void timer0( ) interrupt 1 //定時器0工作方式1
{
TH0=(65536-1)/256; //重裝計數(shù)初值
TL0=(65536-1)%256; //重裝計數(shù)初值
b++;
get_key();
if (key_up==1)
{
if(X!=100)//判斷是否計數(shù)到100
{
X++;//加一
key_up=0;
}
}
if (key_down==1)
{
if(X!=0)//判斷是否計數(shù)到0
{
X--;//減一
key_down=0;
}
}
}
/************************************************************************
程序主函數(shù)
*************************************************************************/
void main()
{
TMOD=0X01; //定時器中斷0
TH0=(65536-2)/256; //定時時間高八位初值
TL0=(65536-2)%256; //定時時間低八位初值
EA=1; //開CPU中斷
ET0=1; //開T/C0中斷
TR0=1;
/****************************PWM處理部分*********************************************/
while(1)
{
PWM=1;
while(1)
{
b=0;
while(!b);
if (N==X)
PWM=0;
if(N==100)break;
N++;
/*************************************************************************************/
}
N=0;
}
}
/******************************程序結(jié)束************************************************/
|
|