单片机全部作业答案--09机制

更新时间:2024-03-24 21:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章

1-5 答:至少可存放211个二进制数,每个二进制数有4位,地址范围是00000000000B-11111111111B,即为0000H-07FFH。

1-6 答:

程序计数器PC的作用是用来存放将要执行的指令所在的存储器地址,PC有自动加1功能,从而实现程序的顺序执行,在8位机中PC通常有二进制16位。

1-12 答:(3)11110010B 若为原码,则表示负数,其真值为:-(1x 26+1x 25+1x 24+0x 23+0x 22+1x 21+0x 20)= -114。

若其为反码,则对应的原码为:10001101,真值为:-13。 若其为补码,其对应的原码是10001110,计算过程如下: 先求出反码,再求补码 :10001101 + 1 =10001110 相应的 真值为-14。 1-18 (1)

答:X=+48, Y=+38 ;

[X ]补=00110000。 [Y]补=00100110 [X ]补+[Y]补=01010110=86D

OV?C7?C8?0?0?0

(3)答:X=-34, Y=+87;

[X ]补=11011110。 [Y]补=01010111 [X ]补+[Y]补=00110101B=53D

OV?C7?C8?1?1?0无溢出,结果正确。

第二章 2-4 答:

MCS-51单片机中执行程序的地址放在PC寄存器中,是16位二进制数,最大寻址范围是0000H-0FFFFH,PC是一个特殊功能寄存器。

2-6

答: 内部RAM单元的低128字节划分为3个主要部分,分别是 1:通用寄存器区 (00H-1FH)

此区域重要是作为CPU就近存取数据使用,可提高单片机的运算速度。共32字节,分成四组;00-07H为0组,08-0F为1组,10H-17H,18-1FH为2和3组。同时只能使用其中一组,具体使用哪一组,可通过设置PSW寄存器中的RS0,RS1来选定。 2:位寻址区(20-2FH)

共16个单元,每个单元的每一位可以单独寻址,总共128个位(从00H编号到7FH)这些位地址可以按该位在相应单元的位置来寻址,如20H的0为,可表示为20H.0,也可以直接用00H表示。

3:用户寄存器区(30H-7FH)

可以用来存放用户数据,前两个区域虽然也可以存放用户数据,但通常要作为位寻址或通用寄存器用。 2-11

答: SP表示堆栈指针(Stack Pointer),有8位,作用是用来指示栈顶的位置,系统复位后,SP=07H,为避免使用通用寄存器和位地址区,通常将其重新赋值为30H开始到7FH的区域中某个值(如50H)。 2-13

答: MCS-51的寻址范围是0000000000000000B-1111111111111111B,写成16进制为:0000H-0FFFFH,可最多配置64KB的外部RAM和外部ROM。

3-4 (1)MOV A, #30H (其中30H代表立即数)

(2)MOV 30H,@R1 (其中30H代表直接地址) 3-5 (1)

MOV A, #2; A=2 (74 02)

MOV R1, #030H; R1=30H (79 30) MOV@R1,A; (30H)=A=2; (F7) MOV 35H, R1; (35H)=R1=30H (8935) XCH A, R1; A=30H(00110000B)H, R1=2; (C9H) PSW(Program Status Word)( Cy,,,,,,,,,,, P)=00H P:当A中1的个数为奇数时, P为1,否则为0 3-6 (3) MOV P1,25H

或者: MOV A, 25H;

MOV P1,A

(7)从外部ROM区域读数据的指令只有:MOVC A,@A+DPTR或者是MOVC A, @A+PC

读写外部RAM 单元(需要一个16位地址)的指令也只有

两条:

MOVX A, @DPTR;以及MOVX @DPTR, A

MOVX A, @Ri (i=0,1)以及 MOVX @Ri, A(使用前应该把P2口赋值成高八位地址。Ri指向低八位地址。、 MOV A, #0

MOV DPTR, #4000H; MOVC A,@A+DPTR MOVX @DPTR, A 或者 MOV A, #0

MOV DPTR, #4000H; MOVC A,@A+DPTR MOV R0, #00H; MOV P2, #40H; MOVX @R0, A

3-9 (3) MOV A, 50H;XRL A, #E0H MOV 50H, A;

4)MOV A, 50H ORL A, #F0H; ANL A, #F0H MOV 50H, A

3-12 (37FEH)ACALL 3A00H(双字节) (3800H)

1先做:SP=55H (SP)=38H; (54H)=00H 2转向:PC=3A00H

ACALL 3A00H

(3A00H)SUBT:

第四章作业

4-2 设一个加数放在50-52H单元中,另一个加数放在53-55H中,进位放在位地址00中,试编程实现多字节加法程序设计(P121) 答: 程序如下:

ORG 1000H PUSH PSW CLR C

MOV R0,50H;加数指针 MOV R1,53H;被加数指针 MOV R2, #3;字节长度

ADDD10: MOV A, @R0

ADDC A, @R1 MOV @R0, A INC R0 INC R1

DJNZ R2, ADD10:是否结束?否则继续循环 MOV 00, C END;

4-3 试用除法指令将20H单元的两位BCD码变成ASCII码后存

入21H和22H单元 答:

ORG 1000H

MOV A, 20H MOV B,#16; DIV AB

ADD A,#30H商即等于高四位 MOV 21H,A;

MOV A,B;余数等于低四位 ADD A, #30H MOV 22H,A END

4-4 从20H 单元开始存放一组带符号数,其个数已在1FH单元

中。要求统计出大于0,小于0和等于0的个数并存于ONE、

MOV TL1,#30H; SJMP ENDINT

COUNTER:

INC A; change to timer MOV TMOD,#10H

MOV TH1,#0D8H MOV TL1,#0F0H ENDINT:

6-14已知8051单片机的fosc=12MHz,用T/C1定时,试编写由P1.0和P1.1分别输出周期为2 ms和500us的方波的程序; 答:参看例6-2。

定时250=500/2 us,每次时间到,在中断服务程序里可将P1.1SETB TR1; RETI

取反。

每隔4次中断,将P1.0取反。 TMOD=0000000=00H,

机器周期=12/fosc=1us

计数个数=250us/1us=250; 定时初值C=213-250=1F 06H

第七章 7-4扩展三片2764EPROM和一片6264RAM芯片

可接地

注意图上圆圈部分是ROM和RAM扩展时的控制线不同之处 ,PSEN连接到ROM芯片的OE,而RD,WR连接到RAM芯片的OE和WR端。

各芯片的存储单元地址从左到右分别是:

1号2764:(0000-1FFFH),2号(2000-2FFFH),3(3000-3FFFH)4号为6264(4000-4FFFH)。

实际上由于6264是RAM,扩展时,它与2764EPROM占用不同的地址空间,可以直接将其CS端接地,即(注意最右端的红色圆圈),此时1号2764:(0000-1FFFH),2号(2000-2FFFH),3(3000-3FFFH)而6264的地址范围也是0000-1FFFH。

另外,当芯片较少,可以不使用74HC138译码器,直接将P2.7,P2.6等高地址线连接到芯片的片选端CS,参考第七章PPT。

本文来源:https://www.bwwdw.com/article/9268.html

Top