基于RlTOS和ISP功能数字仪表系统设计实现
601μs之间
DaUassDataout=1;
delay(35);
Dresence=DallassDataout;
delay(60);
return(presence);
}
//写时序从主控制器把总线拉低时开始
void writeCommand(unsigned char command)
{
unsigned char count;
for(count=O;count8;count++)
{
DallassDataout=0;
if(command0x01==1)
{
DallassDataout=1;
//写“1”时序在将总线拉低后,AT89S52主控制器必须在15μs内释放总线,所以此语句之前不能有较长时间的延时语句
}
delay(35);//无论写“1”还是写“0”时序都必须有至少601as的低电平 DallassDataout=1;//总线恢复的过程
command=command>>1;
}
}
//读时序从主控制器将总线拉低至少1μs后释放总线的时刻开始
unsigned char readdata(void)
{
unsigned char value;
unsigned char midtemp=0;
for(value=0;value8;Value++)
{
I DallassDataout=0;
midtemp=midtemp>>1;
-nop_O;
_nop_O;
DallassDataout=1;
//读时序时,控制器必须在15μs内释放总线,然后采样总线状态,所以此语句之前不能延时太长的时间的延时语句
if(DallassDataout==1)
{
midtemp=midtemp | 0x80;
//因为midtemp初始被赋值为0,所以如果采样总线状态为0则不必处理,0会自动被返回
}
delay(35);
//延时70μs完成此次Bit
位读时序过程,为下一次读作准备
- 嵌入式Linux发展 谈Montavista Linux(04-15)
- 利用MLD自动化操作系统移植降低 Linux成本(05-04)
- 嵌入式实时系统中的优先级反转问题(06-10)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 采用Linux与DSP/BIOS RTOS实施双OS信号处理技术(02-13)
- VxWorks下的多重定时器设计(02-16)