设 计 用 纸
设计思想
我们要设计的是运算器电路,我们的设计思路是(1)将19做为被加数送到P1口,通过8个Led灯显示30秒,闪烁3次。(2)将26做为加数送到P1口,通过8个Led灯显示灯显示30秒,闪烁3次。(3)把19和26送到累加器中求和,并且将和送到P1口,通过8个Led灯显示灯显示30秒,闪烁3次。(4)把程序状态字PSW送到P1口显示30秒,闪烁3次。(5)显示完毕后跳转到主程序循环显示。
沈 阳 工 程 学 院
5
设 计 用 纸
设计流程图
开 始 显示被加数 延时/闪烁
显示 加数 延时/闪烁 求和并显示 延时/闪烁 显示状态字 延时 沈 阳 工 程 学 院
6
设 计 用 纸
设计程序及主要说明
org 0000h ljmp main org 0030h
main:
;===================================(1) mov a,#19H cpl a
mov p1,a ;在8个Led灯上显示19H这个数 acall delay ;延时,这里需要延时时间长些. acall delay ;延时 acall delay ;延时
;=======================================(2) mov r1,#3 ;给r1初始值,3表示闪烁3次。 loop:
mov p1,#0ffh ;8个Led灯都熄灭. acall delay ;延时
mov p1,a ;在8个Led灯上显示19H这个数 acall delay ;延时
djnz r1,loop ;r1减去1后不等于0,就是让程序回到loop:下面的指令处开始执行。
沈 阳 工 程 学 院
7
设 计 用 纸
=======================================(3) mov a,#26H cpl a
mov p0,a ;在8个Led灯上显示26H这个数 acall delay ;延时,这里需要延时时间长些. acall delay ;延时 acall delay ;延时
;=======================================(4) mov r1,#3 ;给r1初始值,3表示闪烁3次。 loop2:
mov p1,#0ffh ;8个Led灯都熄灭. acall delay ;延时
mov p1,a ;在8个Led灯上显示26H这个数 acall delay ;延时
djnz r1,loop2 ;r1减去1后不等于0,就是让程序回到loop2:下面的指令处开始执行.
;=======================================(5) mov r0,#19H ;将立即数19H送寄存器r0 mov a, #26H;将立即数26H送累加器a add a,r0:将r0与a的内容相加,结果在a cpl a ;将a的值取反
沈 阳 工 程 学 院
8
设 计 用 纸
mov p1,a ;将累加器a的值送P1口。 acall delay acall delay acall delay
;=======================================(6) ljmp main 指令延时子程序. delay:mov r5,#20 dl1:mov r4,#0E2H dl2:mov r3,#0FFH dl3:djnz r3,dl3 djnz r4,dl2 djnz r5,dl1 ret end
沈 阳 工 程 学 院
9