无法调光,刚刚了解PWM,不是太清楚原理。
代码如下:
/************定义声明区*****************/
#include "reg52.h"
void delay10ms(void);
sbit led=P1^0;
sbit key=P3^3;
unsigned int zk=20;
/***************主函数*************/
void main()
{
led=1;
EA=1;
/****定时器配置***/
TMOD=0x01;
TL0=0x9c;
TH0=0xff;
ET0=1;
TR0=1;
/***外部中断配置**/
IT1=0;
EX1=1;
/***死循环***/
while(1);
}
void timer() interrupt 1
{
if(led==0)
{
led=1;
TL0=(65536-zk)%256;
TH0=(65536-zk)/256;
}
else
{
led=0;
TL0=(65536-(100-zk))%256;
TH0=(65536-(100-zk))/256;
}
}
void zd() interrupt 2
{
delay10ms();
if(key==0)
{
zk=zk+20;
if(zk>100)
{
zk=20;
}
}
while(!key);
}
void delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=5;c>0;c--)
for(b=4;b>0;b--)
for(a=248;a>0;a--);
}
烧入单片机,上电,按下中断按键,灯的亮度没有变化