单片机课后习题考试重点答案_第1页
单片机课后习题考试重点答案_第2页
单片机课后习题考试重点答案_第3页
单片机课后习题考试重点答案_第4页
单片机课后习题考试重点答案_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

…i、'厂-

一早

2.80C51单片机的存储器的组织采用何种结构?存储器地址空间如何划分?各地

址空间的地址范围利容量如何?在使用上有何特点?

答:

采用哈佛结构,在物理上设计成程序存储器和数据存储器两个独立的空间;80C51

基本型单片机片内程序存储器为4KB,地址范围是000011-OFFFH,用于存放程序或常数;

片内数据存储器为128字节RAM,地址范围是00H-7FH,用于存放运算的中间结果、暂

存数据和数据缓冲;另外在80H-FFH还配有21个SFR»

4.如果80c51单片机晶振频率分别为6MHz、11.0592MHz、12MHz时,机器周

期分别为多少?

答:

机器周期分别为2us,1.085us,1PS»

6.80c51单片机的片内、片外存储器如何选择?

答:

80C51的女引脚为访问片内、片外程序存储器的选择端。访问片内、片外数据存

储器需要采用不同的指令加以区分。

8.80C51单片机的当前工作寄存器组如何选择?

答:

当前工作寄存器组的选择由特殊功能寄存器中的程序状态字寄存器PSW的RS1、

RS0来决定。

—­

二早

10.完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操

作的指令序列。

(1)将R0的内容传送到R1;

(2)内部RAM单元60H的内容传送到寄存器R2;

(3)外部RAM单元1000H的内容传送到内部RAM单元60H;

(4)外部RAM单元1000H的内容传送到寄存器R2;

(5)外部RAM单元1000H的内容传送到外部RAM单元2000H。

答:

(1)MOVA,R0

MOVRI,A

(2)MOVR2,60H

(3)MOVDPTR,#1000H

MOVXA,@DPTR

MOV60H,A

(4)MOVDPTR,#1000H

MOVXA,@DPTR

MOVR2,A

(5)MOVDPTR,#1000H

MOVXA,@DPTR

MOVDPTR,#2000H

MOVX@DPTR,A

11.若(RI)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列

程序段后上述各单元内容的变化。

MOVA,@R1

MOV@R1,40H

MOV40H,A

MOVRI,#7FH

答:

(RI)=7FH

(A)=60H

(30H)4)8H

(40H)=60H

12.若(A)=E8H,(RO)=40H,(RI)=20H,(R4)=3AH,(40H)=2CH,

⑵H)=0FH,试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令

影响标志位,试指出CY、AC>和OV的值。

(1)MOVA,@R0

(2)ANL40H,#0FH

(3)ADDA,R4

(4)SWAPA

(5)DEC@R1

(6)XCHDA,@R1

答:

(1)(A)=2CH

(2)(40H)=OCH

(3)(A)=22H,(CY)=1,(AC)=1,(OV)=0

(4)(A)=8EH

(5)(20H)=0EH,P=1

(6)(A)=EFH,(20)=08H

13.若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM

的40H、41H、42H单元中的内容各为多少?

MOVA,50H

MOVRO,A

MOVA,#00H

MOV@R0,A

MOVA,#3BH

MOV41H,A

MOV42H,41H

答:

(A)=3BH,(RO)=40H,(40H)=00H,(41H)=3BH,(42H)=3BH。

15.试编写程序,将内部RAM的20H、21H、22H三个连续单元的内容依次存入

2FH、2EH和2DH单元。

答:

MOV2FH,20H

MOV2EH,21H

MOV2DH,22H

16.试编写程序,完成两个16位数的减法:7F4DH—2B4EH,结果存入内部RAM

的30H和31H单元,30H单元存差的高8位,31H单元存差的低8位。

答,

CLRCY

MOV30H,#7FH

MOV31H,#4DH

MOVRO,#31H

MOVA,@R0

SUBBA,#4E

MOV@R0,A;保存低字节相减结果

DECRO

MOVA,@R0

SUBBA,#2BH

MOV@R0,A;保存高字节相减结果

17.试编写程序,将R1中的低4位数与R2中的高4位数合并成一个8位数,并将

其存放在R1中。

答:

MOVA,R1;

ANLA,#0FH;

MOVRI,A

MOVA,R2

ANLA,#0F0H

ORLA,RI

MOVRI,A

18.试编写程序,将内部RAM的20H、21H单元的两个无符号数相乘,结果存放

在R2、R3中,R2中存放高8位,R3中存放低8位。

答:

MOVA,20H

MOVB,21H

MULAB

MOVR3,A

MOVR2,B

四章

7.编写程序,把外部RAM中1000H〜101FH的内容传送到内部RAM的30H〜4FH

中。

答:

ORG0000H

MOVDPTR,#1000H

MOVRO,#30H

MOVR7,#32

LOOP:MOVXA,@DPTR

MOV@R0,A

INCRO

INCDPTR

DJNZR7,LOOP

RET

8.编写程序,实现双字节无符号数加法运算,要求(R0R1)+(R6R7)T(60H61H)。

答:

ORG0000H

MOVA,R1

ADDA,R7

MOV61H,A

MOVA,RO

ADDCA,R6

MOV60H,A

SJMP$

END

9.若80c51的晶振频率为6MHz,试计算延时子程序的延时时间。

DELAY:M0VR7,#0F6H

LP:M0VR6,#OFAH

DJNZR6,$

DJNZR7,LP

RET

答:延时时间:2|is*{[l+((1+2*250+2)*246)+2]+2}=0.247486秒(含调用指令2

个机器周期)

10.在内部RAM的30H~37H单元存有一组单字节无符号数。要求找出最大数存

入BIG单元。试编写程序实现。

答:

ORG0000H

BIGDATA2FH

ONEDATA2AH

TWODATA2BH

START:MOVR7,#7;比较次数

MOVRO,#30H

LOOP:MOVA,@R0

MOVONE,A

INCRO

MOVTWO,@R0

CLRC

SUBBA,0R0

JCNEXT;ONE小,TWO大继续比下一对数

MOV@R0,ONE;ONE大放后面(交换)

DECRO

MOV@R0,TWO;TWO小放前面

INCRO*

NEXT:DJNZR7,LOOP

MOVBIG,37H

SJMP$

END

11.编写程序,把累加器A中的二进制数变换成3位BCD码,并将百、十、个位

数分别存放在内部RAM的50H、5IH、52H中。

答:单字节二进制数转换为压缩的BCD码仅需要2个字节;在将压缩的BCD码拆

分存于3个单元。

org0

MOV52H,#0

MOV51H,#0

MOV50H,#0

MOVA,#OFDh

LCALLDCDTH

SJMP$

DCDTH:MOVR7,#8

MOVRO,A;暂存于RO

LOOP:CLRC

MOVA,RO

RLCA

MOVRO,A

MOV

MOVA,@R1

ADDCA,@R1;

DAA

MOV@R1,A

DECRI

MOVA,@R1

ADDCA,0R1

DAA

MOV@R1,A

DJNZR7,LOOP

INCRI;50H已是结果,RI指向51H,51H单元需拆分

MOVA,#00H

XCHDA,@R1

MOV52H,A

MOVA,@R1

SWAPA

MOV@R1,A

RET

END

12.编写子程序,WRI中的2个十六进制数转换为ASCII码后存放在R3和R4中。

答:

ORG0

MOVR1,#5BH

MOVA,RI

ANLA,#OFOH

SWAPA

ACALLASCII

MOVR3,A

MOVA,RI

ANLA,#OFH

ACALLASCII

MOVR4,A

SJMP$

ASCII:PUSHACC

CLRC

SUBBA,#OAH

POPACC

JC1LOOP

ADDA,#0711

LOOP:ADDA,#30H

RET

END

13.编写程序,求内部RAM中50H〜59H十个单元内容的平均值,并存放在5AH

单元。

答:

ORG0000H

MOVR7,#10

MOVRO,#50H

MOVB,#10

CLRC

CLRA

LOOP:ADDCA,@RO

INCRO

DJNZR7,LOOP

DIVAB

MOV5AH,A

SJMP$

END

14.如图4.10所示,编制程序实现:上电后显示“P”,有键按下时显示相应的键

号“0”〜“7”。

答:

实现程序如下:

TEMPEQU3011

ORG0000H

JMPSTART

ORG0100H

START:MOVSP,#5FH

MOVPO,#8CH;正序显示"P"

MOVP3,#OFFH;输入方式

CLRCY

NOKEY:MOVA,P3

CPLA

JZNOKEY;无键按下

MOVTEMP,P3;有键按下

CALLDlOms

MOVA,P3

CJNEA,TEMP,NOKEY;去抖动

MOVR2,#0;键号计数器复位

MOVA,TEMP

LP:RRCA

JNCDONE

INCR2

SJMPLP

DONE:MOVA,R2

MOVDPTR,#CODE_PO

MOVCA,©A+DPTR

MOVPO,A

JMPNOKEY

D10ms:M0VR5,#10;10MS

Dlms:M0VR4,#249

DL:NOP

NOP

DJNZR4,DL

DJNZR5,Dims

RET

CODEPO:

DBOCOH,0F9H,0A4H,OBOH,99H,92H,82H,0F8H

DB80H,90H,88H,83H,0C6H,OA1H,86H,8EH

END

五章

1.80C51有儿个中断源?各中断标志是如何产生的?又是如何复位的?CPU响应

各中断时,其中断入口地址是多少?

答:5个中断源,分别为外中断而5和而1、TO和T1溢出中断、串口中断。

电平方式触发的外中断标志与引脚信号一致;边沿方式触发的外中断响应中断后

由硬件自动复位。

TO和Tl,CPU响应中断时,由硬件自动复位。

RI和TL由硬件置位。必须由软件复位。

另外,所有能产生中断的标志位均可由软件置位或复位。

各中断入口地址:INT0-0003H,TO—000BH,INTI—0013H,Tl—001BH,RI

和TI—0023H,

3.外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中

断过程有何不同?怎样设定?

答:

当IT0=0时,而为电平触发方式。电平触发方式时,CPU在每个机器周期的S5P2

采样而所引脚电平,当采样到低电平时,置正0=1向CPU请求中断;采样到高电平

时,将IE0清0。在电平触发方式下,CPU响应中断时,不能自动清除IE0标志。

电平触发方式时,外部中断源的有效低电平必须保持到请求获得响应时为止,不然

就会漏掉;在中断服务结束之前,中断源的有效的低电平必须撤除,否则中断返回之后

将再次产生中断。该方式适合于外部中断输入为低电平,且在中断服务程序中能清除外

部中断请求源的情况。

当rro=i时,而5为边沿触发方式。边沿触发方式时,CPU在每个机器周期的s5P2

采样而5引脚电平,如果在连续的两个机器周期检测到而引脚由高电平变为低电平,

即第一个周期采样到而^=1,第二个周期采样到布而=0,则置正0=1,产生中断请求。

在边沿触发方式下,CPU响应中断时,能由硬件自动清除IE0标志。

边沿触发方式时,在相继两次采样中,先采样到外部中断输入为高电平,下一个

周期采样到为低电平,则在IE0或IEI中将锁存一个逻辑1。若CPU暂时不能响应,中

断申请标志也不会丢失,直到CPU响应此中断时才清0。另外,为了保证下降沿能够被

可靠地采样到,而和茴引脚上的负脉冲宽度至少要保持一个机器周期(若晶振频

率为12MHz,为1微秒)。边沿触发方式适合于以负脉冲形式输入的外部中断请求。

8.利用定时/计数器T0从P1.0输出周期为1s,脉宽为20ms的正脉冲信号,晶振

频率为12MHzo试设计程序。

答:

采用定时20ms,然后再计数1、49次的方法实现。

a、TO工作在定时方式1时,控制字TMOD配置:

M1MO=O1,GATE=O,C/f=O,可取方式控制字为01H;

b、计算计数初值X:

晶振为12MHz,所以机器周期Tcy为1睽。

N=t/Tcy=20x10-3/1x10-6=20000

X=2I6-N=65536-200()0=45536=4E20H

即应将4EH送入TH1中,20H送入TL1中。

c、实现程序如下:

ORG0000H

AJMPMAIN;跳转到主程序

ORG0030H

MAIN:MOVTMOD,#01H;设口工作于方式2

MOVTHO,#4EH;装入循环计数初值

MOVTLO,#2011;首次计数值

LPO:SETBP1.0

ACALLNTO

CLRP1.0

MOVR7,#49;计数49次

LP1:ACALLNTO

DJNZR7,LP1

AJMPLPO

NTO:MOVTHO,#4EH

MOVTLO,#20H

SETBTRO

JNBTFO,$

CLRTRO

CLRTFO

RET

END

9.要求从P1.1引脚输出1000Hz方波,晶振频率为12MHz。试设计程序。

答:采用T0实现

a、TO工作在定时方式1时,控制字TMOD配置:

M1MO=O1,GATE=O,C/f=O,可取方式控制字为01H;

b、计算计数初值X:

晶振为12MHz,所以机器周期Tcy为1即。1/1000=1x10^

N=t/Tcy=0.5X107/1X10~6=500

X=216-N=65536-500=65036=FE0CH

即应将FEH送入THO中,OCH送入TLO中。

c、实现程序如下:

ORG0000H

AJMPMAIN;跳转到主程序

ORGOOOBH;TO的中断入口地址

LJMPDVTO

ORG0030H

MAIN:MOVTMOD,#01H;设丁0工作于方式2

MOVTHO,#OFEH;装入循环计数初值

MOVTLO,#OCH;首次计数值

SETBETO;TO开中断

SETBEA;CPU开中断

SETBTRO;启动TO

SJMP$;等待中断

DVTO:CPLPl.1

MOVT1I0,ttOFEll

MOVTLO,#OCH

SETBTRO

RETI

END

10.试用定时/计数器T1对外部事件计数。要求每计数100,就将T1改成定时方

式,控制P1.7输出一个脉宽为10ms的正脉冲,然后又转为计数方式,如此反复循环。

设晶振频率为12MHz。

答:

a、T1工作在计数方式2时,控制字TMOD配置:

M1MO=1O,GATE=O,C/T=1.可取方式控制字为60H;

T1工作在定时方式1时,控制字TMOD配置:

M1MO=O1,GATE=O,C/〒=0,可取方式控制字为10H;

b、计算初值X:

定时10ms时:

晶振为12MHz,所以机器周期Tcy为1即。

N=t/Tcy=10xl0-71xl0-6=10000

X=2I6-N=65536-10000=55536=D8F0H

即应将D81I送入TH1中,F0I1送入TL1中。

计数100时:

N=100

X=28-N=256-100=156=9CH

C、实现程序如下:

ORG0000H

AJMPMAIN;跳转到主程序

ORG001BH;T1的中断入口地址

LJMPDVT1

ORG0030H

MAIN:MOVTMOD,#6011;T1工作于计数方式2

MOVTH1,#9CH;装入计数初值

MOVTL1,#9CH»

CLRPl.7

SETBET1;T1开中断

SETBEA;CPU开中断

SETBTRI;启动T1

SJMP$;等待中断

DVT1:SETBPl.7

CLRET1

CLRTRI

MOVTMOD,#10H;T1工作于定时方式1

MOVTH1,#OD8H;装初值

MOVTL1,#OFOH

SETBTRI

JNBTF1,$;查询等待10ms

CLRTF1

CLRTRI

CLRPl.7

MOVTMOD,#60H;T1工作于计数方式2

MOVTH1,#9CH;装初值

MOVTL1,#9CH

SETBET1;T1开中断

SETBTRI;启动T1

RETI

END

11.利用定时/计数器TO产生定时时钟,由P1口控制8个指示灯。编一个程序,使8

个指示灯依次闪动,闪动频率为1次/秒(即,亮1秒后熄灭并点亮下一个,-一)。

答:采用定时20ms,计数50次实现1秒定时。编制I秒延时子程序,由主程序

调用。

a、TO工作在定时方式1时,控制字TMOD配置:

M1MO=O1,GATE=O,C/〒=0,可取方式控制字为01H;

b、计算计数初值X:

晶振为12MHz,所以机器周期Tcy为1即。

N=t/Tcy=20X10-3/1X10-6=20000

X=2'6-N=65536-20000=45536=4E20H

即应将4EH送入TH1中,20H送入TL1中。

c、实现程序如下:

ORG000011

AJMPMAIN;跳转到主程序

ORG0030H

MAIN:CLRCY

MOVA,#01H

LPO:MOVPl,A

CALLDISEC

RLA

AJMPLPO

DISEC:MOVR7,#50;计数50次

MOVTMOD,#0111

DL:MOVTHO,#4EH

MOVTLO,#20H

SETBTRO

JNBTFO,$

CLRTRO

CLRTFO

DJNZR7,DL

RET

END

八早

5.利用单片机串行口扩展并行输入接口电路如图所示。试编写程序完成将

SW1-SW8的状态反应在P0口所接的LED上(如SW1闭合时L7应点亮)。

答:电路图如下:

+5V9

10Kx8

PO.

PO.

PO.

PO.

PO.

HPO,

G9PO,

F9PO.

ESI

DWL71Kx8

CZ

B

ARXD

TXD

I5

L89S51

12345678

2()

SW1-SW8

ORG0000H

MOVSCON,#1OH

LOOP:CLRPl.7

NOP

NOP

NOP

SETBPl.7

CLRRI

JNBRI,$

MOVA,SUBF

SJMPLOOP

END

6.利用单片机串行口扩展并行输出接口电路如图所示。试编写程序完成将

SW1~SW8的状态反应在移位寄存器74LS164所接的LED上(如SW1闭合时L0应点

亮。

答:电路图如下:

+5V

0

pl1

pl2

pl

pl3

pl4

pl5

pl6

pl7

QA

QB

QC

-QD

RXD9

IQE

TXDSQF

1G(

W6KI—=i-

QH+0~~(=^—

89S51——W——(=J-------

20

SWI~SW8

ORGOOOOH

MOVSCON,#OOH

MOVPl,#OFFH

LOOP:MOVA,Pl

MOVSUBF,A

JNBTI,$

CLRTI

SJMPLOOP

END

七章

1.以80c31为主机,用2片27c256扩展64KEPROM,试画出接口电路。

答:

P2.7------------

P2.0-P2.6

G

ALEOE

pQ7

D7:g:

P0

:3:

80C31M

DOQOA0-A7A8-A14A0-A7A8-AI4

EAD<>-D7QECED0-D7QECE

PSEN

27C25627c256

2.以80c31为主机,用1片27c512扩展64KEPROM,试画出接口电路。

答:

P2.0-P2.7A8-A15

G

ALE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论