求:8051单片机P1口接八盏LED灯,要把它们不规则点亮。采用中断,当按下开关K1时,这些灯变为从上到下移动

求:8051单片机P1口接八盏LED灯,要把它们不规则点亮。采用中断,当按下开关K1时,这些灯变为从上到下移动,间隔时间是0.5秒;当按下开关K2时,这些灯变为从下到上逐盏点亮,间隔时间是1秒。K1的优先权比K2高。

k1与k2都是采用中断是吧!!!

#include<reg51.h> // 头文件
#define uchar unsigned char
#define uint unsigned int

uchar key_zhi;
uchar dat0;dat1;
void delay_ms(uint ms) //延时
{
uint jj,kk;
for(jj=0;jj<ms;jj++)
for(kk=0;kk<120;kk++);
}

void display_led()
{

switch(key_zhi)
{
case 1 :
dat1=0;
P2=0x01<<dat0;
if(dat0>8)
{
dat0=0;
}
delay_ms(500);
dat0++;
break;

case 2 :
dat0=0;
P2=0x80>>dat1;
delay_ms(1000);
dat1++;
if(dat1>8)
{
dat1=0;
}
break;

default :
P2=0xff;
break;
}
}

void Init() //中断初始化
{
EA=1;
IT0=1;
EX0=1;
IT1=1;
EX1=1;
}

void main() //主函数
{
Init();
while(1)
{
display_led();
}
}

void Init0() interrupt 0
{
key_zhi=1;
}

void Init1() interrupt 2
{
key_zhi=2;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-29
把K2,K1开关led灯与单片机接口发过来 P1?P2?P3本回答被提问者采纳

AT89C51单片机的P1口控制8盏LED流水灯
j=0x01; \/\/ j初始化为0x01,左移初始值 for(i=0;i<8;i++) \/\/ for循环语句,完成8个循环 { P1= ~ j; \/\/ 对变量j 中的值按位取反后,从P1口输出 delay02s( ); \/\/ 延时0.2s j= j<<1; \/\/ 左移1位 } j=0x80; \/\/ 设置右移初始值j...

P1口输出八盏发光二极管从左向右依次逐个点亮后再丛右向左逐个灭灯(延...
MOV P1,#00H 用p1口输出给二极管 MOV P2,A 中断用的p2口,所以这里先给各位置一 WAIT_A:JB P2.0,WAIT_B 这是等待p2.0,看开关按钮有没有送入低电平 JMP LEFT 如果按下按钮开关,送入低电平,就跳到LEFT让二极管向左侧依次点亮 WAIT_B:JB P2.1,WAIT_A 当然这就是等待...

单片机实训总结范文5篇
7289A采用串行方式SPI总线与微处理器通信;7289A与AT89C52接口电路,在实际电路中无论接不接键盘,电路中连接到其各段上的8个 100千欧的下拉电阻均不可以省去,如果不接键盘而只接显示器可以省去8个10千欧电阻,若仅接键盘而不接显示器,可省去串入DP及SA-SG连线的8个220欧电阻,7289A还需要外接晶体振荡电路。...

led灯的规格和参数有什么?
1、按灯头分: e27 e14 b22 2、按功率分: 2W 3W 5W 7W 9W 11W(11W只见到业电照明的有)3、按照光色分: 白光、暖白 4、按照外壳材质分:铝合金、塑料、陶瓷 LED灯的主要参数:1、色温:常规色温:暖白光(WW)2700-3200k、自然光(NW)4000-4500K、正白光(PW)6000-6500K、 冷白光(...

相似回答