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

发布时间:2020-04-04 02:41:14   来源:文档文库   
字号:

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

课后习题参考答案

第三章MCS-51指令系统

3-1 MCS-51指令系统有哪几种寻址方式?按功能分类有哪几种指令?

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

MOV A,@R0 ;A=0AH

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

MOV 32H,A ;(32H)=0AH

MOV R0,#31H ;R0=31H

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

3-3

1R0的内容传送到R1

MOV A,R0

MOV R1,A

(2)内部RAM 20H单元的内容传送到A

MOV A,20H

(3)外部RAM 30H单元的内容传送到R0

MOV R1,#30H

MOVX A,@R1

MOV R0,A

(4) 外部RAM 30H单元的内容传送到内部RAM 20H单元

MOV R1,#30H

MOVX A,@R1

MOV 20H,A

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

MOV DPTR,#1000H

MOVX A,@DPTR

MOV 20H,A

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

MOV DPTR,#2000H

CLR A

MOVC A,@A+DPTR

MOV R1,A

(7) RAM 2000H单元的内容传送到内部RAM 20H单元

MOV DPTR,#2000H

MOVX A,@DPTR

MOV 20H,A

(8) RAM 2000H单元的内容传送到外部RAM 30H单元

MOV DPTR,#2000H

MOVX A,@DPTR

MOV R0,#30H

MOVX @R0,A

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

MOV DPTR,#2000H

MOVX A,@DPTR

MOV DPTR,#1000H

MOVX @DPTR,A

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

MOV R0,#30H ;R0=30H

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

MOV R1,A ;R1=5AH

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

MOV A,P1 ;A=7FH

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

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

3-5 编程,将内部RAM 20H-2FH16个连续单元清零

ORG 0100H

MOV R0,#20H

MOV R2,#16

LOOP: MOV @R0,#00H

INC R0

DJNZ R2,LOOP

END

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

ORG 0100H

MOV 21H,#0

MOV R2,#8

MOV A,20H

CLR C

LOOP: RLC A

JC COUNT

DJNZ R2, LOOP

SJMP STOP

COUNT: INC 21H

DJNZ R2,LOOP

STOP:SJMP $

END

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

ORG 0100H

MOV 51H,#0

MOV R0,#30H

MOV R2,#20H

LOOP:MOV A,@R0

CJNE A,#0FFH,AGAIN

INC 51H

AGAIN: INC R0

DJNZ R2,LOOP

SJMP $

END

3-8编程,计算ff9a61a78b592b6366f0762b33dcb2c4.png,并将结果存入内部的30H单元

ORG 0100H

MOV 30H,#0

MOV 31H,#0 ; i的初值

MOV R0,#30H

MOV R2,#11

MOV A,31H

LOOP:INC 31H

ADD A,@R0

MOV @R0,A

MOV A,31H

RL A

DJNZ R2,LOOP

SJMP $

END

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

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

MOV R0,A R0=48H 寄存器寻址

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

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

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

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

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

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

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

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

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

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

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

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

MOV 40H,A ; (40H)=80H

MOV R0,#35H ; R0= 35H

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

ANL A,#17H ;A=03H

ORL A,17H ; (17H)=37H

XRL A ,@R0 ; A=37H

CPL A ;A=C8H

3-12编程实现片内RAM 20H-2FH30H-3FH中数据的对换

ORG 0100H

MOV R0,#20H

MOV R1,#40H

MOV R2,#0FH

LOOP: MOV A,@R0

MOV @R1,A

INC R0

INC R1

DJNZ R2,LOOP

MOV R0,#30H

MOV R1,#20H

MOV R2,#0FH

LOOP1: MOV A,@R0

MOV @R1,A

INC R0

INC R1

DJNZ R2,LOOP1

MOV R0,#30H

MOV R1,#40H

MOV R2,#0FH

LOOP1: MOV A,@R1

MOV @R0,A

INC R0

INC R1

DJNZ R2,LOOP1

SJMP $

END

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

A=83H,PSW=41H

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

SP=23H,PC=3412H

3-15 SP=25H,PC=2345H,标号LABEL所在的地址3456H,执行LCALL LABELSP=PC=,堆栈中的数据有何变化?

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


第四章 程序设计基础

4-1片内RAM 30H单元开始存放着一组用补码表示的有符号数,数目存于20H单元。编程统计出正数,0,负数的数目,分别存到21H,22H,23H单元。

ORG 0100H

MOV 21H,#0

MOV 22H,#0

MOV 23H,#0

MOV R0,#30H

LOOP: MOV A,@R0

CJNE A,#0 ,PD

INC 22H

SJMP DONE

PD:JB ,FU

INC 21H

SJMP DONE

FU:INC 23H

DONE: INC R0

DJNZ 20H,LOOP

SJMP $

END

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

ORG 0100H

MOV R0,#20H

MOV DPTR,#8000H

MOV R2,#0FH

LOOP: MOV A,@R0

JB ,DONE

MOVX @DPTR,A

INC DPTR

DONE: INC R0

DJNZ R2,LOOP

SJMP $

END

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

ORG 0100H

MOV R3,#10H

MOV R4,#20H

MOV DPL,#00H

MOV R2,#0

LOOP:MOV DPH,R3

MOVX A,@DPTR

MOV DPH,R4

MOVX @DPTR,A

INC DPL

DJNZ R2,LOOP

SJMP $

END

4-4片内RAM 30H单元开始存放着一组无符号数,其数目在21H单元中。编程将其中最小的数存入21H

ORG 0100H

MOV R0,#30H

MOV R2,21H

MOV A,30H

LOOP: CJNE A,@R0,PD

SJMP DONE

PD:JNC DONE

MOV 22H,@R0

XCH A,22H

DONE: INC R0

DJNZ R2,LOOP

MOV 21H,A

SJMP $

END

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

ORG 0100H

MOV R0,#30H

MOV R1,#40H

MOV R2,#0FH

LOOP:MOV A,@R0

MOV @R1,A

INC R0

INC R1

DJNZ R2,LOOP

MOV R2,#0FH

MOV R0,#40H

MOV R1,#3FH

LOOP1: MOV A,@R0

MOV @R1,A

INC R0

DEC R1

DJNZ R2,LOOP1

SJMP $

END

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

ORG 0100H

MOV R0,#30H

MOV R2,#16

MOV A,30H

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

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

LOOP: CJNE A,@R0,PD

SJMP DONE

PD:JNC DONE

MOV 22H, @R0

MOV 23H,R0

XCH A,22H

DONE: INC R0

DJNZ R2,LOOP

MOV R0,23H

MOV @R0,#0FFH

SJMP $

END

4-7 编程实现=3eb02fff4997ea78e9c47152ebbc24c3.png ORG 0100H

MOV C,

ANL C,/

MOV 20H,C

MOV C,

ANL C,/

ORL C,20H

ANL C,

MOV ,C

END

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

ORG 0100H

MOV R0,#30H

MOV R2,#16

MOV 40H,#0

LOOP:MOV A,@R0

CJNE A,#40,PD

SJMP DONE

PD:JNC PD2

SJMP DONE

PD2:CJNE A,#80,PD3

SJMP DONE

PD3:JC COUNT

SJMP DONE

COUNT:INC 40H

DONE:INC R0

DJNZ R2,LOOP

SJMP $

END

第六章 中断系统

6-1 定时器T0T1各有几种工作方式?请简述。

答:四种。

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

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

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

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

答:(1)计数器

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

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

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

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T00

ORG 0100H

MAIN:MOV SP,#60H

MOV TMOD,#01H

MOV TH0,#0FFH

MOV TL0,#0E7H

SETB EA

SETB ET0

SETB

SETB TR0

SJMP $

T00:JNB ,QF

MOV TH0,#FFH

MOV TL0,#0E7H

SJMP DONE

QF: MOV TH0,#0FFH

MOV TL0,#6AH

DONE:CPL

RETI

END

6-5 利用定时器来测量单次正脉冲宽度,采用何种方式可获得最大量程?设f0sc=6MHz,求允许测量的最大脉冲宽度是多少?

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

6-6 试编制一程序,其功能为:当引脚的电平上跳时,对的输入脉冲进行计数;当引脚的电平下跳时,停止计数,并将计数值写入R6R7

解:接引脚,利用T0计数器,工作于方式1,初值为0T0未工作于中断方式)

ORG 0000H

LJMP MAIN

;ORG 000BH

ORG 0100H

MAIN:

MOV SP,#60H

MOV R6,#0

MOV R7,#0

MOV TMOD,#05H

MOV TH0,#0

MOV TL0,#0

LOOP:JNB ,LOOP

SETB TR0

LOOP1:JB ,LOOP1

CLR TR0

MOV R6,TH0

MOV R7,TL0

SJMP $

END

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

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

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

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T00

ORG 0100H

MAIN:MOV SP,#60H

MOV TMOD,#02H

MOV TH0,#06H

MOV TL0,#06H

MOV R6,#40

MOV R7,#100

CLR

SETB EA

SETB ET0

SETB TR0

SJMP $

T00:DJNZ R6,DONE

MOV R6,#40

DJNZ R7,DONE

MOV R7,#100

DONE:CPL

RETI

END

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

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

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T00

ORG 0100H

MAIN:MOV SP, #60H

MOV TMOD, #01H T0定时器,工作方式1

MOV TH0, #3CH

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

MOV R6,#20

MOV R7,#60

CLR ,均输出低电平

CLR

SETB EA

SETB ET0

SETB TR0 ;中断允许,开始定时

SJMP $

T00: DJNZ R6,DONE R6-1=0,定时1秒时间到

SETB 输出1us的高电平

CLR ;继续输出低电平

MOV R6,#20

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

SETB ;输出1us的高电平

CLR ;继续输出低电平

MOV R7,#60

DONE: MOV TH0,#3CH

MOV TL0,#0B0H

RETI

END


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

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

ORG 0100H

MOV SCON,#00H

MOV A,#80H

LOOP:MOV SBUF,A

ACALL DEL1S

RR A

SJMP LOOP

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

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

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

答:ORG 0000H

LJMP MAIN

ORG 0100H

MAIN:MOV SP,#60H

MOV DPTR,#7FFFH

LOOP:MOV A,#00H

LOOP1:MOVX @DPTR,A ;2

INC A ;1

CJNE A,#0,LOOP1 ;2

SJMP LOOP

END

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

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

答:连接0809START

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN:MOV SP,#60H

MOV DPTR,#7FFAH

MOV 70H,#0

MOV 71H,#0

MOV 72H,#0

MOV 73H,#0

MOV R2,#4

MOV R0,#70H

LOOP:

ACALL DEL_1ms

LOOP1: SETB

NOP

NOP

NOP

CLR

MOVX A,@DPTR

MOV @R0,A

ACALL DEL_100us

INC R0

DJNZ R2,LOOP1

MOV R0,#70H

MOV R2,#4

SJMP LOOP

DEL_1ms:MOV R7,#5 ;1

DEL2:MOV R6,#100 ;1

DEL1:DJNZ R6,DEL1 ;2

DJNZ R7,DEL2 ;2

RET

DEL_100us: MOV R5,#5 ;1

DEL21:MOV R4,#10 ;1

DEL11:DJNZ R4,DEL11 ;2

DJNZ R5,DEL21 ;2

RET

END

9-3 DAC 08328031单片机连接时有哪些控制信号其作用是什么P201

a86d0519f896a561a903f14727d252ec.png,173423e63ae6ef8f5ab48d2f73df7ba4.png,5f067973fa34918cd5977416207c95d6.png,1243576fb1f2dd9cacbe220315c59db0.pnga86d0519f896a561a903f14727d252ec.png,173423e63ae6ef8f5ab48d2f73df7ba4.png两个引脚,使数据线上的数据送入输入寄存器;当CPU发出控制信号5f067973fa34918cd5977416207c95d6.png,1243576fb1f2dd9cacbe220315c59db0.png时,把输入寄存器中的数据送给DAC寄存器,并随即由D/A转换器进行转换,变成模拟信号输出。

9-4 已知DAC 0832的地址为7FFFH,输出电压为0-5V,编写产生矩形波的转换程序,其波形占空比为14,高电平电压为,低电平电压为。

答:ORG 0000H

LJMP MAIN

ORG 0100H

MAIN:MOV SP,#60H

MOV DPTR,#7FFFH

MOV R2,#3

LOOP:MOV A,#7FH

MOVX @DPTR,A ;2

ACALL DEL

MOV A,#40H

MOVX @DPTR,A

DELL: ACALL DEL

DJNZ R2,DELL

MOV R2,#3

SJMP LOOP

DEL:MOV R7,#10 ;若主频为12MHz,则波形周期为400us

DEL2:MOV R6,#20

DEL1:DJNZ R6,DEL1

DJNZ R7,DEL2

RET

END

9-5已知ADC 0809的地址为7FF8H-7FFFH。编写每隔100ms轮流采集一次8个通道数据的程序共取样10其取样值存入片外RAM3000H开始的存储单元中fosc=6MHz

连接0809START,

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP ZD0

ORG 0100H

MAIN:MOV SP,#60H

MOV R7,#7FH

MOV R6,#0F8H ;0809 0路地址

MOV R4,#00H

MOV R5,#30H ;将采集的数据放到片外RAM 3000H开始的地址

MOV R2,#8 ;记录8

MOV R3,#10 ;记录10

MOV 20H,#10;记录延时

LOOP:

ACALL DEL_100ms

DJNZ 20H,LOOP

MOV 20H,#10

LOOP1: MOV DPH,R7

MOV DPL,R6

SETB

NOP

NOP

NOP

CLR

MOVX A,@DPTR;转换0

MOV R7,DPH

MOV R6,DPL

MOV DPH,R5

MOV DPL,R4

MOVX @DPTR,A

INC R6

INC R4

DJNZ R2,LOOP1

MOV R2,#8

MOV R7,#7FH

MOV R6,#0F8H

MOV R4,#00H

MOV R5,#30H

DJNZ R3,LOOP

DEL_10ms:MOV 21H,#50 ;1

DEL2:MOV 22H,#50 ;1

DEL1:DJNZ 22H,DEL1 ;2

DJNZ 21H,DEL2 ;2

RET

END

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

第十章

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

答:软件延时10ms

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

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

10-5

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

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

ORG 0000H

LJMP MAIN

ORG 0100H

MAIN:

MOV SP,#60H

LOOP:MOV R0,#30H

MOV R2,#3

LOOP1:MOV A,@R0

MOV SBUF,A

NOP

NOP

NOP

INC R0

DJNZ R2,LOOP1

SJMP LOOP

END

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

第十章 10-6

本文来源:https://www.2haoxitong.net/k/doc/353065ffa800b52acfc789eb172ded630a1c9869.html

《单片机原理及应用技术苏家建曹柏荣汪志锋课后习题参考答案(1).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式