永发信息网

用单片机的不同按键,来控制控制小灯的开启时间,不过程序运行时,单机按键后小灯常亮,往给看看解,谢谢

答案:2  悬赏:0  手机版
解决时间 2021-02-14 07:34
用单片机的不同按键,来控制控制小灯的开启时间,不过程序运行时,单机按键后小灯常亮,往给看看解,谢谢#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;
}
//****按键尾****
}
}
}
最佳答案
修改如下:
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;
}
//****按键尾**** 
}
}
}
全部回答
用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 代表灯灭 }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么啊?想买房子害怕给家人有负担,可是你
食寨好饭庄这个地址在什么地方,我要处理点事
卿字怎么解释
深圳市楼村派出所在什么地方啊,我要过去处理
我的名字叫陶梦林,我想用我自己的名字做网名
已知:如图,将矩形ABCD四个角向内折起,恰好拼
电脑主机有多长多高
使|x-5|+|x+2|值最小的所有符号条件的整数x有
鑫金涛国际锗石汗蒸养生馆(新大陆店)地址在哪
in88东门地址有知道的么?有点事想过去
qq炫舞200级到400级一共需要多少经验
社会工作者小刘刚到社区服务中心工作,发现该
砚瓦山地址在什么地方,想过去办事
蜜饯映画地址好找么,我有些事要过去,
电视剧征服最后怎么了?
推荐资讯
途观方向盘下面储物盒放行车证可以吗
想在淘宝买个小米5尊享版 手机价格是2399 想
去香港买什么好呢
【2015年世博会】...列材料.回答问题材料:意
河北省农村信用社24小时自助银行(彭李线)地址
中国体育彩票(呼图壁镇乌伊西路23号中国体育
唐诗宋词元曲汉明清小说是五种什么
有什么赞美雕刻的诗句?
崇义服务区停车场地址好找么,我有些事要过去
穿紧身牛仔裤,裤脚长一些好还是正好合适好
lol道聚城限时折扣多长时间更新一次,我怎么
东尼亚贸易有限公司我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?