导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→键盘设计编程[xsz8866]

 *第25544篇: 键盘设计编程

  
楼 主:xsz8866 2004年9月9日16:01
 键盘设计编程
最近有一个键盘难题跟各位大虾请教一下,我公司的硬件是这样设计的,用P00-P03扫描16只键,先是P00-P03跟8D触发器LS373相连,作为键盘扫描线,回送线是通过74LS244跟P00-P03再相连,读取P00-P03状态,LS373和74LS244都有控制线,分别是P26和P27,另外74LS244的输入端电位上拉,我反复调不通,但奇怪的是单步运行通过了,大家一定给指点一下,是线路设计问题呢,还是编程有注意不到的地方,在下多谢了!
  
2楼:金鹏友 2004年9月9日18:45
 你是否采用调用子程序方式,如果是应注意一
你是否采用调用子程序方式,如果是应注意一下返回指令。
  
3楼:xsz8866 2004年9月10日09:36
 我确实没招了,我现在将我的程序附上,万望
我确实没招了,我现在将我的程序附上,万望各位指点以下,我的硬件设计如上帖所述,74LS244由P27控制,低电位有效,LS373由P26控制,高电位有效,别忘了单步运行通过了,另外各个键盘的执行程序大家先不要理会,是我检测程序是否运行的,谢谢!
MAIN:ORG 0
     LCDD EQU P2.4
     LCDM EQU P2.5
     KEYC EQU P2.6
     KEYR EQU P2.7
     AJMP KEY
     ORG 30H

KEY:ACALL INT
    ACALL KSI
    JNZ LK1
    ACALL DIR
    AJMP KEY
INT:CLR LCDD
    CLR LCDM
    CLR KEYC
    SETB KEYR
    RET
KSI:clr p0.0
clr p0.1
clr p0.2
clr p0.3
    SETB KEYC
    NOP
    CLR KEYC
    MOV P0,#0FFH
    CLR KEYR
    NOP
    NOP
    MOV A,P0
    SETB KEYR
    CPL A
    ANL A,#0FH
    RET
LK1:ACALL DIR
    ACALL INT
    ACALL KSI
    JNZ LK2
    ACALL DIR
    AJMP KEY
LK2:MOV R2,#0FEH
    MOV R4,#00H
LK4:ACALL INT
    MOV P0,R2
    SETB KEYC
    nop
    CLR KEYC
    MOV P0,#0FFH
    NOP
    CLR KEYR
    NOP
    NOP
    MOV A,P0
    NOP
    NOP
    SETB KEYR
    JB ACC.0,LONG
    MOV A,#00H
    AJMP LKP
LONG:JB ACC.1,LTWO
     MOV A,#4H
     AJMP LKP
LTWO:JB ACC.2,LTHR
     MOV A,#8H
     AJMP LKP
LTHR:JB ACC.3,NEXT
     MOV A,#0CH
     AJMP LKP
LKP:ADD A,R4
    PUSH ACC
LK3:ACALL DIR
    ACALL KSI
    JNZ LK3
    POP ACC
    MOV R5,A
    RL A
    ADD A,R5
    MOV DPTR,#TABLE
    JMP @A+DPTR
NEXT:INC R4
     MOV A,R2
     JNB ACC.3,KND
     RL A
     MOV R2,A
     AJMP LK4
KND:AJMP KEY
TABLE:LJMP PRG0
      LJMP PRG1
      LJMP PRG2
      LJMP PRG3
      LJMP PRG4
      LJMP PRG5
      LJMP PRG6
      LJMP PRG7
      LJMP PRG8
      LJMP PRG9
      LJMP PRG10
      LJMP PRG11
      LJMP PRG12
      LJMP PRG13
      LJMP PRG14
      LJMP PRG15
DIR:MOV R6,25
DIR1:MOV R7,200
     DJNZ R7,$
     DJNZ R6,DIR1
     RET

PRG0:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG1:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG2:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG3:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG4:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG5:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG6:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG7:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG8:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG9:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG10:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG11:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG12:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG13:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG14:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY
PRG15:CLR P2.0
     SETB P2.0
     LCALL DIR
     CLR P2.1
     SETB P2.1
     LCALL DIR
     CLR P2.2
     SETB P2.2
     AJMP KEY

  
4楼:hualch 2004年9月13日08:43
 用C写好了,不要搞得这么复杂!
用C写好了,不要搞得这么复杂!
  
5楼:zse0019819 2007年1月2日10:41
 怎么看啊
好好啊

>>>>>>对该主题发表你的看法

本主题贴数5,分页: [第1页]


[上一篇主题]:protel

[下一篇主题]:关于51汇编的BCD乘法运算?