74LS165 C51程序(并入傳出芯片)
單片機(jī)
//-------------------------------------庫函數(shù)聲明,管腳定義--------------
#include
sbita7=ACC^7;
sbitsimuseri_CLK=P1^6;//用P1^6模擬串口時(shí)鐘
sbitsimuseri_DATA=P1^5;//用P1^5模擬串口數(shù)據(jù)
//----------------------------------------------------------------------
//函數(shù)名稱:in_simuseri
//輸入?yún)?shù):無
//輸出參數(shù):data_buf
//功能說明:8位同步移位寄存器,將simuseri_DATA串行輸入的數(shù)據(jù)按從低位到高位
//保存到data_buf
//-----------------------------------------------------------------------
charin_simuseri(void)
{
chari;
chardata_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);
}
//-------------------------------------庫函數(shù)聲明,管腳定義----------------------------------------
sbitdrive74165_LD=P1^7;
//用P1^7控制SH/LD管腳
//-----------------------------------------------------------------------
//函數(shù)名稱:PAs
//輸入?yún)?shù):無
//輸出參數(shù):PAs_buf,返回并行輸入74LS165的數(shù)據(jù)
//功能說明:直接調(diào)用,即可讀取并行輸入74LS165的數(shù)據(jù),不需要考慮74LS165的
//工作原理
//-----------------------------------------------------------------------
charPAs(void)
{
charPAs_buf;
drive74165_LD=0;并行置入數(shù)據(jù)
drive74165_LD=1;開始串行移位
PAs_buf=in_simuseri();
Return(PAs_buf);
}