给你一个渐亮渐暗开关灯的示例,相关变量和端口根据实际需要自行调整。
- #include <reg51.H>
- sbit OUT=P1^0;
- sbit key=P3^4;
- unsigned char num;
- unsigned char count;
- bit sign;
- void delay_10ms()//延时函数
- {
- int i,j;
- for(i=0;i<10;i++)
- for(j=0;j<120;j++);
- }
- void Timer0Init() //200微秒@12.000MHz
- {
- TMOD= 0x02; //设置定时器模式
- TL0 = 0x38; //设置定时初始值
- TH0 = 0x38; //设置定时重载值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //定时器0开始计时
- EA = 1;
- ET0 = 1;
- }
- void main(void)
- {
- Timer0Init();
- while(1)
- {
- if(!key)
- {
- delay_10ms();
- if(!key)
- {
- sign=~sign;
- while(!key);
- }
- }
- }
- }
- void Timer0Interrupt(void) interrupt 1
- {
- count++;
- if(count>=100)
- {
- count=0;
- if(sign)
- {
- if(num<100)num++;
- }
- else
- {
- if(num>0)num--;
- }
- }
- if(num>count)OUT=0;//暗
- else OUT=1;//亮
- }
复制代码 |