MCS—51系列单片机习题

第2章 MCS—51系列单片机的硬件结构

2.1 综述MCS—51系列单片机的大致功能。

2.2 请结合MCS—51系列单片机的结构框图,阐明其大致组成。

2.3 学了第1章,你认为微型计算机的结构应包含有哪些部件?学了第2章,你认
为单片机至少包含有哪些部件?

2.4 综述MCS—51系列单片机各引脚的作用,并试行分类。

2.5 什么是ALU?简述MCS—51系列单片机ALU的功能与特点。

2.6 程序计数器的符号是什么?MCS—51系列单片机的程序计数器有几位?它的
位置在哪里?

2.7 何谓程序状态字?它的符号是什么?它的位置在哪里?它各位的含义是什
么?为1、为0各代表什么?各在何种场合有用?

2.8 请多看些参考书(微机、单片机方面的教材),在这基础上阐述我们“研究CPU
时序的意义”。

2.9 何谓时钟周期、机器周期、指令周期?针对MCS—51系列单片机,如采用
12MHz晶振,它们的频率和周期各是什么值?

2.10 我们通常说:“CPU执行一条指令的时间称为指令周期”。请结合CPU时序判
断:指令周期是否包含取指时间在内?再联系主教材图1-14,阐明指令取得后,是送那
里以有条不紊地实现指令操作码所规定的功能的?另外,单片机内部协调工作的最小时
间单元是不是指令周期?

2.11 试说明MCS—51系列单片机自振荡源开始是怎样逐级分频而得到周期为1us
的内部时钟脉冲的。

2.12 “一般说,PC指的是现指令的地址;严格说,PC指的是下一条指令的地址。”
请结合时序解释上述说法。

2.13 综述MCS—51系列单片机其内存可由哪几部分组成?其编址与访问的规律
是怎样的?

2.14 EA 引脚的作用是什么?在下列四种情况下,EA引脚各应接何种电平?


(1)只有片内ROM

(2)只有片外ROM

(3)有片内ROM和片外ROM


(4)有片内ROM和片外ROM,片外ROM所存为调试程度。

2.15 MCS—51系列单片机片内RAM有多少单元?有哪些用途?这些用途各占用
哪些单元?又,堆栈的栈区设在哪里?

2.16 绘图示出MCS—51系列单片机的各可寻址位,并统计共有多少个可寻址位。

2.17 何谓特殊功能寄存器?8031有哪些特殊功能寄存器?试按其用途相关联的硬
件功能单元(如CPU、并行I/O口、串行I/O口、定时器/计数器、中断控制等)进行
分类。

2.18 综述TMOD、TCON、SCON、IE、IP、PCON等6个专用寄存器的名称、
应用场合各位的定义与各位内容的更换办法。

2.19 请结合教材图2-9,综述MCS—51系列单片机定时器/计数器0、1的结构与
工作原理。

2.20 定时器/计数器0已预置为FFFFH,并选定用于方式1的计数器方式,问此时
定时器/计数器0的实际用途将是

什么?

2.21 定时器/计数器0如用于下列定时,晶振为12MHz,试为定时器/计数器0编
制初始化程序。

(1)50ms (2)25ms

2.22 定时器/计数器0已预置为156,且选定用于方式2的计数器方式,现在TO
引脚上输入周期为1ms的脉冲,问:

(1)此时定时器/计数器0的实际用途是什么?

(2)在什么情况下,定时器/计数器0溢出?

2.23 设fosc=12MHz,定时器/计数器0的初始化程序和中断服务程序如下:

;主程序

MOV TH0,#0DH

MOV TL0,#0D0H

MOV TMOD,#01H

SETB TR0




;中断服务程序

000B MOV TH0,#0DH


MOV TL0,#0D0H




RETI

请回答:(1)该定时器/计数器工作于什么方式?

(2)相应的定时时间或计数值是多少?

(3)为什么在中断服务程序中要重置定时器/计数器的初值?

2.24 综述定/计0、定/计1、定/计2各有哪几种工作方式,相应的工作特征与用法。

2.25 请归纳MCS—51系列单片机的定时器/计数器共有哪些用途并说清其具体用
法。

2.26 综述P0、P1、P2、P3口各有哪几种功能。

2.27 试根据P0、P1、P2、P3各口的不同用途,综述各口每一引脚具体电路的异
同。

2.28 在读回端口数据时,为什么应读锁存器内容,而不宜读引脚电平?

2.29 阐明“准双向口”这一名称所以要加用“准”字的理由。

2.30 分析有哪些MCS—51系列单片机组成的应用系统,其P2口可用作通用I/O
口。

2.31 怎样确定MCS—51系列单片机串行口的工作方式?有哪几种工作方式?请
说明各种工作方式的功能、应用场合与相应的波特率。

2.32 何谓波特率?综述MCS—51系列单片机有哪些功能部件可作为波特率发生
器,以及相应的波特率计算公式。

2.33 何谓串行通信、单工、半双工、全双工、发送、接收、异步通信、同步通信、
起始位、停止位、空闲位、一帧信息、同步字符、双机通信、多机通信。

2.34 试简述:

(1)并行通信、串行通信的优缺点。

(2)民间步通信、同步通信的优缺点。

(3)异步、多机通信时如何鉴别地址帧与数据帧。

2.35 在串行异步通信时,传送具有一位偶校验位的ASCII码字符,传送速率为2400
波特,问每秒传送的字符数最多可为多少个?某帧传送的为英文字母T,请写出该帧信
息的二进制代码。


2.36 在串行异步通信时,要传送8位数据3BH,另采用偶校验位1位,请写出该
帧信息的二进制代码。

2.37 在串行异步通信时,传送最高位为奇校验位的ASCII码,采用1位起始位和
1位停止位,若ASCII码为39H,请写出该帧信息的二进制代码。

2.38 如异步通信,每个字符由11位组成,串行口每秒传送250个

字符,问波特率
为多少?

2.39 请列举MCS—51系列单片机的中断源和中断申请方法,并结合专用寄存器
IE、IP的功能详细说明如何开中断以及各中断源中断优先权的高低是如何排列确定的。

2.40 如外部中断请求INT0(INT1)采用跳变触发方式,问在响应前和响应后编程
时应作何种安排?


2.41 阐明8031单片机:

(1)响应中断的条件与响应中断后由硬件自动完成的操作。

(2)在中断过程中另有哪些不能自动完成,必需由中断服务程序处理的操作。

(3)上面(2)中的这些操作有什么意义?又为什么不设计成自动完成?

2.42 MCS—51怎样实现上电复位与操作复位?并请综述各专用寄存器复位后的状
态。

2.43 MCS—51系列单片机怎样实现掉电保护?怎样工作在节电操作方式?

2.44 如果单片机系统要求记录引脚P1.1上出现负跳变的时间,问定/计2应工作于
何种方式?专用寄存器T2CON应具有什么样的内容?

2.45 某单片机系统用于定时测试压力、温度,并用定/计0实现定时。如压力超限
和温度超限的报警信号分别由INT0、INT1 输入,中断优先权排列顺序依次为压力超
限→温度超限→定时检测,试确定专用寄存器IE和IP的内容。

2.46 上题如压力超限和温度超限的报警信号改由INT0、INT1分别输入,其它不
作改变,问IE和IP的内容将作何种改变?



第3章 MCS—51系列单片机的指令系统


和汇编语言程序



3.1 汇编指令


3.1.1 请阐明机器语言、汇编语言、高级语言三者的主要区别,进一步说明为什么
这三种语言缺一不可。

3.1.2 请总结:

(1)汇编语言程序的优缺点和适用场合。

(2)学习微机原理课程时,为什么一定要学汇编语言程序?

3.1.3 MCS—51系列单片机的寻址方式有哪几种?请列表分析各种寻址方式的访问
对象与寻址范围。

3.1.4 要访问片内RAM,可有哪几种寻址方式?

3.1.5 要访问片外RAM,有哪几种寻址方式?

3.1.6 要访问ROM,又有哪几种寻址方式?

3.1.7 试按寻址方式对MCS—51系列单片机的各指令重新进行归类(一般根据源
操作数寻址方式归类,程序转移类指令例外)。

3.1.8 试分别针对51子系列与52子系列,说明MOV A,direct指令与MOV A,
@Rj指令的访问范围。

3.1.9 传送类指令中哪几个小类是访问RAM的?哪几个小类是访问ROM的?为
什么访问ROM的指令那么少?CPU访问ROM多不多?什么时候需要访问ROM?

3.1.10 试绘图示明MCS—51系列单片机数据传送类指令可满足的各种传送关系。

3.1.11 请选用指令,分别达到下列操作:

(1)将累加器内容送工作寄存器R6。

(2)将累加器内容送

片内RAM的7BH单元。

(3)将累加器内容送片外RAM的7BH单元。

(4)将累加器内容送片外RAM的007BH单元。

(5)将ROM007BH单元内容送累加器。

3.1.12 区分下列指令的不同功能:

(1)MOV A,#24H与MOV A,24H

(2)MOV A,R0与MOV A,@R0

(3)MOV A,@R0与MOVX A,@R0

3.1.13 设片内RAM30H单元的内容为40H;

片内RAM40H单元的内容为10H;


片内RAM10H单元的内容为00H;

(P1)=0CAH

请写出下列各指令的机器码与执行下列指令后的结果(指各有关寄存器、RAM单
元与端口的内容)。

MOV R0,#30H

MOV A,@R0

MOV R1,A

MOV B,@R1

MOV @R0,P1

MOV P3,P1

MOV 10H,#20H

MOV 30H,10H

3.1.14 已知:(A)=35H,(R0)=6FH,(P1)=FCH,(SP)=C0H,试分别写出
下列指令的机器码及执行各条指令的结果:

(1)MOV R6,A

(2)MOV @R0,A

(3)MOV A,#90H

(4)MOV A,90H

(5)MOV 80H,#81H

(6)MOVX @R0,A

(7)PUSH A

(8)SWAP A

(9)XCH A,R0

3.1.15 已知:(A)=02H,(R1)=7FH,(DPTR)=2FFCH,片内RAM(7FH)
=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出下列指令的
机器码及执行各条指令的结果。

(1)MOV A,@R1

(2)MOVX @DPTR,A

(3)MOVC A,@A+DPTR


(4)XCHD A,@R1

3.1.16 已知:(A)=78H,(R1)=78H,(B)=04H,C=1,片内RAM(78H)=DDH,
片内RAM(80H)=6CH,试分别写出下列指令的机器码及执行各条指令的结果(如涉
及标志位,也要写出)。

(1)ADD A,@R1

(2)ADDC A,78H

(3)SUBB A,#77H

(4)INC R1

(5)DEC 78H

(6)MUL AB

(7)DIV AB

(8)ANL 78H,#78H

(9)ORL A,#0FH

(10)CRL 80H,A

3.1.17 已知:C=0,累加器和R1内容分别为无符号数甲和乙,问:执行指令ADDC
A,R1后,进位位、符号位和溢出位将各为何值?累加器的内容为何,该如何读取?

(1)甲为02H,乙为FFH

(2)甲方01H,乙为F0H

3.1.18 已知:C=0,累加器和R1内容分别为被码表示的带符号数甲和乙,问:执
行指令ADDC A,R1后,进位位、符号位和溢出位将各为何值?累加器的内容为何,
该如何读取?

(1)甲为78H,乙为05H

(2)甲为88H,乙为FBH

(3)甲为78H,乙为69H

(4)甲为88H,乙为97H

(5)甲为7FH,乙为FEH

(6)甲为7FH,乙为80H

3.1.19 已知:C=0,累加器和R1内容分别为无符号数甲和乙,问:执行指令SUBB
A,R1后,进位位、符号位和溢出位将各为何值?累加器的内容为何,该如何读取?


(1)甲为02H,乙为FFH

(2)甲方FFH,乙为02H

3.1.20 已知:C=0,累加器和R1内容分别为补码表示的带符号数甲和乙

,问:执
行指令SUBB A,R1后,进位位、符号位和溢出位将各为何值?累加器的内容为何,
该如何读取?

(1)甲为02H,乙为01H

(2)甲为01H,乙为02H

(3)甲为FFH,乙为FEH

(4)甲为FEH,乙为FFH

(5)甲为04H,乙为FFH

(6)甲为FFH,乙为04H

(7)甲为7FH,乙为C1H

(8)甲为C1H,乙为7FH

3.1.21 请对下列各组数分别计算“与”、“或”、“异或”的结果:

(1)10011010和00001111

(2)11010011和01011010

(3)11001100和00110011

(4)10101010和11111111

3.1.22 为达到下列要求,请说明应采用何种逻辑操作、采用什么操作数。要求不得
改变各未涉及位的内容。

(1)使累加器的最低位置“1”

(2)清除累加器的高4位

(3)使A.2和A.3置“1”

(4)清除A.3、A.4、A.5、A.6

3.1.23 请总结运用“与”、“或”、“异或”指令对字节内容进行修改的各种办法。

3.1.24 写出下列各条指令的机器码,并逐条写出依次执行每一条后的结果和PSW
的内容:

(1)CLR A

(2)MOV A,#9BH


(3)MOV B,#0AFH

(4)ADD A,B

3.1.25 请详细说明RET和RETI这两条指令的区别。

3.1.26 已知:(A)=0,(R1)=40H,片内RAM(30H)=01H,FIRST=2000H,
SECOND=2050H,试分别写出下列指令的机器码及执行各条指令的结果:

(1)FIRST:AJMP SECOND

(2)FIRST:LJMP SECOND

(3)FIRST:SJMP SECOND

(4)FIRST:JZ SECOND

(5)FIRST:CJNE A,30H, SECOND

(6)FIRST:LCALL SECOND

(7)SECOND:DJNZ R1,FIRST

3.1.27 已知:P1.7=1,A.0=0,C=1,FIRST=1000H,SECOND=1020H,试分别写
出下列指令的机器码及执行各条指令的结果:

(1)MOV 26H,C

(2)CPL A.0

(3)CLR P1.7

(4)ORL C,/P1.7

(5)FIRST:JC SECOND

(6)FIRST:JNB A.0,SECOND

(7)SECOND:JBC P1.7,FIRST

3.1.28 要选用工作寄存器3组,请采用三种不同的指令实现之。

3.1.29 列举三种能使累加器A内容清零的指令,并比较其优、缺点。

3.1.30 16位地址共涉及两个字节,请统计在哪些场合按照“先低后高”规则处理,
哪些场合却按照“先高的低”规则。

3.1.31 分组讨论:

(1)算术操作类指令对标志位的影响。

(2)逻辑操作类指令对字节内容的修改。

(3)程序转移类指令长转移、绝对转移、短转移、绝对转移与相对转移、无条件


转移与条件转移的区分;绝对转移指令机器码与转移范围的确定;相对转移指令相对偏
移量的计算;散转指令的查表转移;调用与返主指令的堆栈操作;比较转移指令的格式
与功用。

(4)位操作类指令中直接寻址位的表示方式。

3.1.32 请统计MCS—51系列单

片机有哪些指令可用于数据输入与输出?

3.1.33 请统计MCS—51系列单步机有哪些指令可用于修改并行I/O口端口寄存器
的内容?

3.1.34 综述MCS—51系列单片机指令系统的特点、所长和所短。已学Z80的学生,
试比较两种指令系统的优、缺点。

3.1.35 请按MCS—51系列单片机指令的大类,分别统计其单字节、双字节、三字
节指令数和单周期、双周期、四周期指令数。

3.1.36 试按图3-1所示的格式,整理出MCS—51系列单片机各种指令的速查表(由
机器码的第一字节查指令,或倒查)。

3.1.37 请解释下列名词:

机器码 助记符 操作码 操作数 源程序

目标程序 汇编程序 汇编语言 汇编语言程序

汇编指令 汇编 机器汇编 人工汇编

3.1.38 经过汇编后,下列各条语句的标号将是什么数值?

ORG 2000H

TABLE:DS 10

WORD:DS 15,20,25,30

FANG:EQU 1000H

BEGIN:MOV A,R0

3.1.39 下列程序段经汇编后,从2000H开始的各有关存储单元的内容将是什么?

ORG 2000H

TAB:DS 5

DB 10H,10

DW 2100H

ORG 2050H


DW TAB

DB “WORK”

3.1.40 下列程序段经汇编后,从1000H开始的各有关存储单元的内容将是什么?

ORG 1000H

TAB1:EQU 1234H

TAB2:EQU 3000H

DB “START”

DW TAB1,TAB2

3.2 汇编语言程序

3.2.1 综述汇编语言程序的书写格式。

3.2.2 要将片内RAM 0FH单元的内容传送去专用寄存器B,对0FH单元的寻址可
有三种办法:

(1)R寻址 (2)R间址 (3)direct寻址

请分别编出相应程序,比较其字节数、机器周期数和优缺点。

3.2.3 设(R0)=7EH,(DPTR)=10FEH

片内RAM 7E单元的内容为0FFH

7F单元的内容为38H

试为下列程序的每条指令注释其执行结果。

INC @R0

INC R0

INC @R0

INC DPTR

INC DPTR

INC DPTR

3.2.4 试编程:引用“与”运算,判断某8位二进制数是奇数还是偶数。

3.2.5 试编程:引用“或”运算,使任意8位二进制数的符号位必为“1”。

3.2.6 请思考:引用“异或”运算,怎样可使一带符号数的符号位改变、数据位不
变;怎样可使该数必然变“0”。

3.2.7 要选择工作寄存器组,可有几种编程办法?


3.2.8 某压力测试的线性处理程序如下,如A/D转换器的输出为02H,问执行程序
后(A)=?

MOV P1,#0FFH

MOV A,P1

MOVC A,@A+PC

TAB:DB 00H

DB 00H

DB 01H

DB 02H




DB FEH

END

3.2.9 设ROM、片内RAM、片外RAM各有关单元的内容示如下图,问执行下列
程序段后(A)=?

0000 AJMP 030H

ORG 0030H

0030 MOV R0,#32H

MOV A,@R0

MOV R1,A

MOVX A,@R1

MOVC A,@A+DPTR













片内RAM 片外RAM ROM

3.2.10 若在片内RAM 30H单元中有2位压缩的BCD码95H,问执行下列程序后,


片内RAM 30H单元的内容是什么?31H、32H的内容又是什么?并写出BCD码十进
制调整的过程。

MOV R0,#30H

MOV A,@R0

ANL A,#0FH

MOV R3,A

MOV A,@R0

SWAP A

ANL A,#0FH

ADD A,R3

DA A
MOV @R0,A

MOV R3,A

INC R0

ANL A,#0FH

MOV @R0,A

INC R0

MOV A,R3

ANL A,#0F0H

SWAP A

MOV @R0,A

RET

3.2.11 有程序如下:

CLR C

CLR RS1

CLR RS0

MOV A,#38H

MOV R0,A

MOV 29H,R0


SETB RS0

MOV R1,A

MOV 26H,A

MOV 38H,C

请:(1)区分哪些是位操作指令?哪些是字节操作指令?

(2)写出程序执行后,片内RAM有关单元的内容。

(3)译成机器码。

(4)按汇编语言程序的标准格式书写,要求有各条指令的存放地址和必要的注

释。

(5)如fosc=12MHz,计算这段程序并存于一个字节。

3.2.12 试编程:将两个4位二进制数并存于一个字节。

3.2.13 试编程:将存于片内RAM 40H、41H单元中的16位数求补,结果放回原
单元(低字节放40H单元)。

3.2.14 试编程:有两双字节压缩的BCD码数相加,设该两待加数分别按先低后高
原则存放在30H、31H和40H、41H单元,和要求放回30H、31H单元。

3.2.15 试编程:将累加器A内容低4位送片外RAM 7AH单元,高4位送片外RAM
7BH单元,7AH、7BH单元的高4位均清零。

3.2.16 试编程:将片内RAM 50H、51H单元两个无符号数中较小的数存于60H单
元。

3.2.17试编程:将片内RAM 60H~69H单元中的10个数相加,和的低8位存入7EH,
高8位存入7FH。

3.2.18试编程:统计从片内RAM 60H单元起所存60个数中“0”的个数,并存入
工作寄存器R7。

3.2.19试编程:将ROM中自2000H单元起的100个数,按序移至片外RAM自2080H
单元起的内存区间去。

3.2.20试编程:将ROM中以TAB为初址的32个单元的内容依次传送到片外RAM
以00H为初址的区域去(规定用查表指令)。

3.2.21试编写一段子程序,将片外RAM 20H单元中压缩的BCD码转换成共阴的
七段笔划信息码,存于片内RAM 20H、21H单元,以待显示(七段笔划信息码的最高


位为0)。

3.2.22 请编一将A中内容乘10的程序,要求:

(1)不可用MUL指令

1)乘积≤255 2)乘积>255

(2)可用MUL指令

1)乘积≤255 2)乘积>255

规定乘积放在片内PAM的30H单元或30H、31H单元。

3.2.23 教材例3.4是按总和仍为两位BCD码、无溢出进行编程的;如有溢出,请
重编程序。

3.2.24 设教材例3.6程序中的多字节数为010000H,试剖析程序执行的经过与结果。

3.2.25 教

材例3.7如不是两个数、而是n个数,请重编程序。(如有二数相等,不
必建起标志位)。

3.2.26 CJNE指令执行何种操作?上述例3.7示出的程序为什么不用这一指令?如
改用这一指令,程序将作何种改动?并请将重编后的汇编语言源程序译成机器码。

3.2.27 设晶振为12MHz,请详细剖析(包括计算)下列程序段的性质和用途:

0B0 79 63 DELAY:MOV R1,#63H

0B2 00 DL1:NOP

0B3 00 NOP

0B4 D9 FC DJNZ R1,DL1

0B6 22 RET

3.2.28 请编写一个能延时1.5ms的子程序,要列出计算。Tcy=1us。

3.2.29 请编写两段子程序,分别用指令延时法和定时器定时10ms,设晶振为
12MHz。

3.2.30 设晶振为12MHz,请编写二段子程序,分别用指令延时法和定时器实现30ms
延时。

3.2.31 某单片机系统:fosc=12MHz,定/计0用于20ms定时,定/计1用于100次计
数,定/计0和定/计1均要求重复工作。问:

(1)外部计数脉冲应从何引脚输入?

(2)试编能达到上述要求的程序。


3.2.32 请回答:教材例3.19为什么近“TH0、TL0、TH0”的次序读,却不按“TL0、
TH0、TL0”的次序读。

3.2.33 阅读下列程序

(1)说明该程序的功能。

(2)填出所缺的机器码。

(3)试修改程序,使片内RAM的内容达到右下图所示的结果。

7A__ MOV R2,#0AH

__ __ MOV R0,#50H

E4 CLR A

E6 LOOP:MOV @R0,A

08 INC R0

DA__ __ DJNZ R2,LOOP

DONE:


3.2.34 阅读下列程序,并要求:

(2)说明程序的功能。

(2)写出涉及的寄存器及片内RAM单元的最后结果。 40H

MOV R0, #40H

MOV A,@R0

INC R0

ADD A,@R0

INC R0

MOV @R0,A

CLR A

ADDC A,#

INC R0

MOV @R0,A

3.2.35 同上题要求,程序如下:

MOV A,61H

MOV B,#02H


MUL AB

ADD A,62H

MOV 63H,A

CLR A

ADDC A,B

MOV 64H,A

3.2.36 同上题要求,程序如下:

CLR C

MOV A,R3

RRC A

MOV R3,A

MOV A,R4

RRC A

MOV R4,A

3.2.37 同上题要求,程序如下:

MOV R0,#31H

MOV A,@R0

SWAP A

DEC R0

XCHD A,@R0

MOV 40H,A

3.2.38同上题要求,程序如下:

MOV R0,#60H

MOV A,#40H

MOV @R0,A

MOVX @R0,A

3.2.39同上题要求,程序如下:

MOV R1,#30H

MOVX A,@R1


MOV @R1,A

INC R1

MOVX A,@R1

MOV @R1,A

3.2.40同上题要求,程序如下:

ORG 1000H

ABS:MOV R0,#38H 38H

MOV R1,#48H

MOV R2,#06H

LOOP:MOV A,@R0

JNB A,7,NEXT

CPL A

SETB A. 7

INC A

NEXT:MOV @R1,A

INC R0

INC R1

DJNZ R2,LOOP

DONE:


3.2.41 阅读下列程序,写出程序执行后片外RAM 8008H和800AH单元以及
DPTR

、R1、A的内容。

RG 0100H

START:MOV DPTR,#BLK1

MOV R2,#4

MOV R1,#30H

MOV R0,#30H

LOP1:MOVX A,@DPTR

MOV @R1,A

INC DPTR


INC R1

DJNZ R2,LOP1

MOV R2,#4

CLR C

LOP2:MOVX A,@DPTR

ADDC A,@R0

DA A

MOV @R1,A

INC DPTR
INC R0

INC R1

DJNZ R2,LOP2

MOV R2,#4

LOP3:MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R2,LOP3

HERE:SJMP HERE

ORG 8000H

BLK1:DB 96H,74H,32H,16H

BLK2:DB 65H,94H,87H,29H

BLK3:DS 4

END

3.2.42 阅读下列程序,写出程序执行后片外RAM 7008H、700AH和700FH单元
以及DPTR、R1的内容。

ORG 0200H

MOV DPTR,#BLOCK

MOV R0,#30H


MOV R1,#40H

MOV R2,#08H

MOV R3,#00H

MOV R4,#00H

CHODEV:MOVX A,@DPTR

MOC R5,A

ANL A,#01H

JNZ DD

MOV A,R5

MOV @R0,A

INC R0

INC R3

SJMP MEXT

DD: MOV A,R5

MOV @R1,A

INC R1

INC R4

NEXT:INC DPTR

DJNZ R2,CHODEV

MOV R0,#30H

MOV R1,#40H

EVMOV:MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R3,RVMOV

ODMOV:MOV A,@R1

MOVX @DPTR,A

INC R1


INC DPTR

DJNZ R4,ODMOV

HERE: SJMP HERE

ORG 7000H

BLOCK DB 69H,47H,32H,61H

DB 59H,49H,27H,78H

BUFFER1 DS 3

BUFFER2 DS 5

3.2.43 阅读下列程序,写出程序执行后片外RAM 8003H和8005H单元以及
DPTR、R2、R0的内容。

ORG 0200H

START: MOV R0,#30H

MOV R1,#30H

MOV R2,#2

MOV DTPR,#BUFFER

HETOAS: MOVX A,@DPTR

MOV R3,A

SWAP A

ANL A,#0FH

ADD A,#90H

DA A

ADDC A,#40H

DA A

MOV @R1,A

INC R1

MOV A,R3

ANL A,#0FH

ADD A,#90H

DA A


ADDC A,#40H

DA A

MOV @R1,A

INC DPTR
INC R1

DJNZ R2,HETOAS

MOV R2,#4

LOOP: MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R2,LOOP

HERE: SJUMP HERE

ORG 8000H

BUFFER:DB 2AH,48H

BLOCK:DS 4

END

3.2.44 阅读下列程序,写出程序执行后片外RAM 2002H和2003H单元以及DPTR、
SP、R3的内容。

注意:本程序在RESET后执行

ORG 0100H

MOV DPTR,#DAT

MOVX A,@DPTR

MOV R0,A

SWAP A

ANL A,#0FH

ACALL BTOA

MOV R4,A

MOV A,R0


ANL A,#0FH

ACALL BTOA

MOV R5,A

INC DPTR

MOVX A,@DPTR

MOV R1,A

SWAP A

ANL A,#0FH

ACALL BTOA

MOV R6,A

MOV A,R1

ANL A,#0FH

ACALL BOTA

MOV R7,A

INC DPTR

MOV A,R4

MOVX @DPTR,A

INC DPTR

MOV A,R5

MOVX @DPTR,A

INC DPTR

MOV A,R6

MOVX @DPTR,A

INC DPTR

MOV A,R7

MOVX @DPTR,A

HERE: SJMP HERE

ORG 0200H


BTOA: MOV R2,#08H


MOV R3,#00H

ORL A,#30H

LOP: RLC A

JNC NEXT

INC R3

NEXT: DJNZ R2,LOP

RLC A

PUSH ACC

MOV A,R3

JNB ACC. 0,CONT

POP ACC

ORL A,#80H

SJMP GONE

CONT: POP ACC

GONE: RET

ORG 2000H

DAT: DW 7954H

DW 0000H

DW 0000H

END

3.2.45 阅读下列程序,写出程序执行后片外RAM8000H和8002单元以及R1、R3、
R4的内容。

ORG 0200H

MOV DPTR,#DAT

MOV R0,#0

MOV R1,#1

MOV R2,#2

MOVX A,@DPTR

MOV R2,A


INC DPTR

MOVX A,@DPTR

ORL A,R3

JZ HERE

MOV DPTR,#DAT

LOOP1: MOV R3,#8

LOOP2: MOVX A,@DPTR

ANL A,R1

MOV R4,A

JZ NEXT

INC R0

NEXT: MOV A,R1

RL A

MOV R1,A

DJNZ R3,LOOP2

INC DPTR

DJNZ R2,LOOP1

MOV A,R0

MOVX @DPTR,A

HERE: SJMP HERE

ORG 8000H

DAT: DW 4B9FH

DB 0

END

3.2.46 阅读下列程序,设fosc=12MHz,请回答:

(1)该程序每隔多少时间执行一次检测程序?是怎样安排达到的?

(2)定/计0及定/计1各在什么情况下溢出?列出您的计算。

(3)为程序作出注释。

0000H LJMP 0030H


;主程序

ORG 0030H

START: CLP T1

MOV TMOD,#51H

MOV IE,#8AH

MOV TH0,#0D8H

MOV TL0,#0F0H

MOV TH1,#0E8H

MOV TL1,#90H

SETB TB0

SETB TR1




;中断服务程序

ORG 000BH

LJMP 0080H

ORG 0080H

T0OV: SETB T1

MOV TH0,#0DBH

MOV TL0,#0F0H

CLR T1

RETI

ORG 001BH

LJMP 0090H

ORG 0090H

T1OV: MOV TH1,#0E8H

MOV TL1,#90H

;此起为检测程序

RETI

3.2.47 阅读本书实验部分第3章“实验五P0口扩展I/O口”参考程序中自指令


MOV TMOD,#50H起的程序,仔细钻研其中定时器/计数器0、定时器/计数器1、R6、
R7的用法,写出您的理解、分析与计算

3.2.48 阅读参考书籍,钻研MCS—51系列单片机在怎样的情况下才能单步执行用
户程序?









































































































OV PCON,#00H


LOOP:
ACALL

JC ERR

DJNZ R7,LOOP

CPL C

MOV A.7,C

JNB TI,$
RET


用设计题:设计一程序完成如下要求:把存放在片内RAM区40H开

五、软件分析计算题:阅读下列程序,并回答下列问题

(2) 2002H单元的内容是多少?

(3) 2003H

MOVX A , @DPTR

ADD A , @DPTR

MOVX @DPTR , A

CLR A

ADDC A , #00H

INC DPT

MOVX @DPT , A

R

ORG 2000H

DB A8H ,68H


六、软件分析计算题:仔细

阅读下列程序

(1) 该程序执行完片内5

(2) 该程序执行完片内51H单元的

(3) 该程序执行完片内52H单元的

(4) R0的结果是什么?


..............................

................................

..................................

..............

..............
..................

................

................................

......15..

..............

............

..................................

................................

MOV @R0 ,A
INC R0

....................

..........................
........................

MOV @R0 ,A

T

G 50H

86

件分析计算题:根据所给的接线图,并回答下列问题请







二套:

(1)TMOD写入的控制字为

(2)通过修改

(3)若fosc=12MHZ,则定

4)对于8031单片机,

5)要求用串行口发送一

率(f=12MHZ)。则串行

osc

)用8155对8031单片

C/S端口地址为

7)51系列内部R

程序存储的选

8)外部

(9)进入等待方












(3)为什么在中断
答:

SMOD=0

TART: MOV TMOD,#20H CPL C

MOV TL1,#0E6H MOV A.7,C

MOV SCON,#40H WAIT: JNB TI,WAIT
MOV R0,#30H CLR TI

MOV R7,#10H INC R0

: MOV A,@R0

MOV C,P

五、某单片机系统用于定时测试温度、压力,并用T0实现定时检测。如压力

度的报警信号分别由INT0和INT1输入,中断优先权排列顺序依次为温

压力超限、定时检测,试确定专用寄存器IP的内容。


六、由

负跳变,

(已知



P1 口连接如左图所示,问:
1)执

2)第二条指令的用处是什么?




程序为:MOV P1 ,#0EH

ORL P1 ,#0C0H

MOV A ,P1

ANL A ,#0C0H
亮S1断开,

(4)要求S1合上,L1点









一、选择填空题

1、某一定式过程,要求定时时间为30ms,(已知:fosc=12MH
请0

选择 (A)T的工作方式 ;(B)方式控制字为



① 方式0 ② 方式1 ③ 方式2 ④ 其它

01H ② 02H ③ 03H ④ 04H

① 8AD0H ② 9AB8H ③ 7A0DH ④8DA0H

2、 要求用串行口发送一串

率(fosc=12MH

(A) ① 方式0 ② 方式1 ③ 方式2 ④ 方式3
(B) ① 40H ② 41H ③ 50H ④ 51H
(C) ① 方式0 ② 方式1 ③ 方式2 ④ 其它

(D) ① 0E6E6H ② 0E0A8H ③ 0E0E0H ④ 0F4F4H
3、用8155对8031单片机进行扩展,其中P2.7与8155的片选端相连,要求8155
的A口工作在选通I/O方式,输入,且允许中断;B

高字节寄存器的D7、D6的值为 。

( ② 0001H ③ 000

A) ① 0000H

(B) ① 0AH ② 02H ③ 2

(C) ① 01 ② 11 ③ 00 ④ 10

二、简答题

1 为什么说51系列单片机的


、那

251系列单片机,些中断源

除的?那些是需要软

件清除的?









存储器或I/O口名



B口寄存器 80FAH








四、阅读程序(30分,每小题10分)

已知fosc=12MHZ,阅读下面的程序程序,计算

行时间
DELAY: MOV R1,#14H


DL2: MOV R2,#32H
DL1: NOP
NOP
NOP
DJNZ R2,DL1

DJNZ R1,DL2

RET

答:



阅读下列程序,详细说明程序的功能

:fosc=12MHZ,SMOD=0)



MOV TL1,#0E6H

MOV TH1,#0E6H


MOV

JNC ERROR
ANL A,#7FH

MOV @R0,A

INC R0





3、







MOV R1,#30H

MOV R2,#02H



HETOAS: MOVX A,@DPTR

MOV R3,A

SWAP A

ANL A,#0FH

ADD A,#90H

DA A

ADDC A,#40H

DA A







ANL A,#0FH

ADD A,#

DA A

ADDC A,#40H

DA A

MOV @R1,A

INC DPTR

INC R

DJNZ R2,HET

MOV R2,#

LOOP: MOV

MOVX @DPT

INC R


INC DPT

DJNZ R2,L

HERE: SJMP HE

ORG

BUFFER DB 6AH,8



END
已知: DAC0832的基准电源为




为0- 5V,DAC0832的端口地址

要求:由A832产一占空比

冲序列。

请设计相应的程序





相关推荐
相关主题
热门推荐