• 大小: 17KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: 其他
  • 标签: 单片机  单总线  

资源简介

单片机单总线的通信,是自己编写的例子,还有很多不好的地方,没有完美。希望对需要的人有帮助。

资源截图

代码片段和文件信息

#include

#define uchar unsigned char
#define uint unsigned int

sbit dq = P1^0;
sbit flag = P3^0;
sbit flag1= P3^1;
sbit flag2= P3^2;
uchar Temp[3]={0xad0xe10xf1};    //要发送的数据 
uchar ID[3]={0x000x010xef}; //   要通信的从机ID号 


void          _nop_     (void);

void TempDelay (uchar us)    //软件延时 
{
  while(us--);
}

void Delay ()   //定时器0延时 800
{
 TMOD=0x01;
 TH0=0xfe;
 TL0=0x70;
 //ET0=1;
// EA=1;
 TR0=1;
}
/*
void Delay0()  //定时器0延时 500uS
{
 TMOD=0x01;
 TH0=0xff;
 TL0=0x06;

 TR0=1;

} */
void Delay1()    //定时器1延时300 
{
TMOD=0x10;
TH1=0xff;
TL1=0x6a;
TR1=1;

}  
/*
void Delay2()    //定时器1延时400 
{
TMOD=0x10;
TH1=0xff;
TL1=0x38;
TR1=1;

}  */
void WriteByte (uchar wr)  
{
uchar i;
for (i=0;i<8;i++)
{
dq = 0;
_nop_ ();
dq=wr&0x01;
TempDelay(30); 
dq=1; 
_nop_(); 
wr >>= 1;
}
}
/*
uchar ReadByte ()     
{
uchar iu=0;
for(i=0;i<8;i++)
{

u >>= 1;
TempDelay (5);
if(dq==1)
u |= 0x80;
TempDelay (25);
// _nop_();
}
return(u);
}
*/

//发送J个字节 当一个字节发送结束延时300uS低电平当全部发送结束延时500uS高电平 
void Write_Mbyte(uchar * puchar j)
{
uchar i=0;
while(i {
 dq=1;
 nop_();
 WriteByte(p[i]); 
 dq=0;
 Delay1();    //延时300uS
 while(1)
{
  if(TF1)
  {
  TR1=0;
TF1=0;
  break;   
  }
}
i++;

}
dq=1;
Delay();   //delay 800
while(1)
{
  if(TF0)
  {
  TR0=0;
TF0=0;
  break;   
  }
}
}
void Init ()   //初始复位脉冲 
{

dq=0;
Delay();   //delay800uS 
while(1)
{
 if(TF0)
 {
  TR0=0;
TF0=0;
  break;   
 }
}

}  


Match()
{

Write_Mbyte(ID3);



  //flag1=dq;
}

void main()
{


flag=0;
flag1=0;
flag2=0;
Init();
Match(); 
while(1) ;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      79295  2009-06-25 22:11  moni.DSN

     文件      25088  2009-06-28 11:38  过程描述.doc

     文件       2218  2009-06-28 11:03  U3.c

     文件       1912  2009-06-28 11:06  U1.c

----------- ---------  ---------- -----  ----

               108513                    4


评论

共有 条评论