| 
 
高级会员 
 
	积分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);
 }
 
 }
 
 }
 
 
 
 | 
 |