2019-07-15 13:36发布
chenwei6991627 发表于 2016-6-22 19:11 那应该没有问题啊
chenwei6991627 发表于 2016-6-23 09:19 还真没看懂你串口中断里面要干什么,这里应该语句 尽量少把
最多设置5个标签!
难道是程序出问题了?
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit led0=P1^0;
sbit led1=P1^1;
sbit led2=P1^2;
sbit led3=P1^3;
sbit led4=P1^4;
sbit led5=P1^5;
sbit led6=P1^6;
sbit led7=P1^7;
void delayms(uint ms)
{
uchar i;
while(ms--) for(i=0;i<120;i++);
}
//主程序
void main()
{
SCON=0x50; //串口模式1,允许接收
TMOD=0x20; //T1 工作模式2
PCON=0x00; //波特率不倍增
TH1=0xfe; //波特率9600
TL1=0xfe;
RI=0;
EA=1;
ES=1;
TR1=1;
P1=0xff;
while(1);
}
void Serial_Int(void) interrupt 4
{
uchar a;
if(RI) //如收到则LED 闪烁
{
RI=0;
a=SBUF;
a=a&0x0f;
switch(a)
{
case 0x00:
if(led0==1)
{
delayms(10);
if(led0==1);
led0=0;
}
else led0=1;break;
case 0x01:
if(led1==1)
{
delayms(10);
if(led1==1);
led1=0;
}
else led1=1;break;
case 0x02:
if(led2==1)
{
delayms(10);
if(led2==1);
led2=0;
}
else led2=1;break;
case 0x03:
if(led3==1)
{
delayms(10);
if(led3==1);
led3=0;
}
else led3=1;break;
case 0x04:
if(led4==1)
{
delayms(10);
if(led4==1);
led4=0;
}
else led4=1;break;
case 0x05:
if(led5==1)
{
delayms(10);
if(led5==1);
led5=0;
}
else led5=1;break;
case 0x06:
if(led6==1)
{
delayms(10);
if(led6==1);
led6=0;
}
else led6=1;break;
case 0x07:
if(led7==1)
{
delayms(10);
if(led7==1);
led7=0;
}
else led7=1;break;
}
}
}
这是程序
尽量少把
楼主是设计了7个灯,对应7个键值,不同键值点亮不同的灯
一周热门 更多>