导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→硬件:请高手帮帮忙[smuxt1979]

 *第7685篇: 硬件:请高手帮帮忙

  
楼 主:smuxt1979 2003年1月15日09:49
 硬件:请高手帮帮忙
  我现在遇到了一个有关单片机键盘的问题:要求当按了一个键后在一两秒钟内再多次按
此键,单片机只响应一次。原程序采用的是定时中断,如果采用延时会影响其它的按键。
请各位高手帮帮忙。
  
2楼:billminux 2003年1月15日12:27
 改用查询的方式不就行了!
  
3楼:smuxt1979 2003年1月15日14:30
 你能说得具体些吗?谢谢!
  
4楼:红心J 2003年1月15日14:37
 参考
;T0中断(20mS)键盘处理
MF_KEY1    EQU XXH    ;存储KEY1键状态
MT_KEY1    EQU XXH-1    ;存储KEY1键延时时间
......

      ORG 0000H
     LJMP MAIN

     ORG 000BH
     CLR ET0
     LJMP A_T0

            ORG 0030H
MAIN:     ......
     MOV TMOD,#01H
     MOV TH0,#XXH    ;20mS时间常数
     MOV TL0,#XXH
     SETB ET0
     SETB TR0
     SET EA
     ......

A_T0:     PUSH PSW
     PUSH ACC
     MOV TH0,#XXH    ;重置20mS时间常数
     MOV TL0,#XXH

A_KEY1:     MOV A,MF_KEY1
     CJNE A,#4,A_KEY1_0
     DJNZ MT_KEY1,A_KEY2
         MOV MF_KEY1,#0
     SJMP A_KEY2
A_KEY1_0:CJNE A,#0,A_KEY1_1
         MOV MF_KEY1,#1
     KEY1键按下转A_KEY2
     MOV MF_KEY1,#0
     SJMP A_KEY2         
A_KEY1_1:CJNE A,#1,A_KEY1_2
     MOV MF_KEY1,#2
     KEY1键按下转A_KEY2
     MOV MF_KEY1,#0
     SJMP A_KEY2
A_KEY1_2:CJNE A,#2,A_KEY1_3
     MOV MF_KEY1,#3
     KEY1键弹起转A_KEY2
     MOV MF_KEY1,#2
     SJMP A_KEY2
A_KEY1_3:CJNE A,#3,A_KEY1_4
     MOV MF_KEY1,#4
     KEY1键弹起转A_KEY5
     MOV MF_KEY1,#2
     SJMP A_KEY2
A_KEY1_4:MOV MF_KEY1,#0
     SJMP A_KEY2
A_KEY1_5:MOV MT_KEY1,#100    ;延时20mS*100=2S
         LCALL KEY1键处理子程序

A_KEY2:     MOV A,MF_KEY2
     CJNE A,#4,A_KEY2_0
     DJNZ MT_KEY2,A_KEY3
         MOV MF_KEY2,#0
     SJMP A_KEY3
A_KEY2_0:CJNE A,#0,A_KEY2_1
         MOV MF_KEY2,#1
     KEY2键按下转A_KEY3
     MOV MF_KEY2,#0
     SJMP A_KEY3         
A_KEY2_1:CJNE A,#1,A_KEY2_2
     MOV MF_KEY2,#2
     KEY2键按下转A_KEY3
     MOV MF_KEY2,#0
     SJMP A_KEY3
A_KEY2_2:CJNE A,#2,A_KEY2_3
     MOV MF_KEY2,#3
     KEY2键弹起转A_KEY3
     MOV MF_KEY2,#2
     SJMP A_KEY3
A_KEY2_3:CJNE A,#3,A_KEY2_4
     MOV MF_KEY2,#4
     KEY2键弹起转A_KEY5
     MOV MF_KEY2,#2
     SJMP A_KEY3
A_KEY2_4:MOV MF_KEY2,#0
     SJMP A_KEY3
A_KEY2_5:MOV MT_KEY2,#100    ;延时20mS*100=2S
         LCALL KEY2键处理子程序

A_KEY3:     ......

......

A_KEY_END:POP ACC
      POP PSW
      SETB ET0
      RETI


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

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


[上一篇主题]:硬件:Atmel CPLD编程

[下一篇主题]:硬件:急!显示电路出了问题