采用单片机AT892051 。P1至P7口控制8个发光二极管,由三个开关K1,K2,K3开关控制灯 轮流亮 逐点亮 间隔亮 15

汇编语言编程... 汇编 语言 编程 展开
 我来答
zhuren106
2010-09-13
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
#define LED P1
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;

void delay(unsigned int t)//12M晶振延迟约1ms
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++);
}

void LED1(void)//轮流亮
{
unsigned char i,dat=0x01;
for(i=0;i<8;i++)
{
LED=dat;
dat<<=1;
delay(1000);
}
}
void LED2(void)//逐点亮
{
unsigned char i,dat=0x01;
for(i=0;i<8;i++)
{
LED=dat;
dat<<=1;
dat |=1;
delay(1000);
}
}
void LED3(void)//间隔亮
{
unsigned char i;
for(i=0;i<8;i++)
{
LED=0xff;
delay(1000);
LED=0x00;
delay(1000);
}
}
void mian()
{
while(1)
{
if(!K1)LED1();
else if(!K2)LED2();
else if(!K3)LED3();
}
}
最简单的实现方式,实际应用还需要进行很多的处理,比如按键的防抖动等。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fengyu16
2010-09-13 · TA获得超过175个赞
知道小有建树答主
回答量:105
采纳率:0%
帮助的人:141万
展开全部
应该是P1^0~P1.7吧,注意,P1^0,P1.1内接比较器,内部没有上拉电阻,(驱动二极管时,需要外接上拉),其他口都接了,直接驱动二极管没有问题,此单片机每个口都能有20mA的驱动电流;建议采用灌电流,就是二极管共阳极接法。2051晶振典型值为24MHz。
程序较简单,可参考楼上
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
减重斤97
2010-09-13
知道答主
回答量:18
采纳率:0%
帮助的人:17.8万
展开全部
1、把K1\K2\K3连接到P3.0~P3.2
2、分别定义:K1=轮流亮、K2=逐点亮、K3=间隔亮
3、编程定义定义每个键按下去的动作即可。
需要注意,P1口直接驱动LED,可能亮度不够。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lxx505
2010-09-13 · TA获得超过235个赞
知道答主
回答量:322
采纳率:0%
帮助的人:100万
展开全部
2楼编了,要感谢人家
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式