3片74HC165级联,读取按键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3片74HC165级联,读取按键相关的知识,希望对你有一定的参考价值。
static Read74hc165( void )
unsigned int i, j ;
unsigned int KeyAddress[3];
unsigned int ReadReturn;
PL = 0 ; //锁存并行数据开始
IN = 1 ; //准备读串行数据(也起到延时作用)
PL = 1 ; //锁存并行数据结束
for( j = 0 ; j < 3 ; j++ )
for( i = 8 ; i >= 1 ; i-- )
CLK = 0 ; //时钟拉低
if( IN == 0 )break ; //有键按下,数据为1
CLK = 1 ; //时钟拉高
KeyAddress[ j ] = i ; //有键压下,则i的取值在1~8之间,无键压下,i = 0
//////////////////////////////////////////////////////////////////按正常理解,这段是 第一片 74HC165优先读取
for( j = 0 ; j < 3 ; j++ )
if( KeyAddress[ j ] == 0 ) ReadReturn = 0x00 ;
else
ReadReturn = KeyAddress[ j ] + j * 8 ;
break ;
//****************************************************************按正常理解,这段是 第三片 74HC165优先读取
for( j = 2 ; j >=0 ; j-- ) 此段代码是反过来
if( KeyAddress[ j ] == 0 ) ReadReturn = 0x00 ;
else
ReadReturn = KeyAddress[ j ] + j * 8 ;
break ;
//************************************************************************
return ReadReturn;
前面两段每次只执行一段
但是测试的,第一片优先读取是正确的,但是第三片优先读取测试的时候就不对了?求解???
哪些变量需重新整理?
基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间
以上是关于3片74HC165级联,读取按键的主要内容,如果未能解决你的问题,请参考以下文章