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

* 27463: 键盘程序请教?

   guest 
guest发表的帖子 

 键盘程序请教?
现在要在P1口接一八位拔动开关,要求相应位拔则延时在原(10秒)的基础上增加或减少延时时间,P1。0——P1。3拔上则为增加时间,P1。4——P1。7拔上为减少时间,思路为有拔上则相应位放一个十进制数1,然后高四和低四比较,是增加的多还是减少的多,再和10比较,最后结果放R5,子程序是一个1秒的延时程序,延时是看R5里是多少,决定循环多少次。自己编的程序如下,但有很多错,小弟也是第一次学,请高手指教,谢谢
KEY:  MOV  P1, #0FFH       ;置输入状态
      MOV  A,  P1          ;读
      CPL  A               ;取反
      ANL  A,  #0FH        ;屏蔽高四位
      JZ   KL
      LCALL  DELAY         ;调用延时去抖动
      JB  P1.0, KEY0       ;有键按下则执行相应命令
K1:   JB  P1.1, KEY1
K2:   JB  P1.2, KEY2
K3:   JB  P1.3, KEY3
     AJMP  KL
KEY0:MOV  30H, #01         ;有键按下相应位加1
     AJMP K1
KEY1:MOV  31H, #01
     AJMP K2
KEY2:MOV  32H, #01
     AJMP K3
KEY3:MOV  33H, #01
     MOV  A,   #00H
     MOV  A,   #30H
     ADD  A,   #31H
     ADD  A,   #32H
     ADD  A,   #33H
     MOV R4,   A           ;加数放R4
     AJMP KL
KL:  MOV  A,   P1
     CPL  A
     SWAP A                ;高低四位交换
     ANL  A,   #0FH        ;屏蔽高四位
     JZ  GOJMP
     LCALL DELAY           ;调用延时去抖动
     JB  P1.4, KEY4        ;有键按下则转相应命令
K5:  JB  P1.5, KEY5
K6:  JB  P1.6, KEY6
K7:  JB  P1.7, KEY7

KEY4:MOV 34H,  #01
     AJMP K5
KEY5:MOV 35H,  #01
     AJMP K6
KEY6:MOV 36H,  #01
     AJMP K7
KEY7:MOV 37H,  #01
     MOV A,    #00H
     MOV A,     34H
     ADD A,     35H
     ADD A,     36H
     ADD A,     37H        ;减数放A
     CLR C                 ;清C(比较)
     SUBB A,R4             ;A-R4
     JC   JIA              ;A  <0则跳JIA
     MOV 21H,  A           ;交换
     MOV A,   #10
     SUBB A, 21H
     AJMP JG
JIA: MOV 20H, A
     MOV A,   R4
     MOV R4,  20H
     SUBB A,  R4
JG:  MOV R5,  A            ;结果放R5
GOJMP:AJMP   KEY 

DELAY:  MOV    R7,#200     ;10ms延时子程序
D1:  MOV    R6,#123
 NOP
D2:     DJNZ   R6,D2
 DJNZ   R7,d1
 RET
 END


请高手帮我,98dian@163.com
QQ:107437596
谢谢!!!

发表时间:2003年4月25日22:26:15

  
回复该帖

本主题共有 3 帖,分页:>>>>>该主题的所有内容[3]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  27470.[详细]以上应当不是你的全部程序吧
摘要:另有一不明:你的拔动开关是不是实现功能如同按键,而不是拔码开关?......(64字)
- [huzimax][937次] 2003年4月26日

  27490.[详细]SUB_NUM:MOV A,P1 &nbs..
摘要:SUB_NUM:MOV A,P1               CJNE ......(358字)
- [红心J][923次] 2003年4月26日

[上一篇帖子]:MAX187MAX187使用SPI总线结构,你根据你自身的硬件电路分配3根线接入就可以了,不过建议你
[下一篇帖子]:再看一下小弟的vhdl程序!各位高手,请看一下小弟的vhdl(maxplus2下)的程序,我实现 B