标题: 74hc165使用教程适合初学者 [打印本页]
作者: 2500 时间: 2016-10-28 14:57
标题: 74hc165使用教程适合初学者
#include<reg52.h>
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit SHLD=P1^7; //1脚SH/LD移位控制/置入控制(低电平有效)
sbit CLK=P1^6; //2脚CLK,CLK INH时钟输入端(上升沿有效)
sbit QH=P1^5; //9脚QH输出端
uint data1=0,
data2=0;
data3=0;
void XD_74hc165_Readdata(void)
{
uchar i; //位移时使用
unsigned char
readdata1,
readdata2,
readdata3;//获取数据时使用
readdata1 = 0x00; //初始值
readdata2 = 0x00;
readdata3 = 0x00;
SHLD=0; //将165外部端口数据装入内部寄存器 置入控制端口(低电平有效)
_nop_();
SHLD=1; //抬高为移位准备 移位控制(高电平有效)
/****************读取第一个74HC165***************************************************/
for(i=0;i<8;i++) //移动8位字节
{
readdata1<<=1; //每次左移一位
CLK=0; //时钟低
_nop_();
readdata1|=QH; //先接收高位
CLK=1; //时钟高,上升沿下一个数据移出
_nop_();
}
/****************读取第二个74HC165***************************************************/
for(i=0;i<8;i++) //移动8位字节
{
readdata2<<=1; //每次左移一位
CLK=0; //时钟低
_nop_();
readdata2|=QH; //先接收高位
CLK=1; //时钟高,上升沿下一个数据移出
_nop_();
}
/****************读取第三个74HC165***************************************************/
for(i=0;i<8;i++) //移动8位字节
{
readdata3<<=1; //每次左移一位
CLK=0; //时钟低
_nop_();
readdata3|=QH; //先接收高位
CLK=1; //时钟高,上升沿下一个数据移出
_nop_();
}
data1=readdata1; //返回接收字符
data2=readdata2;
data3=readdata3;
}
void main()
{
XD_74hc165_Readdata();
while(1)
{
P2=data1; //显示
P3=data2;
P0=data3;
}
}
[attach]3[/attach]
-
-
165.rar
74.45 KB, 下载次数: 29, 下载积分: 黑币 -5
作者: 骚年 时间: 2017-4-8 09:37
有没有级联图
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |