【求助】74HC165的操作,只能控制一个按键,其他的控制不了,搞不明白

jianhui0126 2007-11-09 03:01:44
#define PL P2_3//SHIFT/LOAD引脚
#define CLOCK P2_4
#define SETBSC P2_5//OUTPUT QH引脚
read74hc165m()
{uchar basic,c;
PL=1;
nop();
PL=0;//使能端为低电平时8位数据进入寄存器
nop();
PL=1;//高电平数据锁存,同时165数据自动移1位
basic=0;
basic=basic<<1;
if(SETBSC) basic|=1;//当输出为1时,该位置1,0时不变,其他7位不变,这样使得最后的basic就为寄存器里面的8位数据
for(c=0;c<7;c++)
{
CLOCK=0;
CLOCK=1;
basic=basic<<1;
if(SETBSC)
basic|=1;
}
return basic;
}
void main(void){
while(1)
{

a=read74hc165m();//读取165的数据

if((a>>3)==0x00)//判断第4位(右移3位),若为0说明该键按下,显示值加1}//改成a>>2就不行了
...全文
164 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbing7 2007-11-12
  • 打赏
  • 举报
回复
if (a & 0x04)
lbing7 2007-11-12
  • 打赏
  • 举报
回复
if((a> > 3)==0x00)//判断第4位(右移3位),若为0说明该键按下,显示值加1}//改成a> > 2就不行了

掩码不对...呵呵

if (a & 0x02)这才是判断这一位,呵呵

对于位操作,LZ可以再想想

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧