MOV A,R6 MOV B,R3
MUL AB ;R3*R6 ADD A,R4 XCH A,R6 XCH A,B ADDC A,R5 MOV R5,A
MOV PSW.5,C ;存CY MOV A,R2
MUL AB ;R2*R6 ADD A,R5 MOV R5,A CLR A MOV ACC.0,C
MOV C,PSW.5 ;加上次加法的进位 ADDC A,B MOV R4,A SJMP $ END
实验八 多分支程序
一、实验目的
掌握汇编语言的编程。
二、实验内容
编写程序,根据送入的数据转移运行;了解利用堆栈延时的方法。
三、程序框图
四、实验步骤
在CPU内部数据区20H中分次送入00、01、02、03,每次运行程序后,观察数码管上数字循环情况。
五、思考
修改程序,使数码管显示自动循环显示0、1、2、3。
六、电路介绍
字形口FFDCH 字位口/键扫口FFDDH 键入口FFDEH
10
共阴极8段码,a—h接D0—D7,为1灭,为0亮
11
键扫显示控制电路
ORG 0A10H MEMS: MOV A,20H
MOV DPTR,#KKKK ;散转首址 RL A ;(20)*2
JMP @A+DPTR ;转到(20)*2+DPTR KKKK: AJMP MEMSP0 AJMP MEMSP1 AJMP MEMSP2 SJMP MEMSP3
MEMSP0: MOV 20H,#0C0H ;0字循环 LJMP SOX0
MEMSP1: MOV 20H,#0F9H ;1字循环 LJMP SOX0
MEMSP2: MOV 20H,#0A4H ;2字循环 LJMP SOX0
12
MEMSP3: MOV 20H,#0B0H ;3字循环 LJMP SOX0
;--------------------------------------------- SOX0: MOV A,20H MOV R0,#0DCH MOV R1,#0DDH MOVX @R0,A MOV A,#01H SOX1: MOVX @R1,A MOV R2,#20H LCALL DELY
RL A ;显示子程序 SJMP SOX1
;--------------------------------------------- DELY: PUSH 02H DEL2: PUSH 02H
DEL3: PUSH 02H ;延时 DEL4: DJNZ R2,DEL4 POP 02H DJNZ R2,DEL3 POP 02H DJNZ R2,DEL2 POP 02H DJNZ R2,DELY RET
;--------------------------------------------- END
实验九 脉冲计数(定时/计数器实验)
一、实验目的
熟悉8032定时/计数功能,掌握初始化编程方法。
二、实验内容
把定时器0外部输入的脉冲进行计数,并送显示器显示。
三、程序框图
13
四、实验电路
五、实验步骤
P3.4依次接实验台右上角74LS393的T0-T7或单步脉冲输出孔SP,执行程序,观察数码管上计数脉冲的速度及个数。
六、思考
熟悉二进制转十进制的方法;熟悉缓冲区数据的拆分;熟悉显示子程序的显示方法; 修改程序使显示器上可显示到999999个脉冲个数。 ORG 06E0H SE15: MOV SP,#53H MOV TMOD,#05H MOV TH0,#00H
MOV TL0,#00H ;定时计数器初始化 SETB TR0 ;开计数器 LO29: MOV R2,TH0
MOV R3,TL0 ;取出TH0.TL0内容 LCALL ZOY0 ;二转十进制 MOV R0,#79H
14