感谢回复
程序代码如下
void main()
{
init();
rd7=1;
sc();
while(1)
{
ds_reset();
}
}
void ds_reset()
{
uchar st=1;
in();
nop();
nop();
nop();
nop();
nop();//2us
out();//trisa全部置为0 ,输出。并且输出为0。拉低总线。
delayus(130,200);//716us
in();//释放总线,拉高,这里把trisa全部置1,全部为输入
delay(10);//44
while(st)
{
if(dq==0)//dq是ra5,由于上面trisa已经置1。porta为高阻态。上拉电阻会把它拉到高电平。也就是这里dq=1,那么程序就会死在while循环中。ra5永远是高电平。问题是ra5输出了1ms左右的方波。
{
st=0;
}
else
{
st=1;
}
}
in();
delayus(130,200);//延时716us
}
这下子搞不懂了 看来写时序还要用汇编来写 c还真的不太合适
算法到是可以用c来写