单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx

上传人:b****2 文档编号:18593523 上传时间:2023-08-20 格式:DOCX 页数:25 大小:26.60KB
下载 相关 举报
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第1页
第1页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第2页
第2页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第3页
第3页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第4页
第4页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第5页
第5页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第6页
第6页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第7页
第7页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第8页
第8页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第9页
第9页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第10页
第10页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第11页
第11页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第12页
第12页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第13页
第13页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第14页
第14页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第15页
第15页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第16页
第16页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第17页
第17页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第18页
第18页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第19页
第19页 / 共25页
单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx

《单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx(25页珍藏版)》请在冰点文库上搜索。

单片机原理及应用技术苏家建曹柏荣 汪志锋 课后习题参考答案.docx

单片机原理及应用技术苏家建曹柏荣汪志锋课后习题参考答案

单片机原理及应用技术苏家建

课后习题参考答案

第三章MCS-51指令系统

3-1MCS-51指令系统有哪几种寻址方式?

按功能分类有哪几种指令?

3-2设A=0FH,R0=30H,片内RAM的(30H)=0AH,(31H)=0BH,(32H)=0CH,下列程序段运行后的结果?

MOVA,@R0;A=0AH

MOV@R0,32H;(30H)=0CH

MOV32H,A;(32H)=0AH

MOVR0,#31H;R0=31H

MOVA,@R0;A=(31H)=0BH

3-3

(1)R0的内容传送到R1

MOVA,R0

MOVR1,A

(2)内部RAM20H单元的内容传送到A

MOVA,20H

(3)外部RAM30H单元的内容传送到R0

MOVR1,#30H

MOVXA,@R1

MOVR0,A

(4)外部RAM30H单元的内容传送到内部RAM20H单元

MOVR1,#30H

MOVXA,@R1

MOV20H,A

(5)外部RAM1000H单元的内容传送到内部RAM20H单元

MOVDPTR,#1000H

MOVXA,@DPTR

MOV20H,A

(6)程序存储器ROM2000H单元的内容传送到R1

MOVDPTR,#2000H

CLRA

MOVCA,@A+DPTR

MOVR1,A

(7)RAM2000H单元的内容传送到内部RAM20H单元

MOVDPTR,#2000H

MOVXA,@DPTR

MOV20H,A

(8)RAM2000H单元的内容传送到外部RAM30H单元

MOVDPTR,#2000H

MOVXA,@DPTR

MOVR0,#30H

MOVX@R0,A

(9)RAM2000H单元的内容传送到外部RAM1000H单元

MOVDPTR,#2000H

MOVXA,@DPTR

MOVDPTR,#1000H

MOVX@DPTR,A

3-4设内部RAM30H=5AH,5AH=40H,40H=00H,P1=7FH,下面程序执行后的结果如何?

MOVR0,#30H;R0=30H

MOVA,@R0;A=(30H)=5AH

MOVR1,A;R1=5AH

MOV@R1,P1;(5AH)=7FH

MOVA,P1;A=7FH

MOV40H,#20H;(40H)=20H

MOV30H,40H;(30H)=00H

3-5编程,将内部RAM20H-2FH共16个连续单元清零

ORG0100H

MOVR0,#20H

MOVR2,#16

LOOP:

MOV@R0,#00H

INCR0

DJNZR2,LOOP

END

3-6编程,求出内部RAM20H单元中的数据含“1”的个数,并将结果存入21H单元中。

ORG0100H

MOV21H,#0

MOVR2,#8

MOVA,20H

CLRC

LOOP:

RLCA

JCCOUNT

DJNZR2,LOOP

SJMPSTOP

COUNT:

INC21H

DJNZR2,LOOP

STOP:

SJMP$

END

3-7编程,找出内部RAM30H-50H单元中出现FFH的次数,并将结果存入51H单元中。

ORG0100H

MOV51H,#0

MOVR0,#30H

MOVR2,#20H

LOOP:

MOVA,@R0

CJNEA,#0FFH,AGAIN

INC51H

AGAIN:

INCR0

DJNZR2,LOOP

SJMP$

END

3-8编程,计算

,并将结果存入内部的30H单元

ORG0100H

MOV30H,#0

MOV31H,#0;i的初值

MOVR0,#30H

MOVR2,#11

MOVA,31H

LOOP:

INC31H

ADDA,@R0

MOV@R0,A

MOVA,31H

RLA

DJNZR2,LOOP

SJMP$

END

3-9已知片内RAM(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H.说明下列指令源操作数的寻址方式,及指令执行的结果

MOVA,40H;A=48H直接寻址

MOVR0,A;R0=48H寄存器寻址

MOVP1,#0F0H;P1=0F0H直接寻址

MOV@R0,30H;(48H)=38H寄存器间接寻址

MOVDPTR,#3848H;DPTR=3848H直接寻址

MOV40H,38H;(40H)=(38H)=40H直接寻址

MOVR0,30H;R0=(30H)=38H寄存器寻址

MOVP0,R0;P0=38H直接寻址

MOV18H,#30H;(18H)=30H直接寻址

MOVA,@R0;A=(38H)=40H直接寻址

MOVP2,P1;P2=0F0H直接寻址

3-10设R0=32H,A=48H,片内RAM(32H)=80H,(40H)=08H.求指令运行的结果

MOVA,@R0;A=(32H)=80H

MOV@R0,40H;(32H)=(40H)=08H

MOV40H,A;(40H)=80H

MOVR0,#35H;R0=35H

3-11设A=83H,R0=17H,片内RAM(17H)=34H,求指令运行的结果

ANLA,#17H;A=03H

ORLA,17H;(17H)=(37H

XRLA,@R0;A=37H

CPLA;A=C8H

3-12编程实现片内RAM20H-2FH与30H-3FH中数据的对换

ORG0100H

MOVR0,#20H

MOVR1,#40H

MOVR2,#0FH

LOOP:

MOVA,@R0

MOV@R1,A

INCR0

INCR1

DJNZR2,LOOP

MOVR0,#30H

MOVR1,#20H

MOVR2,#0FH

LOOP1:

MOVA,@R0

MOV@R1,A

INCR0

INCR1

DJNZR2,LOOP1

MOVR0,#30H

MOVR1,#40H

MOVR2,#0FH

LOOP1:

MOVA,@R1

MOV@R0,A

INCR0

INCR1

DJNZR2,LOOP1

SJMP$

END

3-13A=34H,(30H)=4FH,ADDA,30H执行后的结果

A=83H,PSW=41H

3-14SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26)=56H,执行RET后SP=?

PC=?

SP=23H,PC=3412H

3-15SP=25H,PC=2345H,标号LABEL所在的地址3456H,执行LCALLLABEL后SP=?

PC=?

堆栈中的数据有何变化?

SP=27H(26H)=48H(27H)=23HPC=3456H

第四章程序设计基础

4-1片内RAM30H单元开始存放着一组用补码表示的有符号数,数目存于20H单元。

编程统计出正数,0,负数的数目,分别存到21H,22H,23H单元。

ORG0100H

MOV21H,#0

MOV22H,#0

MOV23H,#0

MOVR0,#30H

LOOP:

MOVA,@R0

CJNEA,#0,PD

INC22H

SJMPDONE

PD:

JBACC.7,FU

INC21H

SJMPDONE

FU:

INC23H

DONE:

INCR0

DJNZ20H,LOOP

SJMP$

END

4-2片内RAM20H-2FH.凡是满足奇偶校验的数据(1的个数为偶数)的数转存到片外8000H开始的数据区

ORG0100H

MOVR0,#20H

MOVDPTR,#8000H

MOVR2,#0FH

LOOP:

MOVA,@R0

JBPSW.0,DONE

MOVX@DPTR,A

INCDPTR

DONE:

INCR0

DJNZR2,LOOP

SJMP$

END

4-3编程,把外部RAM1000H-10FFH的数据传送到2000H开始的区域

ORG0100H

MOVR3,#10H

MOVR4,#20H

MOVDPL,#00H

MOVR2,#0

LOOP:

MOVDPH,R3

MOVXA,@DPTR

MOVDPH,R4

MOVX@DPTR,A

INCDPL

DJNZR2,LOOP

SJMP$

END

4-4片内RAM30H单元开始存放着一组无符号数,其数目在21H单元中。

编程将其中最小的数存入21H

ORG0100H

MOVR0,#30H

MOVR2,21H

MOVA,30H

LOOP:

CJNEA,@R0,PD

SJMPDONE

PD:

JNCDONE

MOV22H,@R0

XCHA,22H

DONE:

INCR0

DJNZR2,LOOP

MOV21H,A

SJMP$

END

4-5编程实现片内RAM30H单元开始的16个数按顺序颠倒过来

ORG0100H

MOVR0,#30H

MOVR1,#40H

MOVR2,#0FH

LOOP:

MOVA,@R0

MOV@R1,A

INCR0

INCR1

DJNZR2,LOOP

MOVR2,#0FH

MOVR0,#40H

MOVR1,#3FH

LOOP1:

MOVA,@R0

MOV@R1,A

INCR0

DECR1

DJNZR2,LOOP1

SJMP$

END

4-6编程实现片内RAM30H单元开始的16个数,存有最小数值的所在单元的内容改为0FFH

ORG0100H

MOVR0,#30H

MOVR2,#16

MOVA,30H

MOV22H,#0;22H存放找到的16个数中的最小值

MOV23H,#0;存放最小数值的地址放到23H

LOOP:

CJNEA,@R0,PD

SJMPDONE

PD:

JNCDONE

MOV22H,@R0

MOV23H,R0

XCHA,22H

DONE:

INCR0

DJNZR2,LOOP

MOVR0,23H

MOV@R0,#0FFH

SJMP$

END

4-7编程实现P1.7=P1.6(P1.5

P1.4)

ORG0100H

MOVC,P1.5

ANLC,/P1.4

MOV20H,C

MOVC,P1.4

ANLC,/P1.5

ORLC,20H

ANLC,P1.6

MOVP1.7,C

END

4-8编程统计片内RAM30H单元开始的16个数,有多少数大于40,小于80,将结果存入40H单元中

ORG0100H

MOVR0,#30H

MOVR2,#16

MOV40H,#0

LOOP:

MOVA,@R0

CJNEA,#40,PD

SJMPDONE

PD:

JNCPD2

SJMPDONE

PD2:

CJNEA,#80,PD3

SJMPDONE

PD3:

JCCOUNT

SJMPDONE

COUNT:

INC40H

DONE:

INCR0

DJNZR2,LOOP

SJMP$

END

第六章中断系统

6-1定时器T0和T1各有几种工作方式?

请简述。

答:

四种。

工作方式

T0

T1

最大计数模值

初值加载方式

最大计数模值

初值加载方式

方式0

213

人工加载

213

人工加载

方式1

216

人工加载

216

人工加载

方式2

28

自动加载

28

自动加载(常用于串口通信波特率发生器)

方式3

28

TH0、TL0被分成两个相互独立的8位计数器;TL0既可做定时器也可做计数器;TH0可做内部定时器。

人工加载初值

8位计数,无中断产生,自动加载初值,用于不需要中断的场合

6-2已知单片机系统时钟频率fosc=12MHz,若要求定时值分别为0.1ms、1ms、10ms,定时器T0工作在方式0,方式1和方式3时,定时器对应的初值各为多少?

定时时间

工作方式0初值

工作方式1初值

工作方式2初值

工作方式3初值

0.1ms

FC1CH

FF9CH

9CH

9CH

1ms

E018H

FC18H

10ms

D8F0H

6-3定时器/计数器T0已预置为156,工作于方式2计数,现T0引脚上输入周期为1ms的脉冲,问:

(1)此时T0的实际用途是?

(2)在什么情况下,T0溢出?

答:

(1)计数器

(2)T0可记录100个外部脉冲,即从开始启动工作,经过100ms开始溢出。

6-4设系统时钟为6MHz,利用T0和P1.0产生连续矩形波,高电平宽度为50us,低电平宽度为300us。

解:

因为系统时钟为6MHz,则一个计数脉冲为2us,若T0工作于方式1,则P1.0输出高电平T0需记录25个脉冲,计数初值为216-25=FFE7H,,则P1.0输出低电平T0需记录150个脉冲,计数初值为216-150=FF6AH,编程如下

ORG0000H

LJMPMAIN

ORG000BH

LJMPT00

ORG0100H

MAIN:

MOVSP,#60H

MOVTMOD,#01H

MOVTH0,#0FFH

MOVTL0,#0E7H

SETBEA

SETBET0

SETBP1.0

SETBTR0

SJMP$

T00:

JNBP1.0,QF

MOVTH0,#FFH

MOVTL0,#0E7H

SJMPDONE

QF:

MOVTH0,#0FFH

MOVTL0,#6AH

DONE:

CPLP1.0

RETI

END

6-5利用定时器来测量单次正脉冲宽度,采用何种方式可获得最大量程?

设f0sc=6MHz,求允许测量的最大脉冲宽度是多少?

答:

定时器方式1,最大脉冲宽度为2us*216=131.072ms

6-6试编制一程序,其功能为:

当P1.2引脚的电平上跳时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平下跳时,停止计数,并将计数值写入R6与R7。

解:

P1.1接P3.4引脚,利用T0做计数器,工作于方式1,初值为0(T0未工作于中断方式)

ORG0000H

LJMPMAIN

;ORG000BH

ORG0100H

MAIN:

MOVSP,#60H

MOVR6,#0

MOVR7,#0

MOVTMOD,#05H

MOVTH0,#0

MOVTL0,#0

LOOP:

JNBP1.2,LOOP

SETBTR0

LOOP1:

JBP1.2,LOOP1

CLRTR0

MOVR6,TH0

MOVR7,TL0

SJMP$

END

6-7试用中断技术设计一发光二极管LED闪烁电路,闪烁周期为2s,要求亮1s,再暗1s。

解:

设P1.0接1发光二极管,低电平点亮;利用定时器T0,工作于定时器方式2,设系统频率为fosc=12MHz,则一个定时脉冲为1us,每次中断定时250us,则需要4000个中断实现1s的定时

利用R6,R7做软件计数器,初值分别为40,100;定时初值28-250=06H

ORG0000H

LJMPMAIN

ORG000BH

LJMPT00

ORG0100H

MAIN:

MOVSP,#60H

MOVTMOD,#02H

MOVTH0,#06H

MOVTL0,#06H

MOVR6,#40

MOVR7,#100

CLRP1.0

SETBEA

SETBET0

SETBTR0

SJMP$

T00:

DJNZR6,DONE

MOVR6,#40

DJNZR7,DONE

MOVR7,#100

DONE:

CPLP1.0

RETI

END

6-8试用中断方法设计秒、分脉冲发生器,即由8031的P1.0每秒产生一个机器周期的正脉冲,由P1.1每分钟产生一个机器周期的正脉冲。

解:

设系统时钟频率为12MHz,则一个计数脉冲为1us,利用T0做定时器记录50ms,计数初值为216-50000=3CB0H,利用R6,R7为软件计数器,初值为20,60,分别实现1s和1分钟的定时

ORG0000H

LJMPMAIN

ORG000BH

LJMPT00

ORG0100H

MAIN:

MOVSP,#60H

MOVTMOD,#01H;T0定时器,工作方式1

MOVTH0,#3CH

MOVTL0,#0B0H;装入50ms的初始值

MOVR6,#20

MOVR7,#60

CLRP1.0;P1.0,P1.1均输出低电平

CLRP1.1

SETBEA

SETBET0

SETBTR0;中断允许,开始定时

SJMP$

T00:

DJNZR6,DONE;R6-1=0,定时1秒时间到

SETBP1.0;P1.0输出1us的高电平

CLRP1.0;P1.0继续输出低电平

MOVR6,#20

DJNZR7,DONE;R7-1=0,定时1分钟时间到

SETBP1.1;P1.1输出1us的高电平

CLRP1.1;P1.1继续输出低电平

MOVR7,#60

DONE:

MOVTH0,#3CH

MOVTL0,#0B0H

RETI

END

第七章串口工作方式0——关于I0接口的扩展

7-1利用74LS164并行输出8只发光二极管,将二极管从左至右点亮,时间间隔1S左右,并循环往复,画出电路原理图,编程实现。

(P109)

ORG0100H

MOVSCON,#00H

MOVA,#80H

LOOP:

MOVSBUF,A

ACALLDEL1S

RRA

SJMPLOOP

7-4利用MCS-51系列单片机的串行接口设计键盘输入电路(P111)

第九章模拟量输入输出接口技术

9-1在一个fosc为12MHz的8031单片机系统中,接有一片DAC0832,它的地址为7FFFH,输出电压为0-5V,请画出有关逻辑框图并编写程序,使其运行后能在示波器上显示锯齿波(设示波器X方向扫描频率为50us/格,Y方向扫描频率为1V/格)。

答:

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

MOVSP,#60H

MOVDPTR,#7FFFH

LOOP:

MOVA,#00H

LOOP1:

MOVX@DPTR,A;2

INCA;1

CJNEA,#0,LOOP1;2

SJMPLOOP

END

输出波形为周期是255us,幅值为5V的锯齿波.

9-2在fosc=12MHz的系统中,接有ADC0809,地址为7FF8H-7FFFH,试画出逻辑框图并编写ADC0809的初始化程序和定时取样通道2的程序(假设取样频率为1ms一次,每次取样4个数据,存于8031单片机内部RAM70h-73h中)。

答:

P1.0连接0809的START端

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

MOVSP,#60H

MOVDPTR,#7FFAH

MOV70H,#0

MOV71H,#0

MOV72H,#0

MOV73H,#0

MOVR2,#4

MOVR0,#70H

LOOP:

ACALLDEL_1ms

LOOP1:

SETBP1.0

NOP

NOP

NOP

CLRP1.0

MOVXA,@DPTR

MOV@R0,A

ACALLDEL_100us

INCR0

DJNZR2,LOOP1

MOVR0,#70H

MOVR2,#4

SJMPLOOP

DEL_1ms:

MOVR7,#5;1

DEL2:

MOVR6,#100;1

DEL1:

DJNZR6,DEL1;2

DJNZR7,DEL2;2

RET

DEL_100us:

MOVR5,#5;1

DEL21:

MOVR4,#10;1

DEL11:

DJNZR4,DEL11;2

DJNZR5,DEL21;2

RET

END

9-3DAC0832与8031单片机连接时有哪些控制信号?

其作用是什么?

P201

答:

两个引脚,使数据线上的数据送入输入寄存器;当CPU发出控制信号

时,把输入寄存器中的数据送给DAC寄存器,并随即由D/A转换器进行转换,变成模拟信号输出。

9-4已知DAC0832的地址为7FFFH,输出电压为0-5V,编写产生矩形波的转换程序,其波形占空比为1:

4,高电平电压为2.5V,低电平电压为1.25V。

答:

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

MOVSP,#60H

MOVDPTR,#7FFFH

MOVR2,#3

LOOP:

MOVA,#7FH

MOVX@DPTR,A;2

ACALLDEL

MOVA,#40H

MOVX@DPTR,A

DELL:

ACALLDEL

DJNZR2,DELL

MOVR2,#3

SJMPLOOP

DEL:

MOVR7,#10;若主频为12MHz,则波形周期为400us

DEL2:

MOVR6,#20

DEL1:

DJNZR6,DEL1

DJNZR7,DEL2

RET

END

9-5已知ADC0809的地址为7FF8H-7FFFH。

编写每隔100ms轮流采集一次8个通道数据的程序,共取样10次,其取样值存入片外RAM从3000H开始的存储单元中(设fosc=6MHz)

答:

P1.0连接0809的START端,

ORG0000H

LJMPMAIN

ORG0003H

LJMPZD0

ORG0100H

MAIN:

MOVSP,#60H

MOVR7,#7FH

MOVR6,#0F8H;放08090路地址

MOVR4,#00H

MOVR5,#30H;将采集的数据放到片外RAM3000H开始的地址

MOVR2,#8;记录8路

MOVR3,#10;记录10次

MOV20H,#10;记录延时

LOOP:

ACALLDEL_100ms

DJNZ20H,LOOP

MOV20H,#10

LOOP1:

MOVDPH,R7

MOVDPL,R6

SETBP1.0

NOP

NOP

NOP

CLRP1.0

MOVXA,@DPTR;转换0路

MOVR7,DPH

MOVR6,DPL

MOVDPH,R5

MOVDPL,R4

MOVX@DPTR,A

INCR6

INCR4

DJNZR2,LOOP1

MOVR2,#8

MOVR7,#7FH

MOVR6,#0F8H

MOVR4,#00H

MOVR5,#30H

DJNZR3,LOOP

DEL_10ms:

MOV21H,#50;1

DEL2:

MOV22H,#50;1

DEL1:

DJNZ22H,DEL1;2

DJNZ21H,DEL2;2

RET

END

9-6根据图9.30MC14433的选通脉冲时序图回答什么是字位动态扫描BCD码输出方式及如何读取转换结果?

第十章

10-1消除键盘抖动的软件方法是什么?

答:

软件延时10ms

10-3设计5*5的矩阵键盘并叙述其工作原理。

10-4设计一个两位BCD码拨盘输入电路,通过P0口输入,编写数据读入的程序。

10-5

10-6应用74LS164集成电路,设计3位LED数码管的静态显示电路,编写显示程序段

解:

利用CPU的串口接164的时钟和数据端,即Rx接数据口,Tx接时钟端

ORG0000H

LJMPMAIN

ORG0100H

MAIN:

MOVSP,#60H

LOO

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

当前位置:首页 > 小学教育

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

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