高级会员

- 积分
- 717
- 金钱
- 717
- 注册时间
- 2016-6-10
- 在线时间
- 191 小时
|
10金钱
写了一个51单片机的程序if(flag==0)
{
while(TF0==0);
TF0=0;
i=P0>>7;
P0=i+(P0<<1);
}
在这段话里,我并没有对TH0和TL0重新赋值,在while(TF0==0);等待之后,定时器0的TH0和TL0都应该为计满状态了,但是为什么无论我用keil仿真还是proteus仿真结果此时TH0与TL0的值都是0X00,0X02;请大侠们帮看看。多谢了
以下是源代码
#include"AT89X51.h"
bit flag=0;
bit a=0;//为了使一开始没有流水效果定义(删掉也行)
void EXIT0(void) interrupt 0
{
if(a==0)P0=0XFE;
flag=0;
a=1;
}
void EXIT1(void) interrupt 2
{
if(a==0)P0=0XFE;
flag=1;
a=1;
}
void main()
{ unsigned char i;
EA=1;
EX1=1;
EX0=1;
IT1=1;
IT0=1;
/***************/
TMOD=0X01;//定时器0,工作方式1
TH0=0XD8;
TL0=0XEF;
TR0=1;//开启定时器
while(1)
{
if(flag==0)
{
while(TF0==0);
TF0=0;
i=P0>>7;
P0=i+(P0<<1);
}
if(flag==1)
{
while(TF0==0);//使用查询方式,等待定时完成
TF0=0;
i=P0<<7;
P0=i+(P0>>1);
}
}
}
|
|