51单片机 按键扫描 输入学号 数码管显示 汇编程序

  • 格式:doc
  • 大小:45.50 KB
  • 文档页数:8

按键扫描显示
STC89C52|
;====================================================
====

;微机原理实验课 【实验一】

;按键扫描显示学号
;====================================================
====

ORG 0000H
AJMP START ;跳过中断入口地址
ORG 0100H

START: MOV 30H,#16;清除显存
MOV 31H,#16
MOV 32H,#16
MOV 33H,#16
MOV 34H,#16
MOV 35H,#16
MOV 36H,#16
MOV 37H,#16
MOV DPTR,#TAB ;段选码表首地址
CLR P1.4
AJMP MAIN

MAIN:
CALL DISPLAY ;调用显示函数

CALL KEY ;按键扫描函数
AJMP MAIN ;循环回去

KEY: MOV P2,#0FH
MOV R5,P2
CJNE R5,#0FH,KEYSCAN
RET

KEYSCAN:
MOV A,R5
MOV P2,#0F0H
MOV R5,P2
ORL A,R5
MOV R6,A
KEY0: CJNE R6,#0EEH,KEY1
MOV R7,#16
AJMP KEYOUT
KEY1: CJNE R6,#0EDH,KEY2
MOV R7,#7
AJMP KEYOUT
KEY2: CJNE R6,#0EBH,KEY3
MOV R7,#4
AJMP KEYOUT
KEY3: CJNE R6,#0E7H,KEY4
MOV R7,#1H
AJMP KEYOUT
KEY4: CJNE R6,#0DEH,KEY5
MOV R7,#0
AJMP KEYOUT
KEY5: CJNE R6,#0DDH,KEY6
MOV R7,#8
AJMP KEYOUT
KEY6: CJNE R6,#0DBH,KEY7
MOV R7,#5H
AJMP KEYOUT
KEY7: CJNE R6,#0D7H,KEY8
MOV R7,#2H
AJMP KEYOUT
KEY8: CJNE R6,#0BEH,KEY9
MOV R7,#16
AJMP KEYOUT
KEY9: CJNE R6,#0BDH,KEYA
MOV R7,#9
AJMP KEYOUT
KEYA: CJNE R6,#0BBH,KEYB
MOV R7,#6H
AJMP KEYOUT
KEYB: CJNE R6,#0B7H,KEYC
MOV R7,#3H
AJMP KEYOUT
KEYC: CJNE R6,#07EH,KEYD
MOV R7,#0DH
AJMP KEYOUT
KEYD: CJNE R6,#07DH,KEYE
MOV R7,#0CH
AJMP KEYOUT
KEYE: CJNE R6,#07BH,KEYF
MOV R7,#0BH
AJMP KEYOUT
KEYF: CJNE R6,#077H,KEYOUT
MOV R7,#0AH
KEYOUT: MOV 37H,36H
MOV 36H,35H
MOV 35H,34H
MOV 34H,33H
MOV 33H,32H
MOV 32H,31H
MOV 31H,30H
MOV 30H,R7
AJMP KEYOUT1

KEYOUT1:
CALL DISPLAY
MOV P2,#0FH
MOV R5,P2
CJNE R5,#0FH,KEYOUT1
RET

DISPLAY:
MOV R0,#30H ;数据缓冲区首址
MOV R1,#01H ;初始位选码
MOV R2,#8 ;数码管个数
LOOP:
MOV A,@R0 ;取待显示数据

MOVC A,@A+DPTR ;查段选码

SETB P1.3 ;换锁存器
CLR P1.2

MOV P0,#0FFH
MOV P0,A ;送出段选码

SETB P1.2 ;换锁存器
CLR P1.3

MOV P0,R1 ;送出位选码
CLR P1.2 ;关锁存器
CLR P1.3
LCALL DELAY
INC R0 ;修改缓冲取地址指针
MOV A,R1
RL A
MOV R1,A
DJNZ R2,LOOP
RET
;
DELAY: MOV R4,#13
K1: MOV R3,#100
DJNZ R3,$
DJNZ R4,K1
RET

ORG 0400H
/*********************共阳数码管码表********************/
TAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H
DB 82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
/*TAB:
DB 3fH,06H,5bH,4fH,66H,6dH
DB 7dH,07H,7fH,6fH,77H,7CH,39H,5EH,79H,71H,00H*/
END