前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习单片机第5天

学习单片机第5天

原创
作者头像
笃信好学
发布2022-09-14 04:09:25
1830
发布2022-09-14 04:09:25
举报
文章被收录于专栏:笃信好学

今天继续学习 74HC165 芯片 的原理和编程

74HC165 芯片 接口
74HC165 芯片 接口
74HC165 芯片 时序图
74HC165 芯片 时序图

时序图

并行A-H接口对应 串口OUTPUT QH ,转换串口的过程为,单片机通过控制CLK和SH/LD来把A-H的数据转化为串口,输出到GH

代码语言:javascript
复制
#include"reg52.h"
#include"intrins.h"

#define GPIO_LED P0
typedef unsigned char u8;
typedef unsigned int u16;

sbit IN_PL=P1^6;
sbit IN_Data=P1^7;
sbit SCK=P3^6;//clock


u8 Read74HC165(){
	//programm according to Sequence Diagram
	u8 indata;
	u8 i;
	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
	}
	return indata;
}

void main(){
	u8 h165Value;
	while(1){
		h165Value=Read74HC165();
		if(h165Value!=0xff){
			GPIO_LED=h165Value;
		}		
	}
}

C语言中没有_nop_()函数。

在51C中一般包含在#include "intrins.h" 头文件中。

该函数是在51单片机中用的延时函数,表示执行一条没有什么意义的指令,延时一个指令周期,有的指令周期是两个或两个以上的机械周期,但是_nop_();指令需要的只是一个机械周期也就是12个时钟周期(震荡周期)。

51单片机中,1个机械周期 = 12个时钟周期 = 12 * ( 1 / f)。(f 为晶振频率)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今天继续学习 74HC165 芯片 的原理和编程
  • 时序图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档