51单片机程序问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 12:14:02
这是我的程序:
#include <reg51.h>
void msec (unsigned int x);
sbit swi=P1^0;
void main()
{
unsigned char array[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
unsigned int i;
P0=0x00;
for(i=0;i<=15;i++)
{
P3=array[i];
--P0;
msec(500);
};}
void msec(unsigned int x)
{
unsigned int j;
while((x--)!=0)
for(j=0;j<=125;j++)
{;};
}
就是不知道怎么让SW1按下,则数码管和LED继续变化,否者停止循环。请高手教下,谢谢
能说的详细点吗?看不明白

把点灯的程序放在死循环里面
while(1){ //这里面放你的循环程序
for(i=0;i<=15;i++)
。。。。。
}

SW1接硬件中断口

不然会出现“按键不灵”的状况。

在点灯程序前面加条件判断。不知道你按钮接地还是接VCC,有点不一样。假设是接地吧,按钮接通是低电平。swi是0
while(1)
{
if(swi)
{
点灯;
}
}