51单片机的c语言程序

如题所述

请你参考:

参照上图,代码如下:

#include<reg51.h>

unsigned char i;

void Delayms(unsigned int x)
{
  unsigned char t;
while(x--)
for(t=0;t<120;t++);
}

void main()
{
IT1=1;
IE|=0x84;
P2=0xFE;
i=1;
while(1);
}

void EX1_INT() interrupt 2
{
ET0=0;
Delayms(10);
P2=~(1<<i);
i=++i%8;
ET0=1;
}

追问

明显有问题

追答

怎么会有问题呢?你可以试一下

追问

这个怎么改啊?

#include

void main()
{
IT1 = 1;

EX1 = 1;

EA = 1;

P1 = 0x01; //点亮一个灯,如果是共阳,换成0xfe

while(1);

}

void INT1_ISR(void) interrupt 2
{
if(P1 == 0X80) //如果是共阳换成0x7f

P1 = 0X01; //如果是共阳换成0xfe
else

P1 <<= 1; //如果是共阳换成 { P1 <= 1;P1 += 1;}
}

没有给你做按键去抖

这个是led开始是熄灭1个,点亮7个,我需要的是初始点亮一个,熄灭7个

追答#include <reg52.h>

void main()
{
    IT1 = 1;
    EX1 = 1;
    EA = 1;
    P1 = 0xFE;    //点亮一个灯,如果是共阳,换成0xfe

    while(1);

}

void INT1_ISR(void) interrupt 2
{
    if(P1 == 0x7F)    //如果是共阳换成0x7f
        P1 = 0xFE;    //如果是共阳换成0xfe
    else
        P1=~(~P1<<1);
}

你再试试

这个程序没去抖动,可能不稳定

追问

可以了,谢谢啊

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜