DIY编程器网

标题: 利用8279实现显示扫描自动化 [打印本页]

作者: liyf    时间: 2012-1-16 16:57
标题: 利用8279实现显示扫描自动化

                    ???? 1、实验内容
  在外接的键盘功能板上,按数字键,数码管上应相应能显示按下的数字,按下功能键,能相应执行其它功能程序。
  2、实验原理图




  3、实验说明
  利用8279可以实现对键盘/显示器的自动扫描,以减轻CPU负担,具有显示稳定,程序简单,不会出现误动作等特点。本实验利用8279实现显示扫描自动化。
  4、实验步骤
  ①将DVCC实验系统上J8插座与键盘显示板用扁平电缆相连。
  ②将KEY区D0-D7用8芯排线连到BUS2区XD0-XD7上。
  ③将KEY区WR、RD、ALE分别连到BUS3区XWR、XRD、ALE上。
  ④KEY区A0连到BUS1区XA0上。
  ⑤KEY区RST连到MP区SP上。
  ⑥KEY区KCS连到SELET区的Y3上。
  ⑦在DVCC实验系统上按F2键进入仿真1态,即显示“P.....”,从起始地址08F0H开始连续执行程序。
  ⑧功能板上数码管显示P,按下功能板上的数字键,数码管上显示相应的数字,按下功能键,数码管上显示相应的0字循环(LAST键)、1字循环(NEXT键)、2字循环(EXEC键)。
  5、程序
  程序清单:
  ORG???? 08F0H
  HA7S:??? MOV??? SP,#53H
  MOV???? DPTR,#0B001H
  MOV??? A,#00H
  MOVX??????? @DPTR,A
  MOV??? A,#32H
  MOVX??????? @DPTR,A
  MOV??? A,#0DFH
  MOVX??????? @DPTR,A
  HA7S1:? MOVX??????? A,@DPTR
  JB???????? ACC.7,HA7S1
  MOV??? DPTR,#0B000H
  MOV??? A,#0C8H
  MOVX??????? @DPTR,A
  INC????? DPTR
  MOV??? A,#80H
  MOVX??????? @DPTR,A
  HA7S2:? MOV??? 30H,#80H
  MOV??? 31H,#40H
  HA7S3:? MOV??? DPTR,#0B001H
  MOVX??????? A,@DPTR
  ANL???? A,#07H
  CJNE???? A,#00H,HA7S4
  AJMP??? HA7S3
  HA7S4:? MOV??? DPTR,#0B000H
  MOVX??????? A,@DPTR
  MOV??? B,A
  MOV??? R1,#00H
  MOV??? DPTR,#KEYTAB
  HA7S5:? MOV??? A,#00H
  MOVC? A,@A+DPTR
  CJNE??? A,B,HA7S6
  AJMP?? HA7SA
  HA7S6:? INC????? DPTR
  INC????? R1
  MOV??? A,R1
  JB???????? ACC.4,HA7S7
  AJMP?? HA7S5
  HA7S7:? MOV??? R1,#00H
  MOV??? DPTR,#KEYTAB1
  HA7S8:? MOV??? A,#00H
  MOVC??????? A,@A+DPTR
  CJNE??? A,B,HA7S9
  AJMP?? HA7SC
  HA7S9:? INC????? DPTR
  INC????? R1
  MOV??? A,R1
  JNB????? ACC.2,HA7S8
  AJMP?? HA7SD
  HA7SD: LJMP??? HA7S
  HA7SA: MOV??? A,30H
  MOV??? DPTR,#0B001H
  MOVX??????? @DPTR,A
  MOV??? A,R1
  MOV??? R0,31H
  MOV??? @R0,A
  INC????? 31H
  MOV??? DPTR,#CDATA
  MOVC??????? A,@A+DPTR
  MOV??? DPTR,#0B000H
  MOVX??????? @DPTR,A
  INC????? 30H
  MOV??? A,30H
  CJNE??? A,#88H,HA7SB
  LJMP??? HA7S2
  HA7SB: AJMP?? HA7S3
  HA7SC: MOV??? DPTR,#KJPADDR
  MOV??? A,R1
  RLA
  ADD???? A,R1
  JMP????? @A+DPTR
  KJPADDRJMP?????? LOOP0
  LJMP??? LOOP1
  LJMP??? LOOP2
  KEYTAB: DB 0C1H,0C8H,0C9H,0D0H,0D8H,0E0H,0C2H,0CAH,0D1H,0D9H
  DB 0DAH,0C3H,0CBH,0D2H,0D3H,0DBH
  KEYTAB1B 0E3H,0E2H,0E1H
  CDATA: DB 0CH,9FH,4AH,0BH,99H,29H,28H,8FH,08H,09H,88H,38H
  DB 6CH,1AH,68H,0E8H
  LOOP0: MOV??? R5,#0CH
  LJMP???? DISPC
  LOOP1: MOV??? R5,#9FH
  LJMP??? DISPC
  LOOP2: MOV??? R5,#4AH
  DISPC:? MOV??? R6,#80H
  DISPC1: MOV?? A,R6
  MOV??? DPTR,#0B001H
  MOVX??????? @DPTR,A
  MOV??? A,R5
  MOV??? DPTR,#0B000H
  MOVX??????? @DPTR,A
  MOV??? R2,#20H
  LCALL??????? DELAY
  MOV??? A,#0FFH
  MOVX??????? @DPTR,A
  INC????? R6
  CJNE??? R6,#88H,DISPC1
  AJMP?? DISPC
  DELAY: PUSH?? 02H
  DELAY1: PUSH??????? 02H
  DELAY2: PUSH??????? 02H
  DELAY3: DJNZ??????? R2,DELAY3
  POP????? 02H
  DJNZ??? R2,DELAY2
  POP????? 02H
  DJNZ??? R2,DELAY1
  POP????? 02H
  DJNZ??? R2,DELAY
  RET
  END
            




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2