学习单片机第5天

2022-09-14 04:09:25 浏览数 (1)

今天继续学习 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 为晶振频率)。

0 人点赞