对昨天的秒表进行了复习对其更加深层次的了解
同时对pwm进行了浅层次的了解可以使小灯闪烁四个亮度
#include<reg52.h>
sbit led=P2^0;
unsigned char HighRH=0;
unsigned char HighRL=0;
unsigned char LowRH=0;
unsigned char LowRL=0;
void ConfigPWM(unsigned int fr,unsigned char dc);
void ClosePWM ();
void main()
{
unsigned int i;
EA=1;
while(1)
{
ConfigPWM(100,10);
for(i=0;i<40000;i++);
ClosePWM();
ConfigPWM(100,40);
for(i=0;i<40000;i++);
ClosePWM();
ConfigPWM(100,90);
for(i=0;i<40000;i++);
ClosePWM();
for(i=0;i<40000;i++);
}
}
void ConfigPWM(unsigned int fr,unsigned char dc)
{
unsigned int high,low;
unsigned long tmp;
tmp=(11059200/12)/fr;
high=(tmp*dc)/100;
low=tmp-high;
high=65536-high+12;
low=65536-low+12;
HighRH=(unsigned char)(high>>8);
HighRL=(unsigned char)high;
LowRH=(unsigned char )(low>>8);
LowRL=(unsigned char)low;
TMOD=TMOD&0xF0;
TMOD=TMOD|0x01;
TH0=HighRH;
TL0=HighRL;
TR0=1;
ET0=1;
led=0;
}
void ClosePWM ()
{
TR0=0;
ET0=0;
led=0;
}
void Interrupt()interrupt 1
{
if(led==0)
{
TH0=LowRH;
TL0=LowRL;
led=1;
}
else
{
TH0=HighRH;
TL0=HighRL;
led=0;
}
}
|