把P1=0xff放到while循环里 是正解 这样是不会导致数码管闪烁的 因为没看到电路图,但是程序应该是没有问题的,你可以将程序改回原来的样子在试试看,如果数码管不闪烁,那么就用改用边沿触发方式吧,程序还原不变在EX0=1后面加上 TCON=1;就行了
#include<reg52h>
#include<intrinsh>
typedef unsigned int u16;
typedef unsigned char u8;
sbit led=P2;//这里填你LED连接的端口(引脚),不一定是P2,也有可能是P3、P0
void delay(u16 i)
{
while(i--);
}
void shan1()
{
u8 i;
led=0x01;//我默认led输入高电平1是亮,具体按照你实际情况,低电平亮就0xfe;
for(i=0;i<7;i++)//已经点亮一个了,所以剩7个。
{
led=_crol_(led,1);//左移1位
}
led=0x00;
}
void shan2()
{
u8 i;
led=0xc0;//我默认led输入高电平1是亮,具体按照你实际情况
for(i=0;i<6;i++)已经点亮两个个了,所以剩6个。
{
led=_cror_(led,1);//右移一位
delay(1000);
}
led=0x00;
}
void shan2()
{
u8 i;
led=0xc0;//我默认led输入高电平1是亮,具体按照你实际情况
for(i=0;i<6;i++)
{
led=_cror_(led,1);
delay(1000);
}
led=0x00;
}
void main()
{
while(1)
{
shan1();
delay(1000);
shan2();
}
}
以上就是关于52单片机中用中断程序中有的流水灯中断结束后怎么还亮着全部的内容,包括:52单片机中用中断程序中有的流水灯中断结束后怎么还亮着、求你89C52单片机流水灯移动的程序 第一次一个LED左移8次,第二次二个LED、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)