打印
[DSP编程]

求救!!!发送这条指令哪里出错了???

[复制链接]
935|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
519259749|  楼主 | 2013-11-30 20:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhangmangui 于 2013-11-30 20:47 编辑


#include<reg52.h>  
#include<intrins.h>   
#define uint unsigned int   
#define uchar unsigned char

sbit CLK=P1^5;
sbit DATA=P1^6;
sbit FSR=P1^7;

void delay_8us(unsigned int t)
{        while(--t); }           //延时8us   晶振11.0592

void delayms(unsigned int x)    //延时1ms
{  unsigned char j;
while(x--) {for(j=0;j<123;j++){;}}
}

void delay10us()    //延时10us
{  _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}

void Init()  
{  
   CLK=1;
   DATA=1;
   FSR=1; delay10us();
   FSR=0; delay10us();  
   CLK=0; delay10us();
   DATA=0; delay10us();
   FSR=1;  delayms(4);
}                                                               
void writeOnecom(uchar dat0,uchar dat1,uchar dat2)
{  uchar i,x,j;
   for(i=8;i>0;i--)
   { DATA=dat0&0x01;
         CLK=1;delay_8us(5);
         CLK=0;delay_8us(5);
         dat0>>=1;
         }                             //不用延时

        for(x=8;x>0;x--)
   { DATA=dat1&0x01;
         CLK=1;delay_8us(5);
         CLK=0;delay_8us(5);
         dat1>>=1;
         }                                  //不用延时

         for(j=8;j>0;j--)
   {         
            DATA=dat2&0x01;
         CLK=1;delay_8us(5);
         CLK=0;delay_8us(5);
         dat2>>=1;
         }         delayms(100);         //延时50-100ms

           FSR=0; _nop_();_nop_();_nop_();_nop_();_nop_();  
        CLK=0;_nop_();_nop_();
        DATA=0; delayms(30);
}

void YL_Init()
{                                                                                                           
Init();writeOnecom(0x56,0x64,0xb6);delayms(1000);
}         

void main()            
{               
    while(1){ YL_Init();}
}

时序图20131130181.jpg (37.68 KB )

时序图20131130181.jpg

控制线20131130182.jpg (37.3 KB )

控制线20131130182.jpg

控制说明20131130180.jpg (40.51 KB )

控制说明20131130180.jpg

相关帖子

沙发
zhangmangui| | 2013-11-30 20:47 | 只看该作者
建议你用示波器看看  

使用特权

评论回复
板凳
519259749|  楼主 | 2013-12-1 10:28 | 只看该作者
zhangmangui 发表于 2013-11-30 20:47
建议你用示波器看看

现在主要是那他时序图写的不够严谨,所以我就不知要我的延时对不对,要多少他那块板才能读取。试了好久了,都不到什么问题:(

使用特权

评论回复
地板
zhangmangui| | 2013-12-1 20:38 | 只看该作者
519259749 发表于 2013-12-1 10:28
现在主要是那他时序图写的不够严谨,所以我就不知要我的延时对不对,要多少他那块板才能读取。试了好久了 ...

用示波器双通道看波形  测时间 看看
像这些时序一般延时长了没问题   加长点看看

使用特权

评论回复
5
519259749|  楼主 | 2013-12-9 23:43 | 只看该作者
谢谢你了,知道哪里出问题了。

使用特权

评论回复
6
zhangmangui| | 2013-12-10 09:19 | 只看该作者
519259749 发表于 2013-12-9 23:43
谢谢你了,知道哪里出问题了。

求分享

使用特权

评论回复
7
519259749|  楼主 | 2013-12-16 21:03 | 只看该作者
zhangmangui 发表于 2013-12-10 09:19
求分享

1、DATA定义的是位,不能DATA=dat0&0x01这样,应该if(dat0&0x01)DATA = 1;
2、最后一位那也不用延时了,把延时去掉,按顺序把FSR、CLK、DATA,拉低。
主要是那个位判断那,和最后一位那。
注:朋友帮忙看出来的,自己写错都看不出。

使用特权

评论回复
8
zhangmangui| | 2013-12-16 23:24 | 只看该作者
519259749 发表于 2013-12-16 21:03
1、DATA定义的是位,不能DATA=dat0&0x01这样,应该if(dat0&0x01)DATA = 1;
2、最后一位那也不用延时了,把 ...

谢谢分享   代码的这种情况很常见  
自己写的有时候就成了思维定式  别人一眼就看出来了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

8

帖子

0

粉丝