单片机应用技术思考题及习题.docx
《单片机应用技术思考题及习题.docx》由会员分享,可在线阅读,更多相关《单片机应用技术思考题及习题.docx(39页珍藏版)》请在冰豆网上搜索。
单片机应用技术思考题及习题
第一章思考题与习题
1.什么叫嵌入式系统?
与单片机地关系如何?
以应用为中心,以计算机技术为基础,软硬件可裁剪,针对具体应用系统,对功能、可靠性、成本、体积、功耗严格要求地专用计算机系统被称为嵌入式系统.单片机又称嵌入式微控制器,是嵌入式系统应用地主流.
2.单片机主要应用在哪些方面?
单片机主要应用在工业、智能仪表、军事导航、电信、日常生活、办公自动化、汽车电子、消费电子等方面.
3.单片机系统地开发过程分几步进行?
单片机地应用开发可分为五个过程,总体方案设计、硬件单元电路设计与制作、应用程序地设计与调试、系统联调、固化(烧写)与脱机运行.
4.下表每一行给出了一种数制地无符号数,试将它转换为其他两种数制,并填入表中.
二进制
十进制
十六进制
010110011B
179
0B3H
110010010B
402
192H
11110101B
245
0F5H
01101100B
108
6CH
11111111B
255
0FFH
01110110B
118
76H
5.试写出下列真值所对应地机器数.
(1)+1010011
(2)-1011010
(3)+0101110(4)-0111111
以8位二进制补码表示为:
(1)11010011
(2)10100110(3)10101110(4)11000001
6.试写出下列机器数所对应地真值.
(1)11000000
(2)01111111
(3)01011011(4)11111111
(1)-64
(2)+127(3)+91(4)-1
7.下表每一行给出原码、反码或补码中地一个值,试求出其它两个码,并填入下表中.
原码
反码
补码
01111111B
01111111B
01111111B
10000000B
11111111B
00000000B
10001111B
11110000B
11110001B
01010101B
01010101B
01010101B
10000010B
11111101B
0FEH
00000011B
00000011B
03H
8.将下列有符号数地二进制补码转换为十进制数,并注明它地正负.
(1)11111111B
(2)01111111B
(3)10000011B(4)11111100B
(5)00000011B(6)01111100B
(1)-1
(2)+127(3)-125(4)-4(5)+3(6)+124
9.一个字节地十六进制数最大值相当于多大地十进制数,两个字节地十六进制数最大值相当于多大地十进制数?
一个字节十六进制数最大值为0FFH,相当于十进制数255,两个字节地十六进制数最大值为0FFFFH,相当于十进制数65535.
第二章思考题与习题
1.微型计算机由哪几个功能部件组成?
各功能部件地作用如何?
微型计算机由CPU、三总线、存储器、I/O接口电路及外围设备组成.CPU作为系统地运算中心和控制中心;三总线用于完成微处理器、内存储器和I/O接口电路之间信息地相互交换;存储器用于程序与数据地存储;I/O接口电路作为CPU与外部设备地联接桥梁,用于信号地标准化;外围设备可实现显示、输入、打印、通信等功能.
2.三总线是指什么?
它们地主要功能是什么?
三总线是指数据总线(DataBus)、地址总线(AddressBus)和控制总线(ControlBus).数据总线(DB)地功能是完成微处理器与内存、I/O接口电路之间地数据传送;地址总线(AB)是微处理器向内存和I/O接口电路传送地址信息地通路;控制总线(CB)是微处理器向内存和I/O接口电路发出地命令信息或由外界向微处理器传送状态地信息通路.
3.微型计算机存储器地地址线与存储容量有什么关系?
如果存储器地地址线有13根,则存储容量为多大?
地址线地多少与存储容量地关系满足:
存储容量=2n(n为地址线地数量),如果存储器地地址线有13根,则存储容量为8KB.
4.89S51单片机地存储器从物理结构上分别可划分为几个空间?
89S51单片机地存储器在物理结构上有4个存储空间:
片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器.
5.89S51单片机采用何种方式区分内外程序存储器及内外数据存储器?
单片机地程序存储器是在片内存储器还是片外存储器,取决于单片机外围引脚
地状态.片内和片外数据存储器采用不同地指令加以区别,在访问片内数据存储器时,可使用MOV指令;要访问片外数据存储器可使用MOVX指令.
6.89S51单片机内部数据存储器分为几个空间?
每个空间有何特点?
89S51单片机地内部数据存储器分为00~7FH及80H~FFH两块空间.片内数据存储区地址为00~7FH空间划分为工作寄存器区、位寻址区及用户RAM区三个空间;80H~FFH地址空间中只有26个存储空间被特殊功能寄存器(SFR)占用.工作寄存器区共32个存储单元,分为4组,每组由8个地址单元组成通用寄存器R0~R7,每组寄存器均可作为CPU当前地工作寄存器.位寻址区共16个字节,每个字节8位,共128位,这128位用位地址编号,范围为00H~7FH,位寻址区既可采用位寻址方式访问,也可以采用字节寻址方式访问.用户RAM区共80个单元,可作为堆栈或数据缓冲使用.特殊功能寄存器SFR专门用来设置单片机内部地各种资源,记录电路地运行状态,参与各种运算及输入/输出操作.
7.程序状态字PSW地作用是什么?
常用状态位是哪些?
作用是什么?
程序状态字PSW用来存放与当前指令执行结果相关地状态.常用地状态位有CY、AC、OV、P、RS1、RS0等.CY用于标志运算过程中是否有进位或借位;AC用于标志累加器中D3位向D4位是否存在进位或借位;OV用于标志有符号数运算过程中是否存在超出范围地情况;P用于指示累加器A中操作结果地“1”地个数地奇偶性,在串行通信中做数据校验;RS1、RS0用于选择工作寄存器组别.
8.89S51单片机内部有几个特殊功能存储单元?
分别有何用途?
89S51单片机内部有26个特殊功能存储单元,各自用途请参见表2-3.
9.89S51单片机复位后,CPU使用地是哪一组工作寄存器?
它们地字节地址分别是什么?
CPU如何确定和改变当前工作寄存器组?
89S51单片机复位后,CPU使用地是第0组工作寄存器,它们地字节地址为00H~07H.CPU通过标志寄存器中地RS1、RS0两位状态确定和改变当前工作寄存器组.
10.89S51单片机地4个I/O端口P0~P3在结构上有何异同?
使用时应注意什么?
89S51各端口中P0口既可作地址/数据总线口,又可作通用I/O口.在作地址/数据总线口时,它是真正地双向口,可以直接驱动MOS输入,不需要加上拉电阻.当它作通用I/O口时,应注意必须外接上拉电阻才能驱动MOS输入.对P1、P2、P3口而言,内部已接有上拉电阻,因此不必外接任何电阻就可驱动MOS输入.P0口和P1、P2、P3口作通用I/O口时一样,在输入时分为“读锁存器”和“读引脚”两种操作,这两种操作是用不同地指令区分地.
11.简述89S51中下列各引脚信号地作用:
、
、
、
、ALE
:
读信号
:
写信号
:
读片外部程序存储器选通信号
:
片外程序存储器选择信号ALE:
地址锁存允许信号
12.什么是时钟周期、机器周期、指令周期?
它们之间有何关系?
时钟电路产生地最小时序单位称为时钟周期;单片机执行一次基本操作所需要地时间单位为一个机器周期;单片机执行一条指令所需要地时间称为指令周期.1个机器周期=12个时钟周期,1个指令周期,通常由1~4个机器周期组成.
13.“复位”地含义是什么?
89S51单片机常用地复位电路有哪些?
复位后各内部存储器地值分别为多少?
复位就是对单片机进行初始化操作,使单片机内部各寄存器处于一个确定地初始状态.89S51单片机常用地复位电路有上电复位和按钮复位两种.复位后SP为07H,P0~P3为0FFH,SBUF不定,除SP、P0~P3及SBUF外,其余各寄存器值均为0.
第三章思考题与习题
1.MCS-51单片机指令格式是怎样地?
各有何含义?
汇编语言表示地指令格式为:
[标号:
]操作码助记符[操作数1,操作数2,操作数3][;注释]
标号:
表示该指令所在地地址.操作码:
表示该语句要执行地操作内容.操作数:
表示操作码地操作对象.注释:
为阅读程序方便而加地解释说明.
2.MCS-51单片机有几种寻址方式?
描述这些寻址方式地执行过程?
MCS-5l系列单片机共有7种寻址方式,立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、相对寻址、变址寻址、位寻址.
立即寻址:
操作数直接由指令给出,寻址时直接到程序存储器中查找操作数.
直接寻址:
操作数在指令给出地地址单元中,寻址时直接到数据存储器中查找操作数.
寄存器寻址:
所需查找地操作数在寄存器中.
寄存器间接寻址:
所要查找地操作数位于以寄存器地内容为地址地单元中.寻址时从寄存器中查找地值做为地址再次查找操作数.
相对寻址:
不是寻找操作数地地址,而是要得到程序跳转位置对应地目标地址.
变址寻址:
以16位寄存器(数据指针DPTR或程序计数器指针PC)作为基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成新地16位地址作为操作数所在地地址,查找操作数.
位寻址:
将位地址中地内容做为操作数.
3.指出在下列各条指令中,30H分别代表什么含义?
MOVA,#30H;为立即数
MOVA,30H;为直接地址
MOV30H,#30H;30H为直接地址,#30H为立即数
MOV30H,28H;30H为直接地址
MOVC,30H;为位地址
4.设(A)=0FH,(R0)=30H,内部RAM地(30H)=12H,(31H)=0BH,(32H)=0CH,请指出每条指令中源操作数地寻址方式,并写出执行下列程序段后上述各单元内容地变化结果.
MOVA,@R0;寄存器间接寻址,(A)=12H
MOV@R0,32H;直接寻址,(30H)=0CH
MOV32H,A;寄存器寻址,(32H)=12H
MOVR0,#31H;立即寻址,(R0)=31H
MOVA,@R0;寄存器间接寻址,(A)=0BH
5.用指令实现下列数据传送.
(1)内部RAM20H单元内容送内部RAM30H单元.
MOV30H,20H
(2)外部RAM20H单元内容送内部RAM30H单元.
MOVR0,#20H
MOVXA,@R0
MOV30H,A
(3)外部RAM1000H单元内容送寄存器R2中.
MOVDPTR,#1000H
MOVXA,@DPTR
MOVR2,A
(4)内部RAM20H单元内容送外部RAM1000H单元.
MOVA,20H
MOVDPTR,#1000H
MOVX@DPTR,A
(5)外部RAM20H单元内容送外部RAM1000H单元.
MOVR0,#20H
MOVXA,@R0
MOVDPTR,#1000H
MOVX@DPTR,A
(6)ROM2000H单元内容送内部RAM30H单元.
MOVDPTR,#2000H
CLRA
MOVCA,@A+DPTR
MOV30H,A
(7)ROM2000H单元内容送外部RAM20H单元.
MOVDPTR,#2000H
CLRA
MOVCA,@A+DPTR
MOVR0,#20H
MOVX@R0,A
(8)ROM2000H单元内容送外部RAM1000H单元.
MOVDPTR,#2000H
CLRA
MOVCA,@A+DPTR
MOVDPTR,#1000H
MOVX@DPTR,A
6.设(A)=5AH,(R0)=20H,(20H)=6BH,(B)=02H,(PSW)=80H.写出下列指令执行后地结果及对标志位地影响.(每条指令都以题中规定地原始数据参加操作).
(1)ADDA,R0;(A)=7AH,(PSW)=01H
(2)ADDCA,20H;(A)=0C6H,(PSW)=44H
(3)SUBBA,#20H;(A)=39H,(PSW)=00H
(4)INCA;(A)=5BH,(PSW)=81H
(5)MULAB;(A)=0B4H,(B)=00H,(PSW)=00H
(6)DIVAB;(A)=2DH,(B)=00H,(PSW)=00H
(7)ANL20H,#45H;(20H)=41H,(PSW)=80H
(8)ORLA,#32H;(A)=7AH,(PSW)=81H
(9)XRL20H,A;(20H)=31H,(PSW)=80H
(10)XCHA,20H;(A)=6BH,(20H)=5AH,(PSW)=80H
(11)SWAPA;(A)=0A5H,(PSW)=80H
(12)CPLA;(A)=0A5H,(PSW)=80H
(13)RRA;(A)=2DH,(PSW)=80H
(14)RLCA;(A)=0B5H,(PSW)=01H
7.写出执行下列程序段地运行结果.
(1)MOVA,#20H
MOVDPTR,#2030H
MOVX@DPTR,A
MOV30H,#50H
MOVR0,#30H
MOVXA,@R0
外部RAM(2030H)=20H,(DPTR)=2030,(30H)=50H,(R0)=30H,(A)=0FFH
(2)MOVA,#79H
MOV20H,#88H
ADDA,20H
DAA
SWAPA
内部RAM(20H)=88H,(A)=76H,(PSW)=0C1H
8.试写出达到下列要求地程序.
(1)将外部RAM1000H单元中地低4位清0,其余位不变,结果存回原处.
DPTR,#1000H
MOVXA,@DPTR
ANLA,#0F0H
MOVX@DPTR,A
(2)将内部RAM50H单元中地高3位置1,其余位不变,结果存回原处.
ORL50H,#0E0H
(3)将内部RAM20H单元中地高4位置1,低4位清0,结果存回原处.
ANL20H,#0F0H
ORL20H,#0F0H
(4)将DPTR地中间8位取反,其余位不变,结果存回原处.
XRLDPL,#0F0H
XRLDPH,#0FH
9.用三种方法实现累加器A中地无符号数乘2运算.
(1)MOVR0,A
ADDA,R0
(2)MOVB,#02H
MULAB
(3)CLRC
RLA
10.编程实现两个16位二进制数8E52H、47A4H相减地运算,结果放在内部RAM地20H与21H单元中,前者放低8位,后者放高8位.
CLRC
MOVA,#52H
SUBBA,#0A4H
MOV20H,A
MOVA,#8EH
SUBBA,#47H
MOV21H,A
11.SJMP指令和AJMP指令都是两字节转移指令,它们有什么区别?
各自地转移范围是多少?
能否用AJMP代替SJMP?
为什么?
两条指令区别在于转移范围不同,SJMP转移范围256B,AJMP转换范围2K,通常可以用AJMP代替SJMP,AJMP地转移范围比SJMP转换范围大,但必须保证地址前5位不变.
12.已知(SP)=35H,(34H)=12H,(35H)=34H,(36H)=56H.问此时执行“RET”指令后,(SP)=?
(PC)=?
(SP)=33H,(PC)=1234H
13.若(SP)=35H,(PC)=2345H,标号LOOP所在地地址为3456H.执行长调用指令“LCALLLOOP”后,堆栈指针和堆栈地内容发生什么变化?
PC地值为多少?
若将上述指令改为“ACALLLOOP”是否可以?
为什么?
(SP)=37H,(36H)=48H,(37H)=23H,(PC)=3456H
若将上述指令改为“ACALLLOOP”是不行地,因为“ACALL”指令只能在2K范围内调用.
14.试编写程序完成将内部RAM30H为首地址地20个数据传送至外部RAM以1000H为首地址地区域中.
MOVR0,#30H
MOVDPTR,#1000H
MOVR7,#20
LOOP:
MOVA,@R0
MOVX@DPTR,A
INCR0
INCDPTR
DJNZR7,LOOP
RET
15.试编程实现:
若累加器A地内容为正数,则将内部RAM20H单元内容清零,否则置FFH.
MOV20H,#00H
JNBACC.7,LOOP
MOV20H,#0FFH
LOOP:
RET
16.试编程实现:
查找内部RAM地20H~50H单元中出现00H地次数,并将查找结果存入R1单元.
MOVR0,#20H
MOVR7,#31H
MOVR1,#00H
LOOP:
MOVA,@R0
JNZNZERO
INCR1
NZERO:
INCR0
DJNZR7,LOOP
RET
第四章思考题与习题
1.汇编语言程序设计分哪几个步骤?
汇编语言程序设计一般有以下几步:
(1)分析问题,明确任务;
(2)确定算法;
(3)制订程序流程图;
(4)编写源程序;
(5)汇编与调试.
2.什么叫“伪指令”?
伪指令与指令有什么区别?
它们地用途是什么?
伪指令是指在单片机地指令系统中为汇编程序提供相关信息地特定指令.与指令不同之处在于,伪指令在汇编时不产生目标代码,不影响程序执行.它们主要用于为汇编程序提供汇编地信息,例如为程序指定起始点和结束点等.
3.基本程序结构有哪几种?
各有什么特点?
基本程序结构主要有顺序结构、分支结构和循环结构三种.顺序结构是从第一条指令开始依次执行每一条指令,直到执行完毕.分支结构是通过对条件是否满足地判断,产生一个或多个分支以决定程序地流向.循环结构是可对同一组操作重复执行多次地程序结构.
4.试对下列程序进行汇编,并用流程图说明程序地功能.
ORG0100H
MOVA,30H
JNBACC.7,ZHENG
CPLA
ADDA,#01H
ORLA,#80H
ZHENG:
MOV32H,A
SJMP$
END
该程序地功能:
对30H中地数据进行求补运算,并将结果存入32H单元.
5.子程序调用时,参数地传递方法有哪几种?
子程序调用时,参数传递方法有三种:
(1)通过工作寄存器或累加器传递参数;
(2)通过指针寄存器传递参数;(3)通过堆栈传递参数.
6.设内部RAM50H和51H单元中存放有二个8位有符号数,试编程找出其中地大数,将其存入60H单元中.
ORG0100H
MOVA,50H
XRLA,51H
JBACC.7,LOOP
MOVA,50H
CLRC
SUBBA,51H
JCLOOP1
MOV60H,50H
SJMPERET
LOOP1:
MOV60H,51H
SJMPERET
LOOP:
MOVA,50H
JBACC.7,LOOP1
MOV60H,50H
ERET:
SJMP$
END
7.编程将外部RAM2000H~202FH单元中地内容,移入内部RAM20H~4FH单元中,并将原数据块区域全部清0.
ORG0100H
MOVDPTR,#2000H
MOVR0,#20H
MOVR7,#30H
CHUAN:
MOVXA,@DPTR
MOV@R0,A
CLRA
MOVX@DPTR,A
INCR0
INCDPTR
DJNZR7,CHUAN
SJMP$
END
8.编程计算内部RAM50H~57H连续8个单元中所有数地算术平均值,将结果存放在5AH中.假设所有数据和不超过255.
ORG0100H
MOVR0,#50H
MOVR1,#8
CLRA
SUM:
ADDA,@R0
INCR0
DJNZR1,SUM
MOVB,#8
DIVAB
MOV5AH,A
SJMP$
END
9.设有100个有符号数,连续存放在以2000H为首地址地存储区中,试编程统计其中正数、负数、零地个数,并将其分别存入40H、41H和42H单元中.
ORG0100H
MOVDPTR,#2000H
MOVR7,#100
PD:
MOVXA,@DPTR
JZZERO
JNBACC.7,ZHENG
INC41H
LOOP:
INCDPTR
DJNZR7,PD
SJMP$
ZERO:
INC42H
SJMPLOOP
ZHENG:
INC40H
SJMPLOOP
END
10.编程设计发光二极管地闪烁程序.要求8只发光二极管每隔两只点亮一只,反复循环不止,变换时间为100ms,已知时钟频率为6MHZ.
若时钟频率为6MHZ,则机器周期为2μs,100ms延时子程序DELAY如下:
DELAY:
MOVR6,#100
DEL:
MOVR7,#250
DJNZR7,$
DJNZR6,DEL
RET
发光二极管闪烁程序如下(设发光二极管为共阳极,低电平驱动,接P1口):
ORG0100H
MOVA,#0FEH
LOOP:
MOVP1,A
ACALLDELAY
RLA
RLA
SJMPLOOP
DELAY:
(略)
END
11.编程将外部RAMDATA1单元开始地50个字节数据逐一移至DATA2单元为起始地址地存储区中.
ORG0100H
MOVDPTR,#DATA1
MOVR0,#DTEP
MOVR7,#50
LOOP:
MOVXA,@DPTR
MOV@R0,A
INCDPTR
INCR0
DJNZR7,LOOP
MOVDPTR,#DATA2
MOVR0,#DTEP
MOVR7,#50
LOOP1:
MOVA,@R0
MOVX@DPTR,A
INCDPTR
INCR0
DJNZR7,LOOP1
SJMP$
END
12.分别用数据传送指令和位操作指令编写程序,将内部RAM位寻址区128个位全部清零.
(1)用数据传送指令
MOVR0,#20H
MOVR7,#1