标题: HD7279A键盘检测汇编程序 [打印本页]

作者: heicad    时间: 2014-6-10 04:30
标题: HD7279A键盘检测汇编程序
ORG  0000H
   lJMP  START                  ;检测到按键并显示
   ORG  0100H
BIT_COUNT    DATA   07FH
TIMER       DATA   07EH
TIMER1      DATA   07DH
TEN       DATA   07CH
DATA_IN     DATA   020H
DATA_OUT    DATA   021H
DAT   BIT P1.2     ;HD7279A DATA P1.2
KEY   BIT P1.3    ;HD7279A KEY P1.3
CS  BIT P1.0   ;HD7279A CS P1.4
CLK    BIT P1.1     ;HD7279A CLK P1.5
START:   MOV  SP,#2FH    ;
          MOV TIMER,#50  ; 25MS
START_DELAY: MOV  TIMER1,#255
START_DELAY1:DJNZ TIMER1,START_DELAY1
  DJNZ TIMER,START_DELAY
  MOV  P1,#70H
MOV 29H,#0A4H ; ( )复位
   CALL SEND
SETB CS   ; CS
MAIN:    mov  c,p1.4
       JC     MAIN    ;
MOV 29H,#15H ;
  CALL SEND
  CALL RECEIVE
DISP:MOV 29H,#0C8H
         ACALL SEND
     MOV 29H,28H
     ACALL SEND
     SJMP DISP
SEND:CLR P1.7
     MOV R3,#08H
     ACALL LONG
SEND_LOOP:MOV C,29H.7
          MOV P1.6,C
          SETB P1.5
          ACALL SHORT
          CLR P1.5
          ACALL SHORT
          MOV A,29H
          RL A
          MOV 29H,A
          DJNZ R3,SEND_LOOP
          CLR P1.6
          RET
;*******************************************
;  HD7279
;*******************************************
RECEIVE: MOV BIT_COUNT,#8   ; =8
SETB DAT   ; P1.2(DATA)

  CALL LONG  ;
RECEIVE_LOOP:  SETB CLK   ; CLK
   CALL SHORT  ;
MOV A,28H  ;
  RL A
  MOV 28H,A
   MOV C,DAT   ;
  MOV 28H.0,C
CLR CLK   ; CLK
  CALL SHORT
  DJNZ BIT_COUNT,RECEIVE_LOOP; 8
CLR DAT  ; DAT ( )
  RET
;*******************************************
;*******************************************
LONG: MOV  TIMER,#25    ; 50uS
DELAY_LOOP: DJNZ  TIMER,DELAY_LOOP
   RET
SHORT: MOV  TIMER,#4    ; 8uS
SHORT_LP: DJNZ TIMER,SHORT_LP
   RET
   END





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1