#include <reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit anjian = P1^0; //按键位
void delay(uint16 h) //延时程序
{
while(h--);
}
main()
{ uint8 k = 0 , i = 0;
P0 = 0xff;
anjian = 1;
while(1)
{
P0 = ~(1<<k++);
if(anjian == 0)
{
delay(200);
if(anjina == 0) i++;
if(i == 3)
i = 0;
}
switch(i)
{
case 0: delay(10000);break;
case 1: delay(20000);break;
case 2: delay(20000); break;
}
if(k==8) k=0;
}
}
//头一次回答问题,多多支持,全部知识都是自学的,但是我试验过可以符合你的要求运行,谢谢
追问麻烦你了,不过你的程序不容易看懂啊,它不能一直执行下去,只会执行一次
追答请问你的是什么按键,我的是矩阵的,所以我在我的板子上是用一个矩阵的按键式,我的可以连续,程序还要根据你的板子布置按键不同需要改的
追问哦,P0 = ~(1<<k++); 这个是什么意思呢?
追答这个就是先把1,就是0000 0001这个数左移k位,当k = 1 时移一位,等于2时移2位,移完之后就取反,我的板子是低电平亮的,所以要取反,当移一位是取反就是1111 1110,移2位时取反就是1111 1101,所以就可以一直往左移
谢谢