求救!!!发送这条指令哪里出错了???
本帖最后由 zhangmangui 于 2013-11-30 20:47 编辑https://bbs.21ic.com/forum.php?mod=image&aid=222616&size=300x300&key=f738e3e77f261d94db56225d4dd69b3e&nocache=yes&type=fixnonehttps://bbs.21ic.com/forum.php?mod=image&aid=222622&size=300x300&key=ecbd724109cbd60de235a9d252914598&nocache=yes&type=fixnonehttps://bbs.21ic.com/forum.php?mod=image&aid=222618&size=300x300&key=2d4834e33221e95e06274c0852f6f1d4&nocache=yes&type=fixnone
#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();}
}
建议你用示波器看看 zhangmangui 发表于 2013-11-30 20:47 static/image/common/back.gif
建议你用示波器看看
现在主要是那他时序图写的不够严谨,所以我就不知要我的延时对不对,要多少他那块板才能读取。试了好久了,都不到什么问题:( 519259749 发表于 2013-12-1 10:28 static/image/common/back.gif
现在主要是那他时序图写的不够严谨,所以我就不知要我的延时对不对,要多少他那块板才能读取。试了好久了 ...
用示波器双通道看波形测时间 看看
像这些时序一般延时长了没问题 加长点看看 谢谢你了,知道哪里出问题了。 519259749 发表于 2013-12-9 23:43 static/image/common/back.gif
谢谢你了,知道哪里出问题了。
求分享 zhangmangui 发表于 2013-12-10 09:19 static/image/common/back.gif
求分享
1、DATA定义的是位,不能DATA=dat0&0x01这样,应该if(dat0&0x01)DATA = 1;
2、最后一位那也不用延时了,把延时去掉,按顺序把FSR、CLK、DATA,拉低。
主要是那个位判断那,和最后一位那。
注:朋友帮忙看出来的,自己写错都看不出。 519259749 发表于 2013-12-16 21:03 static/image/common/back.gif
1、DATA定义的是位,不能DATA=dat0&0x01这样,应该if(dat0&0x01)DATA = 1;
2、最后一位那也不用延时了,把 ...
谢谢分享 代码的这种情况很常见
自己写的有时候就成了思维定式别人一眼就看出来了
页:
[1]