您现在所在的是:

单片机论坛

回帖:4个,阅读:1012 [上一页] [1] [下一页]
924
zhou.g
文章数:9
年度积分:50
历史总积分:924
注册时间:2006/5/8
发站内信
发表于:2006/6/1 15:20:00
#0楼
有哪位指点一二:
硬件连接:(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编辑过]
902
hchangliang
文章数:1
年度积分:50
历史总积分:902
注册时间:2006/7/20
发站内信
发表于:2006/7/20 16:57:00
#1楼
很不错,请问三位LED接串行口需要什么元件
983
gk520
文章数:70
年度积分:50
历史总积分:983
注册时间:2006/7/15
发站内信
发表于:2006/7/20 17:09:00
#2楼
不是很懂,就不说了
983
gk520
文章数:70
年度积分:50
历史总积分:983
注册时间:2006/7/15
发站内信
发表于:2006/7/20 17:11:00
#3楼
不是很懂,就不说了
994
weiwei00
文章数:42
年度积分:50
历史总积分:994
注册时间:2006/7/22
发站内信
发表于:2006/7/22 17:36:00
#4楼
有些不对,程序暂且没看,用P1做的键盘,按键时P2怎么会变化?再有就 是扫描键盘时,列要置1,行置0,有键按下时,P1口的编码只有列的余下3个口为1,P1的另5个口应为0,而不是你上面说的那种编码


[此贴子已经被作者于2006-7-22 17:46:54编辑过]

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004