MOV R4, #00H LK3: MOV DPTR, #7F01H
MOV A, R2 MOVX @DPTR, A INC DPTR INC DPTR MOVX A, @DPTR JB ACC.0, LONE MOV A, #00H AJMP LKP LONE: JB ACC.1, LTWO
MOV A, #08H AJMP LKP LKP: ADD A, R4
PUSH ACC LK4: ACALL DSP8155
ACALL KS1 JNZ LK4 POP ACC NEXT: INC R4
MOV A, R2 JNB ACC.7, KND RL A MOV R2, A AJMP LK3 KND: AJMP KEY1 KS1: MOV DPTR, #7F01H
MOV A, #00H MOVX @DPTR, A INC DPTR INC DPTR MOVX A, @DPTR CPL A ANL A, #0FH RET
DSP8155: MOV DPTR, #7F00H MOV A, #00000011B
MOVX @DPTR, A DISP1: MOV R0, #7EH MOV A, #80H LOOP: MOV R2, A
MOV DPTR, #7F01H MOVX @DPTR, A MOV A, @R0 MOV DPTR, #PTRN MOVC A, @A+DPTR MOV DPTR, #7F02H MOVX @DPTR, A CALL D1MS DEC R0 MOV A, R2 CLR C RRC A JC PASS AJMP LOOP PASS: RET D1MS: MOV R7, #02H DMS: MOV R6, #0FFH
46
; 指向8155命令寄存器
; 设定PA口、PB口为基本输出方式; 输出命令字
; 指向缓冲区末地址
; 扫描字,PA7为1,从左至右扫描 ; 暂存扫描字 ; 指向8155的PA ; 输出位选码
; 读显示缓冲区一字符 ; 指向段数据表首地址 ; 查表,得段数据 ; 指向8155的PB ; 输出段数据 ; 延时1ms ; 调整指针 ; 读回扫描 ; 清进位标志 ; 扫描字右移 ; 结束
; 继续显示 ; 返回
; 延时1ms子程序
PTRN:
DJNZ DJNZ RET DB DB DB …… END
R6, $
R7, DMS
0C0H, 0F9H, 0A4H, 0B0H, 99H …… ……
; 段数据表
17.设计一个用8155控制32个按键的键盘接口电路。编写程序实现以下功能:用8155定时器定时,每隔2s读一次键盘,并将读出的键值存入8155片内RAM以20H开始的单元中。 解:
硬件连接电路如图6.17所示。8155控制口的口地址为:7F00H;PA口地址:7F01H;PB口地址:7F02H;PC口地址:7F03H。片内RAM地址:7E00H~7EFFH。定时器低位地址:7F04H;定时器高位地址:7F05H。