用人体感应控制数码管显示问题,求各位帮忙看看程序
时间:10-02
整理:3721RD
点击:
各位帮看下我的程序哪里有问题?一直没找出来,我的目的是人体感应控制单个数码管显示:感应一次显示L再感应显示r,没感应不显示。结果是不感应显示倒着的F,感应有时L,r交替,有时连着两个L或两个r。大家看看我的程序问题出在哪里
#include <reg52.h>
bit flag;
sbit REEB = P3^4;
#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
void init_timer0(void);
void turn(void);
main()
{
init_timer0();
while(1)
{
// DataPort = 0xff;
}
}
void init_timer0(void)
{
TMOD |= 0X01;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void timer0_isr(void) interrupt 1
{
TH0=2001; //重新赋值 2ms
TL0=1;
if(REEB == 0)
{
turn();
flag = !flag;
}
}
void turn(void)
{
if(flag)
{
// DataPort = 0x00;
DataPort = 0xc7;
}
else
{
// DataPort = 0x00;
DataPort = 0xaf;
}
}
#include <reg52.h>
bit flag;
sbit REEB = P3^4;
#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
void init_timer0(void);
void turn(void);
main()
{
init_timer0();
while(1)
{
// DataPort = 0xff;
}
}
void init_timer0(void)
{
TMOD |= 0X01;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void timer0_isr(void) interrupt 1
{
TH0=2001; //重新赋值 2ms
TL0=1;
if(REEB == 0)
{
turn();
flag = !flag;
}
}
void turn(void)
{
if(flag)
{
// DataPort = 0x00;
DataPort = 0xc7;
}
else
{
// DataPort = 0x00;
DataPort = 0xaf;
}
}