课后答案

余年寄山水
871次浏览
2021年01月28日 18:45
最佳经验
本文由作者推荐

师徒结对小结-被动语态讲解

2021年1月28日发(作者:生命要继续)
2.1
1

MSC

51
单片机内部由哪些功能 部件组成,各有什么功能?

答:以
80C51
单片机为例,其内部功能部件有:

控制器:是对 取自程序存储器中的指令进行译码,在规定的时刻发出各种操作所需的控
制信号,完成指令所规定的功能 ;

运算器:根据控制器发来的信号,执行算术逻辑运算操作;

存储器:包括程序存储和数据存储器;

定时器计数器:
2

16
位定时器
/
计数器,可对机器周期计数,也可对外部输入脉冲计
数;< br>
中断系统:可响应三个内部中断源和两个外部中断源的中断请求;

输入输出接口:
4

8
位并行口和一个全双工串行口;

2.5
5
.通常的微机系统存储器结构有哪几种?
MCS-51
单 片机存储器属于哪一类?

CS-51
可寻址多大空间?

答:通常的微机系统存储器结构有两种结构,
即哈佛结构和冯诺依曼结构
(
也叫普林斯 顿
结构
)

MCS-51
单片机存储器属于哈佛结构,
MC S-51
可寻址空间是两个
64KB
,即
64KB
的程序存储空间和
64KB
的数据存储空间。

2.6
6

片内< br>RAM
中低
128
个单元划分为哪三个主要部分?各部分的主要功能是什么?< br>
答:
片内
RAM
中低
128
个单元划分为三个部分 :

①工作寄存器区(
00H-1FH
),四组,每组
8
个 ,可作用工作寄存器切换使用;

②可位
寻址与位地址区(
20H-2FH< br>),
16B
,位地址为
00H-7FH
,用作为按位寻址的空间;
③用

RAM
区(
30H-7FH
),
80 B
,用作普通
RAM
单元或堆栈。

3.3
3
.编程将内部
RAM

20H-- 30H
单元内容清零。

解:设一个片内
RAM
指针
R0< br>,先指向首地址
20H
,通过累加器
A
清零,然后采用间接
寻 址方式依次将
A
中的零值传送到指针所指的片内
RAM
单元,
每传送 一个字节,
地址指针

1
,直到达到地址为
30H
或达到计 数器规定的
17
个字节为止。

程序
1


MOV R0,#20H
设地址指针初值

CLR A ;
累加器清
0
CONT: MOV @R0,A ;

0
指针所指单元

INC R0 ;
地址指针加
1
CJNE R0,#31H,CONT ;
指针未超过终点则继续

SJMP $$
暂停

程序
2


MOV R0,#20H ;
设地址指针初值

CLR A
累加器清
0
MOV R7,#17
计数器赋初值,从
20H

30H

17
个字节

CONT: MOV @R0,A ;

0

针所指单元

INC R0 ;
地址指针加
1
DJNZ R7, CONT ;
计数器减
1
,非
0
,则继续

SJMP $$ ;
暂停


1
4

编程查找内部
RAM

32H

41H
单元中是否有
0AAH
这个数据 ,
若有这一数据,


50H
单元置为
0FFH
, 否则将
50H
单元清零。

解:设一个片内
RAM
指针R0
,先指向首地址
32H
,比较
@R0

#0AAH
,若相等,则
退出循环,给
50H
单元赋
0FFH
,若不相 等,则
R0

1
为继续比较下一个字节做准备,直
到达到地址为41H
或达到计数器规定的
16
个字节为止还没找到,则给
50H
单元赋
00H
程序
1


MOV R0,#32H ;
设地址指针初值

CONT: CJNE @R0,#0AAH,NEXT;
比较查找值与指针所指单元的值,不相等转移

MOV A,#0FFH
相等,则准备好要赋的标志值
0FFH SJMP DOWN
转存到保存结果处

NEXT: INC R0 ;
修改地址指针

CJNE R0,#42H,CONT ;
若指针未越过终点,则继续

MOV A,#00H ;
查找失败,
则将
00H
存入结果标志单元

DOWN: MOV 50H,A
将比较结果
标志存入
50H
单元

SJMP $$
暂停

END
程序
2


MOV R7,#16
计数器赋初值,
20H

30H

16
个字节

MOV R0,#32H
设地址指针初


CONT: CJNE @R0,#0AAH,NEXT
比较查找值与指针所指单元的值,不相等转移

MOV A,#0FFH
相等,则准备好要赋的标志值
0FFH SJMP DOWN
转存到保存结果处

NEXT: INC R0 ;
修改地址指针

DJNZ R7,CONT ;
计数器减
1
,非
0
,则继续

MOV A,#00H
查找失败,
则将
00H
存入结果标志单元

DOWN: MOV 50H,A ;
将比较结果
标志存入
50H
单元

SJMP $$ ;
暂停

END
6

已知
A=83H

R0=17H

(17H)=34H

写出下列程序段执行之后的< br>A
中的内容。

ANL
A,#17H
ORL 17H,A
XRL A,@R0
CPL A
END
答:

ANL A,#17H A=03H
ORL 17H,A (17H)=0011 0100


0000 0011=0011 0111 XRL A,@R0 A= 0000 0011


0011 0111 =0011 0100 CPL A ;A=1100 1011

第四章

4
.指出下面程序的语法错误:

#include
main(){
a=C



2
int a=7,C
delay(10)
void delay();{
cgar i


for(i=O; i<=255; ”++”);

}
答:

#include
main(){
a=C


//a

C
必须先定义才可使用

int a=7,C //
缺分号,应该提在使用前说明

delay(10) //
延时子程序必须先定义,或先有函数原型说明

void delay();{
//
作为函数定义,有函数定义不能嵌套的问题,

//
即不能在一个函数内定义另一个函数,而且
“{”
前不应有分号

//
作为函数原型说明,应该放在函数调用之前
,
且其后不应该接函数体
cgar i


//
字符型
应该是
unsigned char
for(i=O; i<=255; ”++”);// ”++”
应改成
i++
}
//
主函数没有结束,缺
”}”

5
.定义变量
a

b

c
,其中
a
为内部
RAM
的可位寻址区的字符变量,
b
为外部数据存
储区浮点型变量,
c
为指 向

int


xdata
区的指针。

答:

char bdata a;
float xdata b;
int xdata *c;
6

编程将
8051
的内部 数据存储器
20H
单元和
35H
单元的数据相乘,
结果存到外部数据
存储器中
(
任意位置
)


解:方法一:用嵌入式汇编语言实现

#include
void main()
{ #pragma asm
MOV A,20H
MOV B,35H
MUL AB
MOV DPTR,#1234H
MOVX @DPTR,A
INC DPTR
MOV A,B
MOVX @DPTR,A
#pragma endasm
}
方法二:单用
C
语言编程实现

#include

3

师徒结对小结-被动语态讲解


师徒结对小结-被动语态讲解


师徒结对小结-被动语态讲解


师徒结对小结-被动语态讲解


师徒结对小结-被动语态讲解


师徒结对小结-被动语态讲解


师徒结对小结-被动语态讲解


师徒结对小结-被动语态讲解