将74HC165并行口健状态信号串行输入,再串行输出至74HC164,控制164并行口LED亮暗,要求LED亮暗状态与按健开合状态一致。
#include<reg51.h>//包含访问sfr库函数reg51.h
sbit P25=P2^5;//定义P25为P2.5
sbit P26=P2^6;//定义P26为P2.6
sbit P27=P2^7;//定义P27为P2.7
void main(){//主函数
unsigned char i,s;//定义循环序号i,串行数据暂存器s
unsigned long t;//定义延时参数t
SCON=0;//置串行口方式0,禁止接收
ES=0;//禁止串行中断
while(1){//无限循环,不断读取键值,输出键信号
for(i=0;i<8;i++){//165串行输入
P25=0;P25=1;//先锁存165并行口数据,再允许串行移位操作
P26=0;//控制输入的两或门开,选通165发送TXD、接收RXD信号
REN=1;//80C51允许并启动串行接收
while(RI==0);//等待串行接收完毕
REN=0;//串行接收完毕,禁止接收
RI=0;//清接收中断标志
P26=1;//控制输入的两或门关,禁止165发送TXD、接收RXD信号
s=SBUF;)//键状态数据暂存s
for(i=0;i<8;i++){//164串行输出
P27=0;//控制输出的两或门开,选通164发送TXD、RXD信号
SBUF=s;//串行发送键状态数据
while(TI==0);//等待串行发送完毕
TI=0;//串行发送完毕,清发送中断标志
P27=1;}//控制输出的两或门关,禁止164发送TXD、RXD信号