51单片机 红外通信 while (!Ir_Pin && (TH0&0x80)==0)怎么理解?unsigned int Ir_Get_Low() //获取低电平时间{ TH0 = 0; TL0 = 0; TR0 = 1; while (!Ir_Pin && (TH0&0x80)==0); TR0 = 0; return (TH0 * 256 + TL0);}这
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/19 16:56:08
51单片机 红外通信 while (!Ir_Pin && (TH0&0x80)==0)怎么理解?unsigned int Ir_Get_Low() //获取低电平时间{ TH0 = 0; TL0 = 0; TR0 = 1; while (!Ir_Pin && (TH0&0x80)==0); TR0 = 0; return (TH0 * 256 + TL0);}这
51单片机 红外通信 while (!Ir_Pin && (TH0&0x80)==0)怎么理解?
unsigned int Ir_Get_Low() //获取低电平时间
{
TH0 = 0;
TL0 = 0;
TR0 = 1;
while (!Ir_Pin && (TH0&0x80)==0);
TR0 = 0;
return (TH0 * 256 + TL0);
}
这个函数怎么理解?答好的会再加分,谢谢!
51单片机 红外通信 while (!Ir_Pin && (TH0&0x80)==0)怎么理解?unsigned int Ir_Get_Low() //获取低电平时间{ TH0 = 0; TL0 = 0; TR0 = 1; while (!Ir_Pin && (TH0&0x80)==0); TR0 = 0; return (TH0 * 256 + TL0);}这
定时器T0应该工作在模式1,16位定时器,也就是说,
while (!Ir_Pin && (TH0&0x80)==0);有两种情况会跳出循环:
1.在指定时间内Ir变高,这个指定时间指在TH0,TL0 < 0x7FFF次定时内.
2.当已经经历了TH0,TL0 > 0x8000次定时后,Ir仍然为低,也跳出循环.
所以说这个程序在已知Ir低电平经历的时间满足