用单片机的不同按键,来控制控制小灯的开启时间,不过程序运行时,单机按键后小灯常亮,往给看看解,谢谢
解决时间 2021-02-14 07:34
- 提问者网友:我们很暧昧
- 2021-02-13 23:18
用单片机的不同按键,来控制控制小灯的开启时间,不过程序运行时,单机按键后小灯常亮,往给看看解,谢谢#include
sbit K1 = P0^0;
sbit K2 = P0^1;
sbit K3 = P0^2;
sbit K4 = P0^3;
sbit K5 = P0^4;
sbit K6 = P0^5;
sbit K7 = P0^6;
sbit K8 = P0^7;
sbit K9 = P2^7;
sbit LED1 = P1^0;
//sbit LED2 = P1^1;
//sbit LED3 = P1^2;
//sbit LED4 = P1^3;
//sbit LED5 = P1^4;
//sbit LED6 = P1^5;
//sbit LED7 = P1^6;
sbit LED8 = P1^7;
void main()
{
unsigned char s=0;
unsigned char h=0;
TMOD=0x01;
TH0=0xdc; //定义定时器 最高为10毫秒一个周期
TL0=0x00; //最低为0
TR0=1; // 开启定时器
while(1)
{
if(TF0==1)
{
TF0=0;
TH0=0xdc;
TL0=0x00;
h++;
s++;
if(h>50)
{
h=0;
LED8=~LED8;
}
//****按键开头****
if(K1==0)
{
s=0;
LED1=0;
if(s>=7)LED1=1;
}
if(K2==0)
{
s=0;
LED1=0;
if(s==14)LED1=1;
}
if(K3==0)
{
s=0;
LED1=0;
if(s==21)LED1=1;
}
if(K4==0)
{
s=0;
LED1=0;
if(s==28)LED1=1;
}
if(K5==0)
{
s=0;
LED1=0;
if(s==35)LED1=1;
}
if(K6==0)
{
s=0;
LED1=0;
if(s==42)LED1=1;
}
if(K7==0)
{
s=0;
LED1=0;
if(s==49)LED1=1;
}
if(K8==0)
{
s=0;
LED1=0;
if(s==56)LED1=1;
}
if(K9==0)
{
s=0;
LED1=0;
if(s==63)LED1=1;
}
//****按键尾****
}
}
}
最佳答案
- 五星知识达人网友:往事隔山水
- 2021-02-13 23:49
修改如下:
void t0isr() interrupt 1
{
TH0=0xdc;
TL0=0x00;
h++;
s++;
if(s>250)s=250;
if(h>50)
{
h=0;
LED8=~LED8;
}
}
void main()
{
unsigned char s=0;
unsigned char h=0;
TMOD=0x01;
TH0=0xdc; //定义定时器 最高为10毫秒一个周期
TL0=0x00; //最低为0
TR0=1; // 开启定时器
ET0=1
EA=1;
while(1)
{
//****按键开头****
if(K1==0)
{
s=0;
LED1=0;
if(s>=7)LED1=1;
}
if(K2==0)
{
s=0;
LED1=0;
if(s>=14)LED1=1;
}
if(K3==0)
{
s=0;
LED1=0;
if(s>=21)LED1=1;
}
if(K4==0)
{
s=0;
LED1=0;
if(s>=28)LED1=1;
}
if(K5==0)
{
s=0;
LED1=0;
if(s>=35)LED1=1;
}
if(K6==0)
{
s=0;
LED1=0;
if(s>=42)LED1=1;
}
if(K7==0)
{
s=0;
LED1=0;
if(s>=49)LED1=1;
}
if(K8==0)
{
s=0;
LED1=0;
if(s>=56)LED1=1;
}
if(K9==0)
{
s=0;
LED1=0;
if(s>=63)LED1=1;
}
//****按键尾****
}
}
}
全部回答
- 1楼网友:胯下狙击手
- 2021-02-14 00:52
用c给你编一下
#include<reg52.h>//89s52单片机头文件
#define k1 = p0^0 ; //用宏定义定义按键1
#define k2 = p0^1 ; //用宏定义定义按键2
#define led = p3^7 ; //用宏定义定义小灯
void led_shuanshuo (char a );
void main (void)
{
char a ;
while(1)
{
if(k1) a = 5; //此处的值可以从0 - 255 次之间闪烁
if(k2) a = 10 ;//此处的值可以从0 - 255 次之间闪烁
led_shuanshuo (a );
}
}
void led_shuanshuo (char a )
{
char b;
for(b = 0 ; b < a * 2 ; b ++)
{
led ^= 1 ;
}
led = 1 ; //1 代表灯亮 0 代表灯灭
}
我要举报
大家都在看
推荐资讯