|
爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
程序是:上电默认LED为0灭,当key被按一下key,LED:0-100%亮保持,不管in外置开关是什么状态,在按一下key,LED:0-100%灭保持,不管in外置开关是什么状态;in外置拨动开关,默认为1高电平,LED为0灭,拨动开关in==0,LED:0-100%亮保持
现在按下key不松开,LED总会闪烁。是我程序那里写错拉吗,菜鸟才开始学习~往大神指点一二。
#include<stc15f104e.h>
sbit LED=P3^2;
sbit key=P3^5;
sbit in=P3^4;
//bit keybuf = 1;
//bit backup = 1;
unsigned char light;//占空比
unsigned char j=0;//步进
/* ÑÓʱº¯Êý */
void delay(unsigned char d)
{
unsigned char i;
while(--d!=0)
{
for(i=0;i<20;i++);
}
}
void delay130ms(void)
{
unsigned char a,b,c;
for(c=11;c>0;c--)
for(b=16;b>0;b--)
for(a=218;a>0;a--);
}
void pwm(unsigned char a)
{
LED=0;
delay(a);
a=~a;
LED=1;
delay(a);
a=~a;
}
void main()
{
unsigned char keystatus = 1,flag=0;
delay130ms();
LED=0;//ϨÃðled
while(1)
{
if(!key) //key check
{
if(!key) //key check
{
if(key==0) //key check
{
keystatus=!keystatus;
flag=1;
}
}
}
if(flag)//Æô¶¯ÏÔʾ
{
light+=j;
if(keystatus)
{
j=1;
if(light==0xfe)
flag=0;
pwm(light);
LED=0;
}
else{
j=0xff;
if(light==1)
flag=0;
pwm(light);
LED=1;
}
}
//pwm(light); //OUT PWM
if(keystatus) //单片机没有被电亮
{
if(in==0)
{
if(in==0)
{
keystatus=0;
flag=1;
}
}
}
}
}
|
|