C51用外部中断控制切换流水灯自己搞得无法实现功能!
时间:10-02
整理:3721RD
点击:
思路是用x来记中断的个数,然后再主程序中用if语句来判断,当想X为多少多少,P0口的变化情况
刚刚学习单片机,技术不到位,求帮忙!
#include<reg52.h>
unsigned char x;
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
{for(j=0;j<125;j++)
{;}
}
}
void main(void)
{
EA=1;
EX0=1;
IT0=1;
x=0;
while(1)
{
if(x==0)
delay1ms(100);
P0=0x00;
delay1ms(100);
if(x==1)
delay1ms(100);
P0=0x01;
delay1ms(100);
if(x==2)
delay1ms(100);
P0=0x34;
delay1ms(100);
}
}
void int0(void) interrupt 0 using 0
{
x++;
if(x==3)
x=0;
}
刚刚学习单片机,技术不到位,求帮忙!
#include<reg52.h>
unsigned char x;
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
{for(j=0;j<125;j++)
{;}
}
}
void main(void)
{
EA=1;
EX0=1;
IT0=1;
x=0;
while(1)
{
if(x==0)
delay1ms(100);
P0=0x00;
delay1ms(100);
if(x==1)
delay1ms(100);
P0=0x01;
delay1ms(100);
if(x==2)
delay1ms(100);
P0=0x34;
delay1ms(100);
}
}
void int0(void) interrupt 0 using 0
{
x++;
if(x==3)
x=0;
}
#include<reg52.h>
unsigned char x;
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
{for(j=0;j<125;j++)
{;}
}
}
void main(void)
{
EA=1;
EX0=1;
IT0=1;
x=0;
while(1)
{
if(x==0)
{ P0=0x00; }
if(x==1)
{ P0=0x01;}
if(x==2)
{ P0=0x34; }
}
}
void int0(void) interrupt 1 using 1
{ if(P3^3==0)
{
delay1ms(20);
if(P3^3==0)
{
x++;
}
}
if(x==3)x=0;
}
看来还得靠自己啊,嘿嘿,搞定!
中断里面没有检测按键是否按下,也没有消抖
晕.. 外0中断号是0,干嘛特意改成1...
