说明:不使用PWM口,而是使用数字口和时延函数模拟,从而实现普通IO口对LED灯的亮度控制。
设备:
LED灯
这个案例用于解释常见的一种设计思想:软解码和硬解码。
软解码:需要使用CPU实现;
硬解码:需要定时器等硬件支持。
程序:
循环演示
代码语言:javascript复制#include <8052.h>
#define LSA P1_5
#define LSB P1_6
#define LSC P1_7
#define Led P0
int main(void)
{
unsigned int a;
LSA = 0;
LSB = 0;
LSC = 0;
while(1)
{
Led = 0x00;
//a = 50000;
//a = 9;
//a = 1; //1000
a=100;
while(a--);
Led = 0xff;
//a = 50000;
//a = 1;
//a = 9;
a=900;
while(a--);
}
}
外部控制
代码语言:javascript复制#include<8052.h>
#define LSA P1_5
#define LSB P1_6
#define LSC P1_7
#define Led P0
char brightness=0,a=0;
void EXint_Init(void);
void Delayms(unsigned int);
void EXINT0() __interrupt 0;
void main()
{
EXint_Init();
LSA=0;
LSB=0;
LSC=0;
while(1)
{
Led = 0x00;
a=brightness;
while(a--);
Led = 0xff;
a=255;
while(a--);
}
}
void EXint_Init()
{
IT0=1;
IT1=0;
// IPH=0x40;
PX1=1;
EA=1;
EX0=1;
EX1=1;
}
void Delayms(unsigned int xms)
{
unsigned int i,j;
for(i = xms;i > 0;i--)
{
for (j = 110;j > 0;j--);
}
}
void EXINT0() __interrupt 0
{
brightness ;
}