关于学习总线型外部资源(如1302时钟芯片)的问题,请大神们帮帮我!!!

2019-03-24 17:46发布

本人没有什么C语言的基础,凭着爱好自学的单片机,根据1302的时序图和自己的理解下了下面的程序,麻烦大神们帮我看看哪里有问题,我的问题出在哪里。学了快一周了,都还没有一点长进

/*****头文件*****/
#include <reg52.h>
/*****宏定义*****/
#define u8 unsigned char
#define u16 unsigned int
/*****延时函数*****/
void delay(u16 num)
{
u16 x,y;
for(x=num;x>0;x--)
  for(y=110;y>0;y--);
}
/*****定义变量端口号*****/
sbit sclk=P3^6;
sbit io=P3^4;
sbit ce=P3^5;
/*****读1302函数*****/
u8 read_1302()
{
u8 dat,dat1,wr;
sclk=0;
ce=1;
for(n=0;n<8;n++)
{
  wr=io;
  wr=wr&0x01;
  delay(5);
  sclk=1;
  delay(5);
  sclk=0;
  delay(5);
  wr>>=1;
  delay(5);
}
delay(15);
for(n=0;n<8;n++)
{
  io=dat1;
  dat1=dat1|0x00;
  delay(5);
  sclk=1;
  delay(5);
  sclk=0;
  delay(5);
  dat1<<=1;
  delay(5);
}
return dat;
}
/*****主函数*****/
void main()
{
P1=read_1302(0x81);
while(1)
{
  ;
}
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
流氓小哥
1楼-- · 2019-03-26 06:24
辛昕 发表于 2016-1-20 11:23
没这玩意调时序,就是扯淡。
纯粹碰运气,遇到好的例程就万事大吉,否则就压根没遮

我这也只不过刚刚学习,还谈不上高深的调时序什么的,只是理解一下芯片是如何工作的,不过还是谢谢您的建议,等我学的差不多了,我会买一个的
DavidZH
2楼-- · 2019-03-26 11:31
 精彩回答 2  元偷偷看……
elvike
3楼-- · 2019-03-26 16:28
流氓小哥 发表于 2016-1-20 11:11
我的问题是我的程序写的都不对

那就找本c语言的书先把c学懂
流氓小哥
4楼-- · 2019-03-26 22:08
DavidZH 发表于 2016-1-20 11:55
直接看时序!!








上面四张图足够解释应用了,值得注意的是写之前必须禁止写 ...

谢谢,我先理解理解。麻烦您了!
流氓小哥
5楼-- · 2019-03-27 03:24
 精彩回答 2  元偷偷看……
elvike
6楼-- · 2019-03-27 09:04
流氓小哥 发表于 2016-1-20 12:57
嗯,会的,等我学完单片机就去学C语言。谢谢您了。

你这顺序搞反了吧,除非你会其他编程语言

一周热门 更多>