C语言编程单片机

如下图... 如下图 展开
 我来答
沙里波特
2020-09-03 · TA获得超过5251个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:644万
展开全部

题主采纳的答案,是错误的。

正确程序如下:

本程序已经通过了测试。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
半残的青春
2019-09-23 · 超过10用户采纳过TA的回答
知道答主
回答量:43
采纳率:50%
帮助的人:7.6万
展开全部
/*******************************************************************************
*
* 普中科技
--------------------------------------------------------------------------------
* 实 验 名 : 按键选择LED灯左右移动实验
* 实验说明 : 按键选择LED灯左右移动
* 连接方式 : 见接线图
* 注 意 :
*******************************************************************************/
//--包含你要使用的头文件--//
#include <reg51.h> //此文件中定义了51的一些特殊功能寄存器
#include <intrins.h>
//--定义要使用的IO口--//
sbit K1 = P1^0; //对应按钮K1
sbit K2 = P1^1; //对应按钮K2
sbit L1=P2^4;
sbit L2=P2^5;
sbit L3=P2^6;
sbit L4=P2^7;
//--定义全局函数--//
void Delay10ms(unsigned int c); //延时10ms
unsigned char Key_Scan1();
unsigned char Key_Scan2();
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
unsigned char keyNum1,keyNum2;

while (1)
{
keyNum1= Key_Scan1(); //扫描键盘
keyNum2= Key_Scan2();
if (keyNum1 == 0,keyNum2==0) //如果键值返回1
{
L1=1;
}

if (keyNum1 == 0,keyNum2==1) //如果键值返回1
{
L2=1;
}
if (keyNum1 == 1,keyNum2==0) //如果键值返回1
{
L3=1;
}
if (keyNum1 == 1,keyNum2==1) //如果键值返回1
{
L4=1;
}
}
}
/*******************************************************************************
* 函 数 名 : Key_Scan()
* 函数功能 : 扫描键盘
* 输 入 : 无
* 输 出 : 读取到的键值
*******************************************************************************/
unsigned char Key_Scan1()
{
unsigned char key1= 0, i; //保存键值
//--检测按键1--//
if (K1==0) //检测按键K1是否按下
{
Delay10ms(1); //消除抖动
if (K1==0) //再次检测按键是否按下
{
key1 = 1;
i = 0;
while ((i<50) && (K1==0)) //检测按键是否松开
{
Delay10ms(1);
i++;
}
}
}
return key1;
}
unsigned char Key_Scan2()
{ //--检测按键2--//
unsigned char key2= 0,O;
if (K2==0) //检测按键K1是否按下
{
Delay10ms(1); //消除抖动
if (K2==0) //再次检测按键是否按下
{
key2 =1;
O = 0;
while ((0<50) && (K2==0)) //检测按键是否松开
{
Delay10ms(1);
O++;
}
}
}
return key2; //将读取到键值的值返回
}
/*******************************************************************************
* 函 数 名 : Delay10ms
* 函数功能 : 延时函数,延时10ms
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a, b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}

}
}
你看下行不行 我没板子没实验
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式