#include "reg52.h" //此文件中定義了單片機(jī)的一些特殊功能寄存器
typedef unsigned int u16; //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義 typedef unsigned char u8;
sbit k1=P1^0; sbit k2=P1^1; sbit led=P0^0; sbit k3=P1^2; u16 count,value,timer1;
void delayms(u16 ms) { int i,j; for(i=ms;i>0;i--) for(j=110;j>0;j--); } void Timer1Init() { TMOD|=0X10;//選擇為定時(shí)器1模式,工作方式1,僅用TR1打開啟動(dòng)。
TH1 = 0xFF; TL1 = 0xff; //1us
ET1=1;//打開定時(shí)器1中斷允許 EA=1;//打開總中斷 TR1=1;//打開定時(shí)器 }
void tiaoguang() { if(count>100) { count=0; if(k1==0) //DIR控制增加 { value++; } if(k2==0) { value--; }
}
if(value>=990) { value=990; } if(value<=10) { value=10; }
if(timer1>1000) //PWM周期為1000*1us { timer1=0; }
if(timer1 <value) { led=1; } else { led=0; } }
void main() { u8 a; Timer1Init(); //定時(shí)器1初始化 while(1) { if(k3==0) { delayms(10); if(k3==1) a++; if(a>1) a=0; } switch(a) { case(0): tiaoguang() ;break;//恢復(fù)亮度 case(1): led=0 ;break;//熄滅LED
} } }
void Time1(void) interrupt 3 //3 為定時(shí)器1的中斷號(hào) 1 定時(shí)器0的中斷號(hào) 0 外部中斷1 2 外部中斷2 4 串口中斷 { TH1 = 0xFF; TL1 = 0xff; //1us timer1++; count++;
} 程序運(yùn)行的時(shí)候不能關(guān)燈,用實(shí)驗(yàn)板進(jìn)行實(shí)驗(yàn)的,調(diào)光正常,但就是不能關(guān)燈,不明白哪里錯(cuò)了,像大神們請(qǐng)教下
|