74LS164 是串行输入并行输出转换电路,串行输入的数据位由 8155 的 PB0 控制,时钟位由
8155 的 PB1 控制输出。写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一
高一低两个电平就可以将数据位移到 74LS164 中,并且实现移位。向显示位选通地址输出
高电平就可以点亮相应的显示位。本实验仪中数据位输出地址为 0e102H,时钟位输出地址
为 0e102H,位选通输出地址为 0e101H。本实验涉及到了 8155 I0/RAM 扩展芯片的工作原
理以及 74LS164 器件的工作原理。
OUTBIT equ 0e101h 位控制口
CLK164 equ 0e102h 段控制口(接 164 时钟位)
DAT164 equ 0e102h 段控制口(接 164 数据位)
IN equ 0e103h 键盘读入口
LEDBuf equ 60h 示缓冲
Num equ 70h 显示的数据
DelayT equ 75h
org 0000h
ljmp Start
LEDMAP: 八段管显示码
db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
Delay: 延时子程序
mov r7, #0
DelayLoop:
djnz r7, DelayLoop
djnz r6, DelayLoop
ret
DisplayLED:
mov r0, #LEDBuf
mov r1, #6 共 6 个八段管
mov r2, #00100000b 从左边开始显示
Loop:
mov dptr, #OUTBIT
mov a, #00h
movx @dptr, a 关所有八段管
mov a, @r0
mov B, #8 送 164,送完一个显示一个,动态显示
DLP: rlc a 依次取出最右边的每一位
mov r3, a
mov acc.0, c
ANL A, #0FDH 将 PB1 置 0
mov dptr, #DAT164 将取出的每一位数据送入 164,用一个脉冲实现(PB1)
movx @dptr, a
mov dptr, #CLK164
orl a,#02h 将 PB1 置 1
movx @dptr, a
anl a,#0fDh 将 PB1 置 0
评论0
最新资源