#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16; //對數據類型進行聲明定義 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;//選擇為定時器1模式,工作方式1,僅用TR1打開啟動。
TH1 = 0xFF; TL1 = 0xff; //1us
ET1=1;//打開定時器1中斷允許 EA=1;//打開總中斷 TR1=1;//打開定時器 }
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(); //定時器1初始化 while(1) { if(k3==0) { delayms(10); if(k3==1) a++; if(a>1) a=0; } switch(a) { case(0): tiaoguang() ;break;//恢復亮度 case(1): led=0 ;break;//熄滅LED
} } }
void Time1(void) interrupt 3 //3 為定時器1的中斷號 1 定時器0的中斷號 0 外部中斷1 2 外部中斷2 4 串口中斷 { TH1 = 0xFF; TL1 = 0xff; //1us timer1++; count++;
} 程序運行的時候不能關燈,用實驗板進行實驗的,調光正常,但就是不能關燈,不明白哪里錯了,像大神們請教下
|