l示例6—扫描与判断—(单端口)位扫描与字节(多端口)扫描
这是一个常用程序段—
子程序—
标准程序,通过
端口扫描而获得输入数据或控制输出数据,达到节省位或字节的目的—节约硬件资源。 关于扫描,可以从位及其取反实现流水灯着手来理解。可以通过移位实现流水灯—扫描。可以通过字节数据(01H,02H,04H,08H,10H,20H,40H,80H—阳极管)的端口发送实现流水灯—扫描。可以通过数据表(
01H,02H,04H,08H,10H,20H,40H,80H—阴极管)实现流水灯—扫描。可以通过循环跳转实现流水灯—扫描。扫描注意
入比出查—获得输入要比较数据、发送输出要检查出口 扫描获取端口字节 扫描输出
位移动产生动态效果(
01、
02、
04、
08、
10、
20、
40、
80),可以用字节表 扫描输出字符字节,通过
延时可以变换字符以便造成数字进位效果
ORG 0000H
ART: dbuf
equ
30h
;置存储区首址 temp
equ
40h
;置缓冲区首址
org 00h
mov 30h,#2 ;存入数据
mov 31h,#0
mov 32h,#1
mov 33h,#0
mov 34h,#7
mov 35h,#1
mov r0,#dbuf
mov r1,#temp
mov r2,#6
;六位显示器
mov dptr,#segtab ;段码表首地址 dp00:
mov a,@r0
;取要显示的数据
movc a,@a+dptr ;查表取段码
mov @r1,a
;段码暂存
inc r1
inc r0
djnz r2,dp00
disp0:
mov r0,#temp
;显示子程序
mov r1,#6
;扫描6次
mov r2,#01h
;从第一位开始 dp01:
mov a,@r0