//-------------------------------------库函数声明,管脚定义----------------------------------------
#include <reg52.h>
sbit a7=ACC^7;
sbit simuseri_CLK=P1^6; //用P1^6模拟串口时钟
sbit simuseri_DATA=P1^5; //用P1^5模拟串口数据
//-------------------------------------------------------------------------------------------------------
// 函数名称: in_simuseri
// 输入参数:无
// 输出参数:data_buf
// 功能说明:8位同步移位寄存器,将simuseri_DATA串行输入的数据按从低位到高位
// 保存到data_buf
//--------------------------------------------------------------------------------------------------------
char in_simuseri(void)
{
char i;
char data_buf;
i=8;
do
{
ACC=ACC>>1;
for(;simuseri_CLK==0;) ;
a7=simuseri_DATA;
for(;simuseri_CLK==1;) ;
}
while(--i!=0);
simuseri_CLK=0;
data_buf=ACC;
return(data_buf);
}
//-------------------------------------库函数声明,管脚定义----------------------------------------
sbit drive74165_LD=P1^7;
//用P1^7控制SH/LD管脚
//-------------------------------------------------------------------------------------------------------
// 函数名称:PAs
// 输入参数:无
// 输出参数:PAs_buf,返回并行输入74LS165的数据
// 功能说明:直接调用,即可读取并行输入74LS165的数据,不需要考虑74LS165的
// 工作原理
//--------------------------------------------------------------------------------------------------------
char PAs(void)
{
char PAs_buf;
drive74165_LD =0; 并行置入数据
drive74165_LD =1; 开始串行移位
PAs_buf= in_simuseri();
Return(PAs_buf);
}