单片机原理及应用第二版课后答案.docx
《单片机原理及应用第二版课后答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用第二版课后答案.docx(38页珍藏版)》请在冰豆网上搜索。
单片机原理及应用第二版课后答案
作业答案0-1
绪论
1.单片机是把组成微型计算机的各功能部件即(微处理器(CPU))、(存储器(ROM和RAM))、(总线)、(定时器/计数器)、(输入/输出接口(I/O口))及(中断系统)等部件集成在一块芯片上的微型计算机。
2.什么叫单片机?
其主要特点有哪些?
解:
将微处理器(CPU)、存储器(存放程序或数据的ROM和RAM)、总线、定时器/计数器、输入/输出接口(I/O口)、中断系统和其他多种功能器件集成在一块芯片上的微型计机,称为单片微型计算机,简称单片机。
单片机的特点:
可靠性高、便于扩展、控制功能强、具有丰富的控制指令、低电压、低功耗、片内存储容量较小、集成度高、体积小、性价比高、应用广泛、易于产品化等。
第1章MCS-51单片机的结构与原理
15.MCS-51系列单片机的引脚中有多少根I/O线?
它们与单片机对外的地址总线和数据总线之间有什么关系?
其地址总线和数据总线各有多少位?
对外可寻址的地址空间有多大?
解:
MCS-51系列单片机有4个I/O端口,每个端口都是8位双向口,共占32根引脚。
每个端口都包括一个锁存器(即专用寄存器P0~P3)、一个输入驱动器和输入缓冲器。
通常把4个端口称为P0~P3。
在无片外扩展的存储器的系统中,这4个端口的每一位都可以作为双向通用I/O端口使用。
在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线。
MCS-51系列单片机数据总线为8位,地址总线为16位,对外可寻址空间为64KB。
25.开机复位后,CPU使用的是哪组工作寄存器(R0-Rn)?
它们的地址是什么?
CPU如何确定和改变当前工作寄存器组(R0-Rn)?
解:
开机复位后,CPU使用的是第0组工作寄存器。
它们的地址是00H-07H。
CPU通过对程序状态字PSW中RS1和RS0的设置来确定和改变当前工作寄存器组。
27.MCS-51单片机的时钟周期、机器周期、指令周期是如何定义的?
当主频为12MHz的时候,一个机器周期是多长时间?
执行一条最长的指令需要多长时间?
解:
时钟周期又称为振荡周期,由单片机内部振荡电路OSC产生,定义为OSC时钟频率的倒数。
时钟周期又称为节拍(用P表示)。
时钟周期是时序中的最小单位。
一个状态有两个节拍,
机器周期定义为实现特定功能所需的时间。
MCS-51的机器周期由12个时钟周期构成。
执行一条指令所需要的时间称为指令周期,指令周期是时序中的最大单位。
由于机器执行不同指令所需的时间不同,因此不同指令所包含的机器周期数也不尽相同。
MCS-51的指令可能包括1~4个不等的机器周期。
当MCS-51的主频为12MHz时,一个机器周期为1s。
执行一条指令需要的最长时间为4s。
作业答案2
第2章MCS-51单片机指令系统与汇编语言程序设计
4.假定累加器A中的内容为30H,执行指令1000H:
MOVCA,@A+PC后,把程序存储器(1031H)单元的内容送入累加器A中。
7.指出下列各指令在程序存储器中所占的字节数
(1)MOVDPTR,#1234H3字节
(2)MOVXA,@DPTR1字节
(3)LJMPLOOP3字节
(4)MOVR0,A1字节
(5)AJMPLOOP2字节
(6)MOVA,30H2字节
(7)SJMPLOOP2字节
(8)MOVB,#30H2字节
15.设堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。
执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?
PUSH30H
PUSH31H
POPDPL
POPDPH
MOV30H,#00H
MOV31H,#0FFH
解:
结果为:
61H、62H单元为堆栈单元,其内容已被弹出栈。
(30H)=00H
(31H)=0FFH(DPTR)=2410H (SP)=60H
17.完成以下的数据传送过程
(1)R1的内容传送到R0。
(2)片外RAM20H单元的内容送R0。
(3)片外RAM20H单元的内容送片内RAM20H单元。
(4)片外RAM1000H单元的内容送片内RAM20H单元。
(5)ROM2000H单元的内容送R0。
(6)ROM2000H单元的内容送片内RAM20H单元。
(7)ROM2000H单元的内容送片外RAM20H单元。
解:
(1)R1的内容传送到R0;
MOVA,R1
MOVR0,A
(2)片外RAM20H单元内容送R0;
MOVR1,#20H
MOVXA,@R1
MOVR0,A
(3)片外RAM20H单元的内容送片内RAM20H单元;
MOVR0,#20H
MOVXA,@R0
MOV20H,A
(4)片外RAM1000H单元的内容送片内RAM20H单元;
MOVDPTR,#1000H
MOVXA,@DPTR
MOV20H,A
(5)ROM2000H单元的内容送R0单元;
CLRA
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOVR0,A
(6)ROM2000H单元的内容送片内RAM20H单元;
CLRA
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOV20H,A
(7)ROM2000H单元的内容送片外RAM20H单元。
CLRA
MOVDPTR,#2000H
MOVCA,@A+DPTR
MOVR0,#20H
MOVX@R0,A
19.编程将片内RAM的40H~60H单元中内容送到片外RAM以3000H开始的单元中。
并将原片内RAM数据块区域全部清0。
解:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
MOVR7,#21H
MOVR1,#40H
MOVDPTR,#3000H
LOOP:
MOVA,@R1
MOVX@DPTR,A
MOV@R1,#00H
INCR1
INCDPTR
DJNZR7,LOOP
SJMP$
END
23.设有100个有符号数,连续存放在片外RAM以2000H为首地址的存储区中,试编程统计其中正数、负数、零的个数。
解:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVR2,#100
MOVR3,#00H
MOVR4,#00H
MOVR5,#00H
MOVDPTR,#2000H
LOOP:
MOVXA,@DPTR
CJNEA,#00H,NET1
INCR3
SJMPNET3
NET1:
JBACC.7NET2
INCR4
SJMPNET3
NET2:
INCR5
NET3:
INCDPTR
DJNZR2,LOOP
SJMP$
END
24.试编一查找程序,从外部RAM首地址为2000H、长度为9FH的数据块中找出第一个ASCII码A,将其地址送到20A0H和20A1H单元中。
解:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
MOVDPTR,#2000H
MOVR7,#9FH
LP0:
MOVXA,@DPTR
CJNEA,#41H,LP1
MOVR2,DPL
MOVR3,DPH
MOVDPTR,#20A0H
MOVA,R2
MOVX@DPTR,A
INCDPTR
MOVA,R3
MOVX@DPTR,A
SJMPLP2
LP1:
INCDPTR
DJNZR7,LP0
LP2:
RET
END
另一种方法:
ORG0000H
LJMPSTART
ORG0030H
START:
MOVR0,#9FH
MOVDPTR,#2000H
MOVR1,#00H;R1为DPTR地址的低八位
LOOP:
MOVXA,@DPTR
CJNZA,#65,LOOP1
MOVDPTR,#20A0H
MOVA,R0
MOVX,@DPTR,A;把字符‘A’的低八位地址放到20A0地址中
INCDPTR
MOVA,#20H
MOVX@DPTR,A;把字符‘A’的高八位地址放到20A1地址中
SJMP$
LOOP1:
INCR1
INCDPTR
DJNZRO,LOOP
SJMP$
END
27.编程实现将片外RAM中2400H~2450H单元中的数传送到2500H~2550H单元中。
解:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVR7,#51H
MOVDPTR,#2400H
LOOP:
MOVXA,@DPTR
MOVDPH,#25H
MOVX@DPTR,A
MOVDPH,#24H
INCDPTR
DJNZR7,LOOP
SJMP$
END
另一种方法:
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOV30H,#24H
MOV31H,#00H
MOV32H,#25H
MOV33H,#00H
MOVR2,#51H
LOOP:
MOVDPH,30H
MOVDPL,31H
MOVXA,@DPTR
MOVDPH,32H
MOVDPL,33H
MOVX@DPTR,A
INC31H
INC33H
DJNZR2,LOOP
SJMP$
END
第三章作业答案
6.设(TMOD)=0A5H,则定时器T0的状态是(方式1计数),定时器T1的状态是(方式2定时)。
或
设(TMOD)=0A5H,则定时器T0的状态是(软件控制的16位计数器),定时器T1的状态是(软硬件控制的可自动重装初值的8位定时器)。
27.请写出
为低电平触发的中断系统初始化程序。
解:
为低电平触发的中断系统初始化程序如下:
ORG0000H
LJMPMAIN
ORG0013H
LJMPINTN1
ORG0100H
MAIN:
MOVSP,#60H
SETBEA
SETBEX1 ;开
中断
CLRPX1;令
为低优先级
CLRIT1;令
为电平触发
SJMP$
INTN1:
……
RETI
END
用MOV指令实现:
MOVIE,#84H
ANLIP,#0FBH(或ORLIP,#04H)
ANLTCON,#0FBH
28.说明MCS-51单片机响应中断后,中断服务的入口地址。
解:
中断服务程序的入口地址如下表:
中断源
中断矢量
外部中断0(
)
0003H
定时器T0中断
000BH
外部中断1(
)
0013H
定时器T1中断
001BH
串行口中断
0023H
36.使用一个定时器,如何通过软硬结合方法实现较长时间的定时?
解:
设定好定时器的定时时间,采用中断方式用软件进行溢出次数累计,从而得到较长的定时时间,定时时间=定时器的定时时间×软件累计的溢出次数。
37.利用定时器输出周期为2ms的方波,设单片机晶振频率为6MHz。
试编程实现之。
解:
选用定时器/计数器T0作定时器,工作在方式1,输出为P1.0引脚,2ms的方波可由1ms的高低电平相间隔而成,因而只要每隔1ms对P1.0取反一次即可得到这个方波。
初值的计算如下:
T0=12/(6×106)=2×10-6S
TC=M-T/T0=216-1×10-3/2×10-6=65536-500=65036=FE0CH
当定时器/计数器采用方式0时,初值为:
TC=M-T/T0=213-1×10-3/2×10-6=8192-500=7692=1E0CH,
则真正的16位计数初值为:
F00CH(高8位,低5位)
程序如下:
ORG0000H
LJMPSTART
ORG000BH
LJMPT0INT;T0中断入口
ORG0030H
START:
MOVSP,#60H;初始化程序
MOVTL0,#0CH;T0赋初值
MOVTH0,#0FEH
MOVTMOD,#01H;定时器/计数器0工作于方式1
SETBTR0;启动T0
SETBET0;开T0中断
SETBEA;开总允许中断
SJMP$
T0INT:
PUSHACC
PUSHPSW
CPLP1.0
MOVTL0,#0CH
MOVTH0,#0FEH
SETBTR0;启动T0
POPPSW
POPACC
RETI
END
当采用查询方式时:
兰色字部分应该为:
LP1:
JBCTF0,LP2
SJMPLP1
LP2:
CPLP1.0
MOVTL0,#0CH
MOVTH0,#0FEH
SETBTR0
SJMPLP1
END
48.某异步通信接口按方式3传送,已知其每分钟传送3600个字符,计算其传送波特率。
解:
11(位)×3600(字符/分钟)=39600b/分钟=660b/s(方式3为每个字符11位)。
49.利用8051串行口控制8位发光二极管工作,要求发光二极管每隔1s交替地亮、灭,画出电路图并编写程序。
解:
电路图如下:
程序如下:
ORG0000H
LJMPSTART
ORG0030H
START:
MOVSCON,#00H
MOVA,#0FFH
CLRTI
LP1:
MOVSBUF,A
JNBTI,$
CLRTI
ACALLDELAY
CPLA
SJMPLP1
DELAY:
MOVR7,#8;1s延时程序
D1:
MOVR6,#250
D2:
MOVR5,#248
D3:
DJNZR5,D3
NOP
DJNZR6,D2
DJNZR7,D1
RET
END
另一种方法:
主程序框图如下:
程序如下:
ORG0000H
LJMPSTART
ORG0030H
START:
MOVSCON,#00H
MOVSBUF,#0FFH
SETBC
MOV00H,C
AA:
ACALLDELAY
CPL00H
MOVC,00H
JCBB
MOVSBUF,#00H
SJMPCC
BB:
MOVSBUF,#0FFH
CC:
AJMPAA
DELAY:
MOVR7,#8;1s延时程序
D1:
MOVR6,#250
D2:
MOVR5,#248
D3:
DJNZR5,D3
NOP
DJNZR6,D2
DJNZR7,D1
RET
END
第四章作业答案
16.MCS-51单片机系统中,片外程序存储器和片外数据存储器共用16位地址线和8位数据线,为何不会产生冲突?
解:
程序存储器和数据存储器虽然共用16位地址线和8位数据线,但由于数据存储器的读和写由
和
信号控制,而程序存储器由读选通信号
控制,这些信号在逻辑上时序上不会产生冲突,并且,访问二者的指令也不同。
因此,两者虽然共处于同一地址空间,但由于控制信号和访问指令不同,所以不会发生总线冲突。
18.某单片机应用系统,需扩展2片8KB的EPROM和2片8KB的RAM,采用地址译码法,画出硬件连接图,并指出各芯片的地址范围。
解:
硬件连接电路图如图4.18所示。
各芯片的地址范围为:
2764(1#):
0000H~1FFFH2764(2#):
2000H~3FFFH
6264(1#):
4000H~5FFFH6264(2#):
6000H~7FFFH
图4.184.18题硬件连接电路图
21.8255A的端口地址为7F00H~7F03H,试编程对8255A初始化,使A口按方式0输入,B口按方式1输出。
解:
程序如下:
ORG0000H
LJMPSTART
ORG0030H
START:
MOVSP,#60H
MOVDPTR,#7F03H
MOVA,#10010100B
MOVX@DPTR,A
SJMP$
END
25.使用8255A或者8155的B端口驱动红色和绿色发光二极管各4只,且红、绿发光二极管轮流发光各1s,不断循环,试画出包括地址译码器、8255A或8155与发光管部分的接口电路图,并编写控制程序。
解:
使用8255A,电路连接图如图4.25所示。
图4.254.25题硬件连接电路图
其中,PB0~PB3接红色发光二极管,PB4~PB7接绿色发光二极管。
设MCS-51单片机主频为12MHz。
程序如下:
ORG0000H
LJMPSTART
ORG0030H
START:
MOVSP,#60H
MOVDPTR,#7FFFH;数据指针指向8255A控制口
MOVA,#80H
MOVX@DPTR,A;工作方式字送8255A控制口
MOVDPTR,#7FFDH;数据指针指向8255A的B口
MOVA,#0FH;置红色发光二极管亮
LP1:
MOVX@DPTR,A;置红色发光二极管亮
LCALLDELAY;调用1S延时子程序
CPLA;置发光二极管亮反色
SJMPLP1;循环执行
DELAY:
MOVR7,#8;1s延时子程序
D1:
MOVR6,#250
D2:
MOVR5,#248
D3:
NOP
DJNZR5,D3
DJNZR6,D2
DJNZR7,D1
RET
END
采用定时器T0方式1中断实现1s定时。
1s=50ms×20次。
T0方式1实现50ms定时,初值=216-50ms/1μs=15536=3CB0H
(1s=20ms×50次,初值=216-20ms/1μs=45536=B1E0H)
ORG0000H
LJMPSTART
ORG000BH
LJMPTT0
ORG0030H
START:
MOVSP,#60H
MOVDPTR,#7FFFH;数据指针指向8255A控制口
MOVA,#80H
MOVX@DPTR,A;工作方式字送8255A控制口
MOVDPTR,#7FFDH;数据指针指向8255A的B口
MOVA,#0FH;置红色发光二极管亮
MOVR2,A
MOVX@DPTR,A;置红色发光二极管亮
MOV30H,#00H;次数计数单元初值
MOVTL0,#0B0H;T0赋初值
MOVTH0,#3CH
MOVTMOD,#01H;定时器/计数器0工作于方式1
SETBTR0;启动T0
SETBET0;开T0中断
SETBEA;开总允许中断
LP1:
SJMPLP1;等待定时器中断
TT0:
PUSHACC
PUSHPSW
INC30H
MOVA,30H
CJNEA,#20,LP2
MOVA,R2
CPLA
MOVR2,A
MOVX@DPTR,A
MOV30H,#00H
LP2:
MOVTL0,#0B0H;T0赋初值
MOVTH0,#3CH
POPPSW
POPACC
SETBTR0
RETI
END
26.简述RS-232C,RS-422A及RS-485串行通信接口的特点,画出在双机通信情况下,3个串行通信接口的接口电路。
解:
RS-232C采取不平衡传输方式,是为点对点(即只用一对收、发设备)通信而设计的,采用负逻辑,其驱动器负载为3k~7k。
由于RS-232C发送电平与接收电平的差仅为2~3V,所以其共模抑制能力差,再加上双绞线上的分布电容,因此,RS-232C适用于传送距离不大于15m,速度不高于20kb/s的本地设备之间通信的场合。
RS-422由RS-232发展而来,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到1220m(速率低于100kb/s时),并允许在一条平衡总线上最多连接10个接收器。
RS-422是一种单机发送、多机接收的单向、平衡的通信总线标准。
RS-485是在RS-422的基础上制定的标准,增加了多点、双向通信能力,通常在要求通信距离为几十米至上千米时,广泛采用RS-485总线标准。
它采用平衡发送和差分接收,即在发送端,驱动器将TTL电平信号转换成差分信号输出;在接收端,接收器将差分信号变成TTL电平。
具有较高的灵敏度,能检测低至200mV的电压,具有抑制共模干扰的能力,数据传输可达千米以上。
RS-232的双机通信接口电路如图4.26-1所示。
图4.26-14.26题硬件连接电路图
RS-422和RS-485的双机通信接口电路如图4.26-2所示。
图4.26-24.26题硬件连接电路图
31.何谓“看门狗”?
它如何实现对系统程序的监控?
解:
“看门狗(WDT)”,也称为程序监视定时器。
WDT的作用是通过不断监视程序每周期的运行事件是否超过正常状态下所需要的时间,从而判断程序是否进入了“死循环”,并对进入“死循环”的程序作出系统复位处理。
在程序中设置适当的指令,清WDT,就可监视微处理器的工作。
例如在主程序开始时,将WDT置位,如果主程序执行过程中产生死循环,就无法清WDT,超过WDT的定时时间时,WDT就会对微处理器发出复位信号。
从而实现对系统程序的监控。
32.说明I2C总线的特点以及在单片机中实现该总线的方法。
解:
I2C总线是由串行数据线SDA和串行时钟线SCL构成的,可发送和接收数据。
它允许若干兼容器件共享总线。
所有挂接在I2C总线上的器件和接口电路都应具有I2C总线接口,且所有的SDA/SCL同名端相连。
总线上所有器件要依靠SDA发送的地址信号寻址,不需要片选线。
I2C总线最主要的优点是其简单性和有效性。
占用的空间小,降低了互连成本。
总线的长度可高达7.6m,并且能够以10kbps的最大传输速率支持40个组件。
支持多主控器件,其中,任何能够进行发送和接收的设备都可以成为主器件。
主控能够控制信号的传输和时钟频率。
当然,在某时刻只能有一个主控器件。
在单片机控制系统中,广泛使用I2C器件。
如果单片机自带I2C总线接口,则所有I2C器件对应连接到该总线上即可;若无I2C总线接口