#include <reg52.h>
sbit LOAD=P1^6; //用P1^6控制SH/LD管腳
sbit CLR=P1^7; //用P1^7控制CLR
//----------------------------------------------------------------------
// 函數(shù)名稱:UART_init()
// 功能說(shuō)明:串口初始化,設(shè)定串口工作在方式0
//----------------------------------------------------------------------
void UART_init(void)
{
SCON =0x10; //沒(méi)串行口方式0,允許接收,啟動(dòng)接收過(guò)程
ES=0; // 禁止串口中斷
}
//----------------------------------------------------------------------
// 函數(shù)名稱:PA()
// 輸出參數(shù):返回由并口輸入的數(shù)據(jù)
// 功能說(shuō)明:接收八位串行數(shù)據(jù)
// 函數(shù)名稱:PA_out()
// 輸入?yún)?shù):PA_data,需要從74LS164并行口輸出的數(shù)據(jù)
// 功能說(shuō)明:發(fā)送八位串行數(shù)據(jù)至并口
//----------------------------------------------------------------------
unsigned char PA(void)
{
unsigned char PA_data;
LOAD=0; //當(dāng)P1.6輸出低電平,74LS165將并行數(shù)據(jù)置入寄存器中
LOAD=1; //當(dāng)P1.6輸出高電平,74LS165將并行數(shù)據(jù)置入寄存器中
UART_init(); //74LS165工作在時(shí)鐘控制下的串行移位狀態(tài)
While(RI==0); //循環(huán)等待 RI=0;
PA_data=SBUF;
return PA_data; //返回并行輸入的數(shù)據(jù)
}
void PA_out(unsigned char)
{
CLR =0; //并口輸出清零
CLR =1; //開(kāi)始串行移位
UART_init(); //74LS165工作在時(shí)鐘控制下的串行移位狀態(tài)
While(TI==0); //循環(huán)等待
TI=0;
SBUF=PA_data;
}
|