|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
CMD_8279 XDATA 0bF01H ;8279命令字、状态字地址
DATA_8279 XDATA 0bF00H ;8279读写数据口的地址
KeyCount DATA 50H
ORG 0000H
LJMP STAR
ORG 0100H
STAR: MOV SP,#60H
ACALL INIT8279 ;初始化子程序
MOV KeyCount,#0
STAR1: CALL SCAN_KEY ;键扫描
JNC STAR1 ;没有按键
XCH A,KeyCount
INC A
CJNE A,#9,STAR2
MOV KeyCount,#0
ACALL INIT8279_1 ;8个数码块全有字符显示后,再按键,清除显示
SJMP STAR1
STAR2: XCH A,KeyCount
CALL KEY_NUM ;键值转换为键号
MOV DPTR,#LED_TAB ;字型码表
MOVC A,@A+DPTR
CALL WRITE_DATA
SJMP STAR1
;8279初始化
INIT8279: MOV DPTR,#CMD_8279 ;可编程时钟设置,设置分频系数(20分频)
MOV
MOVX A,#34H
@DPTR,A
CLR A ;8*8字符显示,左边输入, 外部译码键扫描方式
MOV DPTR,#CMD_8279
MOVX @DPTR,A
INIT8279_1: CALL CLEAR ;清显示
MOV A,#90H ;从最后一个数码管开始移位显示
MOVX @DPTR,A
RET
CLEAR: MOV A,#0DEH ;清除命令
MOV DPTR,#CMD_8279
MOVX @DPTR,A
WAIT1: MOVX A,@DPTR
JB ACC.7,WAIT1 ;显示RAM清除完毕吗?
RET
SCAN_KEY: MOV DPTR,#CMD_8279
MOVX A,@DPTR ;读状态
READ_FIFO: ANL A,#7
JZ NO_KEY ;是否有键按下
READ: MOV A,#40H
MOVX @DPTR,A ;读FIFO RAM
MOV DPTR,#DATA_8279
MOVX A,@DPTR
SETB C ;有键
SCAN_KEY1: RET
NO_KEY: CLR C ;无键按下,清CY
SJMP SCAN_KEY1
KEY_NUM: ANL A,#3FH
RET
WRITE_DATA: MOV DPTR,#DATA_8279
MOVX @DPTR,A
RET j
LED_TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 080H,90H,88H,83H,0C6H,0A1H,86H,8EH
END
|
|