|
#include <reg52.h> //頭文件
unsigned int scale;//占空比控制變量
sbit out1=P3^3;
sbit key1=P3^5;
sbit key2=P3^4;
unsigned int n=50,key2f=0;//延時循環(huán)變量
unsigned int kf0=1;//按鍵用的標(biāo)志位
unsigned int kt0=0;//按鍵用的標(biāo)志位
unsigned int num=0;
void main(void){
TMOD=0x02;//定時器0,工作模式2(0000,0010),8位定時模式
TL0 = 0xF6; //設(shè)置定時初值 10微妙
TH0 = 0xF6; //設(shè)置定時重載值
TR0=1;//啟動定時器
ET0=1;//允許定時器0中斷
EA=1;//允許總中斷
while(1){
if(key2==0){
num=0;
scale=50;
}
if(key1==0){//當(dāng)按鍵1按下
if(kf0){//當(dāng)標(biāo)志位kf0=1的時候進行
kf0=0;//標(biāo)志位kf0=0
kt0=1;//標(biāo)志位kt0=0
num++;
}
}else{//當(dāng)按鍵松開
if(kt0){//當(dāng)標(biāo)志位kt0=1的時候進行
kf0=1;//標(biāo)志位kf0=1
kt0=0;//標(biāo)志位kt0=0
}
}//按鍵1結(jié)束
scale=num+50;
}
}
void timer0() interrupt 1{//定時器0 0中斷服務(wù)程序
static unsigned int tt;//tt用來保存當(dāng)前時間在一秒中的比例位置
tt++;//每10微妙增加1
if(tt==300){//2.5毫秒的時鐘周期
tt=0;//使tt=0,開始新的PWM周期
out1=0;
}
if(scale==tt){//按照當(dāng)前占空比鐵環(huán)輸出為高電平
out1=1;
}
}
|
評分
-
查看全部評分
|