您现在的位置: 主页 > MCU > 单片机技术应用 > 一个 51 单片机的编程题 -
本文所属标签:
为本文创立个标签吧:

一个 51 单片机的编程题 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]
在51单片机的片内数据存储器20H和21H单元中,分别存放了数据9和2,编写程序计算两者之差以及乘积。差,存放到30H里,并通过发光二极管的点亮个数显示出来。乘积,存放到31H里,并通过数码管显示出来。8只

在51单片机的片内数据存储器20H和21H单元中,分别存放了数据9和2,编写程序计算两者之差以及乘积。

本文引用地址: http://www.21ic.com/app/mcu/201806/764352.htm


差,存放到30H里,并通过发光二极管的点亮个数显示出来。

乘积,存放到31H里,并通过数码管显示出来。


8只发光二极管连接在P1口。

数码管为共阴极,其段选端a、b、......g、dp,依次连接在单片机的P2.0~P2.7;公共端连接于P3.0和P3.1。


要求画出电路图,并写出程序。


按照要求,画出了电路图,图中的LED和数码管,已经显示出了7和18:



程序编写如下:


ORG0000H

LJMPSTA

ORG0030H

STA:

MOV20H,#9;11

MOV21H,#2;9

;在这里设置数字。要求如下:

;1.20H中的数字,必须大于21H中的数字,但是不能超过8。

;2.20H中的数字和21H中的数字,乘积不能超过99,因为下面采用了十进制数字的显示。

;-----------------------

MOVA,20H

CLRC

SUBBA,21H

MOV30H,A;差

;-----------------------

MOVA,20H

MOVB,21H

MULAB

DAA

MOV31H,A;乘积

;-----------------------

MOVA,#255

MOVR2,30H

L1:

CLRC

RLCA

DJNZR2,L1

MOVP1,A;以个数显示差

;-----------------------

MOVDPTR,#TAB

L2:

MOVA,31H

MOVB,#10

DIVAB

MOVCA,@A+DPTR

MOVP2,A

CLRP3.0

CALLDELAY

SETBP3.0


MOVA,B

MOVCA,@A+DPTR

MOVP2,A

CLRP3.1

CALLDELAY

SETBP3.1


SJMPL2

;-----------------------

DELAY:

DJNZR7,$

DJNZR7,$

RET


TAB:DB3FH,06H,5BH,4FH;显示字符存放表

DB66H,6DH,7DH,07H

DB7FH,6FH,77H,7CH

DB39H,5EH,79H,71H

;-----------------------

END

;=======================================




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > 一个 51 单片机的编程题 -
 

"一个 51 单片机的编程题 -"的相关文章

网站地图

围观()