普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 4915|回复: 2

单片机IO扩展165和595实验的编程的不同

 关闭 [复制链接]

16

主题

40

帖子

231

积分

中级会员

Rank: 3Rank: 3

积分
231
发表于 2017-3-2 15:33:10 | 显示全部楼层 |阅读模式
下面是165编程的一部分:
u8 Read74HC165(void)
{  
  u8 i;
  u8 indata;
  
   IN_PL = 0;
   _nop_();        //短暂延时 产生一定宽度的脉冲
   IN_PL = 1;    //将外部信号全部读入锁存器中
   _nop_();
              
   indata=0;   //保存数据的变量清0  
   for(i=0; i<8; i++)
    {
   indata = indata<<1;    //左移一位  
   SCK = 0;   //时钟置0      
      _nop_();        
   indata |= IN_Data;     
      SCK = 1;   //时钟置1   
}
下面是595编程的一部分:
for(a=0;a<8;a++)   //发送8位数
{
  SER = dat >> 7;   //从最高位开始发送
  dat <<= 1;
  SRCLK = 0;    //发送时序
  _nop_();
  _nop_();
  SRCLK = 1;
}

(1)为什么在165里置入的式子是在时钟函数里面的,而下一个595芯片的实验却没有这条式子?而且上面的发送程序的是在时钟函数的上面的,而不  是   在上升沿的时候?
(2)有没有高手能举例详细解析一下 indata |= IN_Data; 这条式子的意思吗?
麻烦论坛里的各位大神了,本人新手,拜托大家指导一下了
回复

使用道具 举报

20

主题

1344

帖子

8381

积分

论坛元老

Rank: 8Rank: 8

积分
8381
发表于 2017-3-2 15:48:53 | 显示全部楼层
刚才看了一下资料,两器件是不同的哦。
595是串行输入,并行输出。
165是并行输入,串行输出。
知道了这个,你的说的程序就不难理解了。
595:串行输入,要一位一位地输入,并行输出,输出就一下子。
165:并行输入,输入就是一下子,串行输出,输出就要一位一位地输出。
至于时钟上升沿等其它问题,我没有仔细研究,你找点资料看看吧。
回复 支持 反对

使用道具 举报

16

主题

40

帖子

231

积分

中级会员

Rank: 3Rank: 3

积分
231
 楼主| 发表于 2017-3-3 13:54:31 | 显示全部楼层
HC6800-ES-V2.0 发表于 2017-3-2 15:48
刚才看了一下资料,两器件是不同的哦。
595是串行输入,并行输出。
165是并行输入,串行输出。

好的,谢谢,我再想一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-27 23:42 , Processed in 0.086475 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表