单片机编程:当按下按键K1时,LED亮1个灯;当按下K2时,LED亮2个灯;K3亮3个灯;K4亮4个灯。求程序,在线

 我来答
sagitattoo
2011-04-18 · TA获得超过261个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:134万
展开全部
LOOP:
JNB K1,CASE1
JNB K2,CASE2
JNB K3,CASE3
JNB K4,CASE4
AJMP LOOP
CASE1:
MOV LED,#01111111
AJMP LOOP
CASE2:
MOV LED,#00111111
AJMP LOOP
CASE3:
MOV LED,#00011111
AJMP LOOP
CASE4:
MOV LED,#00001111
AJMP LOOP

K1~K4对应按键输入口,LED对应LED输出,两者应为普通IO口
zhatianyi
2011-04-18 · TA获得超过323个赞
知道小有建树答主
回答量:99
采纳率:0%
帮助的人:109万
展开全部
/************************************************************************
程序名: 四个按键控制四个LED
编写人: zhatianyi
编写时间: 2011 年 4月 18日
硬件支持: 51单片机,12MHZ晶振
接口说明: 见接口定义(可自己修改)
修改日志:
NO.1-
/*************************************************************************
说明:当按下按键K1时,LED亮1个灯;当按下K2时,LED
亮2个灯;K3亮3个灯;K4亮4个灯。每次灯亮1秒后熄灭,等
待第二次按键(灯亮时按键无效)。
/*************************************************************************/
#include <REG51.h> //通用89C51头文件

sbit K1 = P1^0 ; //定义按键接口
sbit K2 = P1^1 ;
sbit K3 = P1^2 ;
sbit K4 = P1^3 ;
sbit LED1 = P1^4 ; //定义LED灯接口
sbit LED2 = P1^5 ;
sbit LED3 = P1^6 ;
sbit LED4 = P1^7 ;

/**************************************************************************
函数名:毫秒级CPU延时函数
调 用:DELAY_MS (?);
参 数:1~65535(参数不可为0)
返回值:无
结 果:占用CPU方式延时与参数数值相同的毫秒时间
备 注:应用于1T单片机时i<600,应用于12T单片机时i<125
/*************************************************************************/
void DELAY_MS (unsigned int a){
unsigned int i;
while( --a != 0){
for(i = 0; i < 600; i++);
}
}
/**************************************************************************/

/***************************************************************************
函数名:主函数
调 用:无
参 数:无
返回值:无
结 果:程序开始处,无限循环
备 注:
/***************************************************************************/
void main (void){
K1 = 1; //初始化按键
K2 = 1;
K3 = 1;
K4 = 1;
while(1){ //无限循环程序
LED1 = 1; //初始化LED
LED2 = 1;
LED3 = 1;
LED4 = 1;
if(K1 == 0){ //如果K1按下
LED1 = 0; //亮一盏灯
DELAY_MS(250); //亮一秒钟(当前灯未熄灭时按键无效)
}
if(K2 == 0){ //如果K2按下
LED1 = 0; //亮两盏灯
LED2 = 0;
DELAY_MS(250); //亮一秒钟
}
if(K3 == 0){ //如果K3按下
LED1 = 0; //亮三盏灯
LED2 = 0;
LED3 = 0;
DELAY_MS(250); //亮一秒
}
if(K4 == 0){ //如果K4按下
LED1 = 0; //亮四盏灯
LED2 = 0;
LED3 = 0;
LED4 = 0;
DELAY_MS(250);//亮一秒
}
}//while括号
}//主函数括号
/**********************************************************************************************/
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式