导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→我送你几个子程序,你慢慢看吧。 我要提醒你的是:用显波器测一

* 3826: 初学者:谁用过X1243?

   老陈 
老陈发表的帖子 

 我送你几个子程序,你慢慢看吧。 我要提醒你的是:用显波器测一下晶振……
bit writebyte(unsigned char sbyte)                  /* 送一个字节 */
{
unsigned char wi,aa,wsbyte;
bit nop,returnbit;
wsbyte=sbyte;
aa=0x80;
for(wi=0;wi<8;wi++)
   {
   x_scl=0;
   wsbyte=sbyte&aa;
   if(wsbyte==0)
      x_sda=0;
   else
      x_sda=1;
   aa=aa>>1;
   x_scl=1;
   nop=0;
   }
x_scl=0;
x_sda=1;
     if(x_sda==0)
        returnbit=0;                   /*write success*/
     else
        returnbit=1;
x_scl=1;
nop=0;
x_scl=0;
return returnbit;
}

bit x1243w(unsigned char slabyte,char highaddr,char lowaddr,char rwdata)
{                                /* 送四个字节,一个命令包含四个字节  */
  bit xreturnbit;
      x_sda=1;
      x_scl=1;
      x_sda=0;                            /*  start  */
      xreturnbit=1;
      if(writebyte(slabyte)==0)
       if(writebyte(highaddr)==0)
          if(writebyte(lowaddr)==0)
              if(writebyte(rwdata)==0)
                   xreturnbit=0;          /* 送数据成功 */
       x_sda=0;
       x_scl=1;
       x_sda=1;       /*stop*/
       return(xreturnbit);
 }

char x1243read(unsigned char slabyte,char highaddr,char lowaddr)  /* 读出一个字
节 */
{
    unsigned char readvalue;
    char wi;
    x_sda=1;
    x_scl=1;
    x_sda=0;                                        /* start */
    if(writebyte(slabyte)==0)                       /* 虚写... */
       if(writebyte(highaddr)==0)
          if(writebyte(lowaddr)==0)
             {
             x_scl=1;
             x_sda=0;
             slabyte=slabyte|0x01;
             if(writebyte(slabyte)==0)
                {
                x_scl=0;
                readvalue=0;
                for(wi=0;wi<7;wi++)                 /* 读出8位数据 */
                   {
                   x_scl=1;
                   if(x_sda==1)
                      readvalue=readvalue|0x01;
                   readvalue=readvalue<<1;
                   x_scl=0;
                   }
                x_scl=1;
                if(x_sda==1)
                readvalue=readvalue|0x01;
                }
             }
    x_scl=0;
    x_sda=0;
    x_scl=1;
    x_sda=1;/*stop*/
return readvalue;
}

发表时间:2001年12月21日13:04:00

  
回复该帖

本主题共有 3 帖,分页:>>>>>该主题的所有内容[3]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:因为特征码是必须的,否则PC无法识别是谁的数据。51给PC的数据是随机的肯定会冲突,问题的关键是如何
[下一篇帖子]:主要看怎么实现了所以通讯时只能一个一个通讯,PC机每次空闲等待单片机请求时开始只读取第一个字节(特