单片微型计算机原理与接口技术 髙锋版 课后答案第4章(4)

2021-09-24 13:39

SJMP $

END

例如:(2OH)=03H,(3OH)=41H,(31H)=42H,(32H)=43H,(5OH)=41H,(51H)= 42H,(52H)=43H。两个字符串均为“ABC"。

执行结果:F0=0

【4—1 5】已知经A/D转换后的温度值存在4 0 H中,设定温度值存在4 1 H中。要求编写控制程序,当测量的温度值大于(设定温度值+2℃)时,从P 1.0引脚上输出低电平;当测量的温度值小于(设定温度值一2℃)时,从P 1.0引脚上输出高电平;其他情况下,P 1.0引脚输出电平不变(假设运算中C中的标志不会被置1)。加上必要的伪指令,并对源程序加以注释。

【答】程序如下:

ORG 0000H

AJMP MAIN

ORG ‘0020H

MAIN: .

MOV B,41H ;设定的温度值

MOV A.B

ADD A,#02H

MOV B,A ;设定温度值+2℃

MOV A,40H ;测量的温度值

CLR C

SUBB A,B

JNC LOWER ;测量的温度值>(设定温度值+2℃),转LOWER子程序,使P1.0引脚上输出低电平

MOV B,41H ;设定的温度值

MOV A,B

DEC A

DEC A .

MOV B,A ;设定温度值一2℃

MOV A,40H ;测量的温度值

CLR C

很难找到

SUBB A,B

JC HIGH ;测量的温度值<设定温度值-2℃,转HIGH子程序,使P1.0引脚上输出高电平

SJMP $ ;都不是,则P1.0引脚上输出不变

LOWER: CLR P1.0

SJMP $

HIGH: SETB P1.0 ’

SJMP $

END

【4—1 6】80C51单片机从内部RAM的31H单元开始存放一组8位带符号数,字节个数存放在30H中。请编写程序统计出其中正数、0和负数的数目,并把统计结果分别存入20H、21H和22H三个单元中。加上必要的伪指令,并对源程序加以注释。

【答】程序如下:

LENGTH EQU 30H ;数据长度

DATA_ADR EQU 31H ;数据首地址

POS_NUM EQU 20H ;正数个数

ZERO_NUM EQU 21H ;0个数

NEG_NUM EQU 22H ;负数个数

ORG 0000H

AJMP MAIN ,

ORG 0030H

MAIN: MOV POS_NUM,#0 ;计数单元初始化为0

MOV ZERO_NUM,#0

MOV NEG_NUM,#0

MOV R1,#LENGTH ;数据长度

MOV R0,#DATA_ADR ;数据首地址

LOOP: MOV A,@R0 .

JB ACC.7,INC_NEG ;符号位为1,该数为负数,跳转加1

CJNE A,#0,INC_POS

INC ZERO_NUM ;该数为0,0个数加1

AJMP L00P1

INC NEG:INC NE~_NUM ;负数个数加1

AJMP LOOPl .

INC_POS:INC POS_NUM ;该数为正数,正数个数加1

LOOPl: INC R0 ;判断统计是否结束

DJNZ R1,LOOP

END

例如:已知(30H)=08H,31H单元起存放数据为00H,80H,7EH,6DH,2FH,34H, EDH,FFH。

执行结果:(20 H)=04 H,(21 H)=01H,(22H)=03 H。

【4-17]两个10位的无符号二一十进制数,分别从内部RAM的40 H单元和50H单元开始存放。请编程计算该两个数的和,并从内部RAM的60 H单元开始存放。加上必要的伪指令,并对源程序加以注释。

【答】10位的无符号二~十进制数,占5字节,每个字节存放一个压缩BCD码(2位)。

很难找到

ORG 0000H

AJMP MAIN

0Re 0030H

MAIN: MOV R7,#05H ;十位(5字节)计数

MOV R0,#40H ;被加数首址

MOV R1,#50H ;加数首址

MOV R2,#60H ;和数首址

CLR C ;清C标志位

ADDB: MOV A,@R0

ADDC A,@R1

DA A ;二一十进制调整

MOV B,R0 ;保护被加数地址

MOV 20H, R2

MOV R0,20H

MOV @R0,A ;存和

MOV R2,20H ;恢复和数地址

MOV R0,B ;恢复被加数地址

INC R0 ;三个地址指针均加1

INC R1

INC R2

DJNZ R7,ADDB ;多字节加未结束,则循环

HERE: SJMP HERE

END

注意:寄存器间接寻址只针对R0和R1,所以存和时不能使用指令“MOV@R2,A”。 例如:

40 H~44 H内容为78 H,10 H,10 H,10 H,10 H

5O H~54 H内容为42 H,10 H,10 H,10 H,10 H

1 0 1 0 1 0 1 0 7 8

即BCD数 +1 0 1 0 1 0 1 0 4 2

2 0 2 0 2 0 2 1 2 0

运行结果:6O H~64 H单元中的数为20 H,21 H,20 H,20 H,20 H。

【4-18】编写子程序,实现4位非压缩BCD码数转换为二进制数,加上必要的伪指令,并对源程序加以注释。

【答】程序如下:

ORG OOH

0000 0130 AJMP MAIN

0RG 30H

0030 752006 MAIN: MOV 20H,#06H ;4位BCD数为6553

0033 7521 05 MOV 21H,#05H

0036 752205 MOV 22H,#05H

0039 752303 MOV 23H,#03H

003C 7820 MOV R0,#20H ;高位地址指针

003E 7A03 MOV R2,#3 ;循环(n一1)次,n为BCD码位数

0040 1144 ACALL BCDB

很难找到

0042 0142 AJMP $

………………..

;转换原理:假设4位BCD码为a3 a2 a1 a0,即a3×103+a2×102 + al X 101+a0×100 ;二进制值:((a3 X 1 0+a2)X 10+a1)X 10+a0

;4位非压缩BCD码数转换为二进制数子程序

0044 CODO BCDB:PUSH I:'SW ;现场保护

0046 COEO PUSH ACC

0048 COFO PUSH B

004A 7BOO MOT R3,#00H ;设R3中的初始值为b1

004C E6 MOT A,@RO

004D FC MOV R4,A ;BCD码千位a3送R4

004E EC LOOP: MOT A,R4 ;以下()H表示高8位,()L表示低8位 004F 7 5FOOA MOT B,#1 0

0052 A4 MUL AB ;R4 X 10,设(R4×l0)L=b2,(R4 X 10)H=b3

0053 FC MOV R4,A ;将R4×10后的低8位送到R4中

单片微型计算机原理与接口技术 髙锋版 课后答案第4章(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:解读Autorun.inf文件病毒

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: