单片机原理与应用赵晓安课后习题Word文档格式.docx

上传人:b****4 文档编号:7121219 上传时间:2023-05-07 格式:DOCX 页数:16 大小:24.90KB
下载 相关 举报
单片机原理与应用赵晓安课后习题Word文档格式.docx_第1页
第1页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第2页
第2页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第3页
第3页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第4页
第4页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第5页
第5页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第6页
第6页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第7页
第7页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第8页
第8页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第9页
第9页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第10页
第10页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第11页
第11页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第12页
第12页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第13页
第13页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第14页
第14页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第15页
第15页 / 共16页
单片机原理与应用赵晓安课后习题Word文档格式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机原理与应用赵晓安课后习题Word文档格式.docx

《单片机原理与应用赵晓安课后习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理与应用赵晓安课后习题Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。

单片机原理与应用赵晓安课后习题Word文档格式.docx

复位后sp的内容是什么?

Sp表示堆栈指针,为8位专用寄存器,作用是为了指示栈顶地址,它的内容是堆栈栈顶的存储单元地址。

复位后sp在RAM低128位字节中开辟栈区,并初始化为07H,当实际进栈出栈时,存储数据前会自动加1,所以堆栈实在08H单元开始。

2-18试说明8051的振荡周期、机器周期、指令周期是如何分配的。

当振荡脉冲频率为6MHz时,机器周期是多少?

8051单片机每条指令的执行时间(即指令周期)为1~4个机器周期,有单字节单周期指令、两字节单周期指令、单字节两周期指令、两字节两周期指令、三字节两周期指令以及

单字节四周期指令。

一个机器周期有6个状态:

S1~S6每个状态又包含两个振荡周期,分为两拍:

P1和P2。

因此,一个机器周期包含12个振荡周期,表示为:

S1P1、S1P2、S2P1、?

?

S6P1、S6P2。

当FOSC=6MHz时,机器周期为:

(1/6)×

12=2(μs)

第三章

3-1简述MCS-51有哪几种寻址方式?

各有什么特点?

MCS-51有以下七种寻址方式:

(1)直接寻址:

指令中直接给出操作数所在的单元地址或位地址;

(2)立即寻址:

在指令中紧跟在操作码之后的字节是操作数;

(3)寄存器寻址:

操作数在指令中给出的寄存器中;

(4)寄存器间接寻址:

寄存器中存放的是操作数所在的单元地址;

(5)变址寻址:

基址加变址形成的16位地址是操作数地址;

(6)相对寻址:

指令中给出相对偏移量,转移指令都为相对寻址;

(7)位寻址:

指令中给出的位地址或位寄存器中存放的是位操作数。

3-2MCS-51指令按功能分为哪几类?

每类指令的作用是什么?

MCS-51指令按功能分为五类,分别为:

(1)数据传送类指令:

主要用于数据的传送、交换与堆栈操作;

(2)算术运算类指令:

主要用来完成加减乘除运算及二十进制调整;

(3)逻辑运算类指令:

主要完成与、或、异或及移位运算;

(4)位操作指令:

主要用来做与、或、清除、置位、求反等布尔运算;

(5)控制转移指令:

控制程序执行的走向,有转移、调用及返回操作。

3-3变址寻址和相对寻址中的偏移量有何异同?

变址寻址:

@A+DPTR、@A+PC,其中DPTR、PC为基址寄存器,A为变址寄存器,其中A为8位无符号的二进制数,其范围为0到255;

相对寻址中偏移量为8位带符号的二进制数,范围为-128-127

23-4指出下列每条指令的寻址方式,30H在不同的指令中代表什么含义?

(1)MOVA,#30H;

寄存器寻址,立即寻址,30H为立即数

(2)MOV30H,@R1;

直接寻址,寄存器间接寻址,30H为字节地址

(3)MOVC,30H;

寄存器寻址,直接寻址,30H为位地址

(4)MOV30H,R5;

直接寻址,寄存器寻址,30H为字节地址

(5)MOVXA,@DPTR;

寄存器寻址,寄存器间接寻址

(6)MOVCA,@A+PC;

寄存器寻址,基址加变址的寄存器间接寻址,

(7)JCLAB1;

相对寻址

(8)SJMPLAB2;

3-5写出下列指令的机器码,并指出执行下列程序段后各单元内容变为什么?

累加器A及PSW中的内容变为什么?

(1)MOVA,#2;

(A)=02H

MOVR1,#30H;

(R1)=30H

MOV@R1,A;

(30H)=02H

MOV35H,R1;

(35H)=30H

XCHA,R1;

(A)=30H,(R1)=02H

 

(2)MOVA,#0F5H;

(A)=0F5H

MOV30H,#9BH;

(30H)=9BH

MOVR0,30H;

(R0)=9BH

ADDA,#28H;

(A)=1DHCy=1AC=00V=0

ADDCA,@R0;

(A)=0B9HCy=0AC=10V=0

⑶CLRC;

(C)=0

MOV40H,#7AH;

(40H)=7AH

MOVA,#92H;

(A)=92H

MOVR0,#40H;

(R0)=40H

SUBBA,@R0;

(A)=18HCY=0AC=1OV=1

⑷MOVA,#79H;

(A)=79H

MOV30H,#89H;

(30H)=89H

ADDA,30H;

(A)=02HCY=1AC=1OV=0

DAA;

(A)=68HCY=1

SWAPA;

(A)=86HCY=1

3-6写出能完成下列数据传送的指令

1R1内容传送到R0

MOVA,R1

MOVR0,A

2内部RAM25H单元中内容送35H单元

MOV35H,25H

3内部RAM25H单元中内容送P1口

MOVP1,25H

4内部RAM40H单元中内容送外部RAM2005H单元

MOVA,40H

MOVDPTR,#2005H

MOVX@DPTR,A

5外部RAM3000H单元中内容送外部RAM25H单元

MOVDPTR,#3000H

MOVXA,@DPTR

MOV25H,A

6外部ROM1000H单元中内容送内部RAM35H单元

MOVDPTR,#1000H

CLRA

MOVCA,@A+DPTR

MOV35H,A

7外部ROM4000H单元中内容送外部RAM4000H单元

8外部RAM1000H单元中内容送SP堆栈指针

MOVDPTR,#1000H

MOVSP,A

3-8写出下段程序中每一步A、B中的结果:

MOVA,#22H;

(A)=22H

MOVB,#05H;

(B)=05H

MOVR0,#08H;

(R0)=08H

MULAB;

(B)=00H(A)=0AAH

MOVB,R0;

(B)=08H

DIVAB;

(A)=15H(B)=02H

3-9试写出完成如下操作的程序:

1把RAM1000H单元中的低4位变“0”,其余位不变

ANLA,#0F0H

2使内部RAM50H单元中的低4位变“1”,其余位不变

ORL50H,#0FH

3使内部RAM50H单元中的高3位变反,其余位不变

XRL50H,#0E0H

4使内部RAM50H单元中的高4位变“1”,低4位变“0”

MOV50H,#0F0H

5使内部RAM50H单元中的所有位变反。

XRL50H,#0FFH

3-10试编写程序完成以内部RAM30H为首地址的20个数据传送,目的地址为外部RAM以3000H为首地址的区域。

ORG0000H

MOVR0,#30H

MOVDPTR,#3000H

MOVR7,#20

LOOP:

MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR7,LOOP

SJMP$

END

3-11试编写条件转移程序,当寄存器R3的内容分别满足下列条件时能转移到LOOP处执行程序,条件不满足时则停机。

(1)(R3)≥15⑵(R3)<15⑶(R3)≤15⑷(R3)>15

(1)(R3)≥15

cjneR3,#15,NEQ

sjmpL1

NEQ:

jncL1

sjmp$

L1:

loop

⑵(R3)<15

cjneR3,#15,NEQ

sjmpStop

jcL1

Stop:

sjmp$

⑶(R3)≤15

sjmpL1

jcL1

⑷(R3)>15

sjmpstop

stop:

3-12已知:

(SP)=53H,(PC)=37FEH,执行ACALL3A00H后堆栈指针SP、堆栈中内容以及程序记数器PC中的内容是什么?

(PC)=37FEH=0011011111111110B

执行ACALL3A00H(3A00H=0011101000000000)

PC高5位,3A00H低11位为:

0011001000000000=3200H

执行ACALL3A00H后堆栈指针SP、堆栈中内容以及程序记数器PC中的内容分别为:

(PC)=3200H(SP)=55H(54H)=00H(55H)=32H

第四章

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

要求统计出大于0、小于0和等于0的个数并存于ONE、TWO、THREE三个单元。

编程思路:

首先判断一下1FH单元内容是否为0,如果为0,什么都不做;

如果1FH单元内容不为零,初始化ONE、TWO、THREE,通过JZ判断是否为0,通过判断ACC最高位是否为1,来判断数是正是负,若最高位符号位为1说明是负数,否则为正数。

答案不唯一,参考程序如下:

ONEDATA10H;

大于0的个数

TWODATA11H;

小于0的个数

THREEDATA12H;

等于0的个数

MAIN:

CJNE1FH,#00H,START

SJMPSTOP

START:

MOVR0,#20H

MOVR7,1FH

MOVONE,#00

MOVTWO,#00

MOVTHREE,#0

JZZERO

JBACC.7,NEQ

INCONE

SJMPNEXT

NEQ:

INCTWO

SJMPNETX

ZERO:

INCTHREE

NEXT:

DJNZR7,LOOP

STOP:

SJMP$

END

4-2设:

自变量X为一无符号数,存放在内部RAM的VAX单元,计算出的函数值Y存放在FUNC单元,请编出满足如下关系的程序。

VAXDATA30H

FUNCDATA31H

MOVA,VAX

CJNEA,#50,NO50

SJMPNEXT

NO50:

JNCNEXTT

CJNEA,#20,NO20

SJMPYEQU5X

NO20:

JCYEQU2X

YEQU5X:

MOVB,#05

MULAB

YEQU2X:

RLA

MOVFUNC,A

4-3外部RAM从2000H到2100H有一数据块,请编出将它们传送到外部RAM3000H到3100H区域的程序。

2000H到2100H共有101H即257个数,将循环次数设成0,可以进行256次循环,2100H到3100H单独做一次即可。

MOVDPTR,#2000H

MOVP2,#30H

MOVR0,#00H

MOVR7,#00H

MOVXA,@DPTR

MOVX@R0,A

INCR0

INCDPTR

DJNZR7,LOOP

INCP2

MOVX@R0,A

4-4在内部RAM中,有一个以BLOCK为始址的数据块,块长在LEN单元。

请用查表指令编一程序,先检查它们若是16进制中的A~F,则把它们变为ASCII;

若不是,则把它们变为00H。

首先判断一下LEN单元的内容是否为0,如果块长为0,一次都不做,如果不做判断而块长为0的话,则多做256次循环。

既然用查表程序,我觉得可以把表做的巧妙一些,省的复杂的判断,提高程序的运行效率。

可以先判断一下,内容是否大于F,如果大于F也变0,所以可以把数取出来,做个与运算,与上0F0H,如果结果不为零,就说明高四位上有数,则应该变零,如果高四位上没数,只是低4位有数,则数的范围为0-F,所以做表的时候可以将0-9对应的表都设置成0,A-F对应其ASCII。

BLOCKDATA30H

LENDATA2FH

MOVR0,#BLOCK

MOVA,LEN

JZSTOP

MOVR7,A

MOVDPTR,#TAB

PUSHACC

ANLA,#0F0H

JZNEXT

MOVA,#0

SJMPNETX1

POPACC

NEXT1:

MOVCA,@A+DPTR

MOV@R0,A

TAB:

DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,’A’,’B’,’C’,’D’,’E’,’F’

第六章

6-1 

8051单片机内部有四个8位并行I/O口,命名为P0、P1、P2、P3。

这4个并行I/O口都可以作准双向通用I/O口,即先执行一条指令MOV 

P1,#0FFH。

P0、P2和P3口还有复用的第二功能。

每个口都包含一个(8位)锁存器(即特殊功能寄存器P0~P3),一个输出驱动器,和两个三态缓冲器。

P0口功能:

可作通用I/O口,是漏级开路的。

因此必须外接上拉电阻,以保证―1‖信号正常输出。

也可作为分时作为地址/数据总线使用。

P1口功能:

可作通用I/O口,也是一个―准双向‖口,作输入口时要先将输出驱动管截止。

p2口功能:

可用作通用I/O口,与P1口类似,也 

可用作高8位地址总线。

P3口功能:

可用作通用I/O口,另外,还有其第二功能。

6-2 

―读锁存器‖指令是P0~P3作目的操作数的指令,能实现―读—修改—写‖口锁存器的操作。

―读引脚‖指令的特点是:

P0~P3 

作为源操作数出现在指令中,但在读引脚数据之前,必须对所读的口或口位的D锁存器写入―1‖。

要正确读引脚数据,必须先写一条MOV 

PX,#0FFH指令或能对所读的口或口位的D锁存器写入―1‖的指令,而后紧接着写指令。

6-3 

在单片机实时应用系统中,定时器/计数器有定时和对外部事件计数的功能,可用于定时控制、延时、对外部事件检测和计数等场合.定时是对周期已知的脉冲信号计数。

计数是对外部发生事件进行计数,对周期未知的外来脉冲信号计数。

采用可编程的定时器/计数器 

可以方便灵活地修改定时或计数的参数或方式,与CPU并行工作,大大提高了CPU的工作效 

率。

6-4 

MCS-51单片机内部有2个16位的可编程的定时器/计数器:

定时器/计数器0(T/C0),定时器/计数器1(T/C1)。

定时方式下,T/C计数8051内部机器周期信号的个数 

,由计数个数可以计算出定时时间。

每个机器周期使T/C的计数器增加1,直至计满回零后自动产生溢出中断请求,表示定时时间到。

计数方式下,T/C计数来自引脚T0(P3.4)和T1(P3.5)的外部脉冲信号的个数。

输入脉冲由1变0的下降沿时,计数器的值增加1直到回零产生溢出中断,表示计数已达预期个数。

6-5 

MCS-51单片机的定时器/计数器共有四种工作方式:

方式0、1、2、3。

方式0是高8位和低5位的一个13位计数器的运行方式。

当TL1的低5 

位溢出时,向TH1进位,而TH1溢出(回零)时向TF1标志进位(硬件置位TF1),并申请中断。

还可以通过查询TF1是否置位来判断TH1是否回零溢出。

方式1是一个16为定时器/计数器,结构几乎与方式0完全一样,唯一的差别是方式1中的TH1(TH0)和TL1(TL0)均是8位的,构成16位计数器。

方式2中,T/C被拆成一个8位的寄存器TH1(TH0)和一个8位计数器TL1(TL0),两者构成可以自动重装载的8位T/C。

每当它计满回零时,

一方面向CPU发出溢出中断请求, 

另一方面从TH1(或TH0)中重新获得初值并启动计数;

也就是CPU 

自动将TH1(或TH0)中存放的初值重新装回到TL1(或TL0),并在此初值的基础上对TL1(或TL0)开始新一轮计数,周而复始,直到下停止计数或更改工作方式命令为止。

方式3下T/C0和T/C1功能就不同了。

此时,TH0和TL0按两个独立的8位计数器工作, 

T/C1只能按不中断的方式工作,常常利用它的定时功能作串行口波特率发生器。

T/C0方式3时,TL0占用了T/C0的C/T、GATE、TR0、TF0、T0(P3.4)和INT0控制引脚 

TH0只有简单的内部定时功能,它占用了T/C1的TR1控制位和TF1中断标志位,其启动/关闭仅受TR1控制。

6-6 

定时器/计数器用做定时时,定时时间与时钟的振荡频率和定时器/计数器的设定初值有关。

用做计数时,最高输入信号频率为振荡频率的1/24。

即计数周期=2机器周期。

6-7 

在T/C0工作在方式3时,T/C1仍可设置为方式0~2。

由于TR1和TF1已被T/C0(TH0)占用,计数开关已被接通,此时仅用T/C1的C/T来切换其定时或计数工作方式就可使T/C1工作。

计数器(8位、13位或16位)回零溢出时,只能将输出送入串行口或用于不需要中断的场合。

一般情况下,当T/C1用作串行口波特率发生器时,T/C0才设置为工作方式3。

此时,常把T/C1设置为方式2用作波特率发生器。

6-8 

T/C0的实际作用为计时,当达到106mS后中断

6-14 

ORG 

0000H

LJMP 

START 

001BH 

;

TIMER1中断 

TT1 

1000H 

START:

MOV 

TMOD,#20H 

8位自动重新装入 

TH1,06H 

装入初始值 

TL1,06H 

MOV 

R2,#00H 

用于统计250us的个数 

SETB 

P1.1 

初始化P1.0 

P1.0 

SETB 

EA 

开放中断 

ET1 

TR1 

SJMP 

主程序踏步 

TT1:

CPL 

取反P1.1产生250us方波 

INC 

R2 

计数值增一,统计250us的个数 

CJNE 

R2,#4,CONT 

达到1s?

产生2ms方波 

CLR 

重新统计

CONT:

RETI 

中断返回 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2