登录
首页 单片机论坛
回帖 发帖
正文

主题:键盘设计问题[求助]

点击:1069 回复:4

有哪位指点一二:
硬件连接:(4X4的键盘:行接P1.7~P1.4;列接P1.3~P1.0)(如图)
程序:(简化后的)
  ORG 0000H
  LJMP MAIN
  ORG 0003H
  RETI
  ORG 000BH
  RETI
  ORG 0013H
  LJMP SSSS
  ORG 001BH
  RETI
  ORG 0100H
MAIN:          
  CLR RS0
  CLR RS1
  MOV P1,#0FH
  MOV SP,#5FH
  CLR IT1   ;
  SETB EX1  ;
  SETB EA   ;
  HERE:JMP HERE
SSSS:     ;——————————————键盘中断——————————————
  PUSH ACC
  PUSH PSW
  CLR EA   ;终止外1中断
  SETB RS0
  CLR RS1
  LCALL DALAY10   ;抖动
  MOV A,P1        ;
  ANL A,#0FH      ;屏蔽高四位
  XRL A,#0FH      ;
  JZ EXIT         ;延时后,P1.3~P1.0为高,按入无效
  MOV R2,#01111111B   ;扫描码
LOOP:        
  MOV P1,R2
  MOV A,P1
  MOV P2,A
NOLOOP:
WAIT:
  MOV P1,#0FH
  MOV A,P1
  ANL A,#0FH
  XRL A,#0FH
  JNZ WAIT
  LCALL DALAY10
  SJMP RETURN
EXIT:
RETURN:
  CLR IE1
  SETB EA
  POP PSW
  POP ACC
  RETI
DALAY10:           ;延时10毫秒
  SETB RS0
  SETB RS1
  MOV R6,#13H
LLOP:
  MOV R7,#0F9H
LLOP1:
  DJNZ R7,LLOP1
  DJNZ R6,LLOP
  SETB RS0
  CLR RS1
  RET
  END
当按下第二行第一列的按键时:
检测 P2 为11001110B。如果扫描码是11101111B时,此时的P2口不是应该为1110111B的吗?(按下不同的键,P2都会有规律的变化)
请问有什么原因会造成这种后果???
附件
最后修改:2006-6-1 15:24:33
06-06-01 15:20
很不错,请问三位LED接串行口需要什么元件
06-07-20 16:57
不是很懂,就不说了
06-07-20 17:09
不是很懂,就不说了
06-07-20 17:11
有些不对,程序暂且没看,用P1做的键盘,按键时P2怎么会变化?再有就 是扫描键盘时,列要置1,行置0,有键按下时,P1口的编码只有列的余下3个口为1,P1的另5个口应为0,而不是你上面说的那种编码
最后修改:2006-7-22 17:46:54
06-07-22 17:36

工控新闻

更多新闻资讯