超级版主
 
主题
帖子
积分14436
阅读权限150
注册时间2008-11-13
最后登录1970-1-1
在线时间 小时
|
本帖最后由 倪大德 于 2010-5-4 03:08 编辑
手中一套一直没时间装,无法即时验证显示出现的问题。
只好根据原理图改写了一个显示测试程序。(没在实物上运行,可能有错,仅供参考!)
;*****74LS164接口和变量定义
CP BIT P2.4 ;74LS164-1,2
DSS BIT P2.5 ;74LS164-8
ORG 0H
JMP MAIN
ORG 30H
MAIN: MOV SP,#70H
MOV 5FH,#4
MOV 5EH,#3
MOV 5DH,#2
MOV 5CH,#1
D1: CALL D_LS164
MOV R5,#100 ;根据实际需要,改变显示刷新时间。
CALL DELAY
JMP D1
DELAY: MOV R6,#50
DD: MOV R7,#100
DJNZ R7,$
DJNZ R6,DD
DJNZ R5,DELAY
RET
;===============================
; 74LS164显示子程序
;
; 显示缓冲区:5CH-5FH
; 数据从左至右移入
;===============================
D_LS164 : MOV R4,#04H ;4个显缓
MOV R0,#5FH ;显缓首址
D_1: MOV A,@R0 ;送显缓地址
ADD A,#07H ;偏移量
MOVC A,@A+PC ;查表
MOV @R0,A ;数据送入显缓
DEC R0 ;送下一个数据
DJNZ R4,D_1 ;没完继续
CALL L_S64 ;写入164
RET
DB 18H,7EH,94H,34H,72H,31H,11H,7CH,10H,30H,0F0H,99H,0F7H ,0ffh;0-9 “0”“C”
; ;*****数据写入164
L_S64: CLR CP
MOV R4,#04H ;4位
MOV R0,#5FH ;首址
L1: MOV R1,#08H ;一个数据8位
MOV A,@R0 ;取数据
L2: RRC A ;移入
MOV DSS,C ;送数据位
SETB CP ;产生移位时钟
NOP
CLR CP
DJNZ R1,L2 ;没完继续
DEC R0 ;取下一显缓数据
DJNZ R4,L1 ;再移
RET
END
164.rar
(4.56 KB, 下载次数: 178)
|
|