使用AT89C2051单片机,控制8个小灯,按下START键,0 0 0 0 0 0 0 0,中间两个灯亮,1S延时依次向外轮流点亮。按下change切换键立刻变为 最两边 的2个灯亮,1S延时依次向中间轮流点亮。按下停止键系统停止。希望哪位大侠帮帮忙。
最好在程序中使用标志位,谢谢 .QQ714067738,天天在线
//舞台灯
//P1口输出高电平导通
//P3.2口控制开关
//P3.3口控制模式
#include<reg51.h>
#define uchar unsigned char
bit key1=0; //开关标志
bit key2=1; //模式标志
void START()interrupt 0 using 0
key1=~key1; //开关控制
void CHANGE()interrupt 2 using 2
key2=~key2; //改变点亮模式
void delay(uchar time)
uchar i;
while(time--)
for(i=0;i<250;i++);
void main()
uchar led_l=0x10;
uchar led_r=0x08;
uchar led;
IE=0x85;
TCON=0x05;
while(1)
while(key1) //检查是否按下START键
led=led_l+led_r;
P1=led; //输出灯亮码
if(key2) //检查是否按下CHANGE键
led_l=led_l<<1;led_r=led_r>>1; //默认状态下未按CHANGE时从中向两边点亮
if(led_l==0x00)led_l=0x10;led_r=0x08;
else
led_l=led_l>>1;led_r=led_r<<1; //按下CHANGE时
if(led_l==0x08)led_l=0x80;led_r=0x01;
delay(200); //延时
P1=0x00;
参考知识1
写简单,可是没有环境调试。。。
参考知识B
//舞台灯
//P1口输出高电平导通
//P3.2口控制开关
//P3.3口控制模式
#include<reg51.h>
#define
uchar
unsigned
char
bit
key1=0;
//开关标志
bit
key2=1;
//模式标志
void
START()interrupt
0
using
0
key1=~key1;
//开关控制
void
CHANGE()interrupt
2
using
2
key2=~key2;
//改变点亮模式
void
delay(uchar
time)
uchar
i;
while(time--)
for(i=0;i<250;i++);
void
main()
uchar
led_l=0x10;
uchar
led_r=0x08;
uchar
led;
IE=0x85;
TCON=0x05;
while(1)
while(key1)
//检查是否按下START键
led=led_l+led_r;
P1=led;
//输出灯亮码
if(key2)
//检查是否按下CHANGE键
led_l=led_l<<1;led_r=led_r>>1;
//默认状态下未按CHANGE时从中向两边点亮
if(led_l==0x00)led_l=0x10;led_r=0x08;
else
led_l=led_l>>1;led_r=led_r<<1;
//按下CHANGE时
if(led_l==0x08)led_l=0x80;led_r=0x01;
delay(200);
//延时
P1=0x00;