资源描述
第一章思考题与习题
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. 三总线是指什么?它们的主要功能是什么?
三总线是指数据总线(Data Bus)、地址总线(Address Bus)和控制总线(Control Bus)。数据总线(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分别代表什么含义?
MOV A, #30H ;为立即数
MOV A, 30H ;为直接地址
MOV 30H, #30H ;30H为直接地址,#30H为立即数
MOV 30H, 28H ;30H为直接地址
MOV C, 30H ;为位地址
4. 设(A)=0FH,(R0)=30H,内部RAM的(30H)=12H,(31H)=0BH,(32H)=0CH, 请指出每条指令中源操作数的寻址方式,并写出执行下列程序段后上述各单元内容的变化结果。
MOV A, @R0 ;寄存器间接寻址,(A)=12H
MOV @R0, 32H ;直接寻址,(30H)=0CH
MOV 32H, A ;寄存器寻址,(32H)=12H
MOV R0, #31H ;立即寻址,(R0)=31H
MOV A, @R0 ;寄存器间接寻址,(A)=0BH
5. 用指令实现下列数据传送。
(1)内部RAM 20H单元内容送内部RAM 30H单元。
MOV 30H,20H
(2)外部RAM 20H单元内容送内部RAM 30H单元。
MOV R0,#20H
MOVX A,@R0
MOV 30H,A
(3)外部RAM 1000H单元内容送寄存器R2中。
MOV DPTR,#1000H
MOVX A,@DPTR
MOV R2,A
(4)内部RAM 20H单元内容送外部RAM 1000H单元。
MOV A,20H
MOV DPTR,#1000H
MOVX @DPTR,A
(5)外部RAM 20H单元内容送外部RAM 1000H单元。
MOV R0,#20H
MOVX A,@R0
MOV DPTR,#1000H
MOVX @DPTR,A
(6)ROM 2000H单元内容送内部RAM 30H单元。
MOV DPTR,#2000H
CLR A
MOVC A,@A+DPTR
MOV 30H,A
(7)ROM 2000H单元内容送外部RAM 20H单元。
MOV DPTR,#2000H
CLR A
MOVC A,@A+DPTR
MOV R0,#20H
MOVX @R0,A
(8)ROM 2000H单元内容送外部RAM 1000H单元。
MOV DPTR,#2000H
CLR A
MOVC A,@A+DPTR
MOV DPTR,#1000H
MOVX @DPTR,A
6. 设(A)= 5AH,(R0)=20H,(20H)=6BH,(B)=02H,(PSW)=80H。写出下列指令执行后的结果及对标志位的影响。(每条指令都以题中规定的原始数据参加操作)。
(1)ADD A,R0 ;(A)=7AH,(PSW)=01H
(2)ADDC A,20H ;(A)=0C6H,(PSW)=44H
(3)SUBB A,#20H ;(A)=39H,(PSW)=00H
(4)INC A ;(A)=5BH,(PSW)=81H
(5)MUL AB ;(A)=0B4H ,(B)=00H,(PSW)=00H
(6)DIV AB ;(A)=2DH,(B)=00H,(PSW)=00H
(7)ANL 20H,#45H ;(20H)=41H,(PSW)=80H
(8)ORL A,#32H ;(A)=7AH,(PSW)=81H
(9)XRL 20H,A ;(20H)=31H,(PSW)=80H
(10)XCH A,20H ;(A)=6BH,(20H)=5AH,(PSW)=80H
(11)SWAP A ;(A)=0A5H,(PSW)=80H
(12)CPL A ;(A)=0A5H,(PSW)=80H
(13)RR A ;(A)=2DH,(PSW)=80H
(14)RLC A ;(A)=0B5H,(PSW)=01H
7. 写出执行下列程序段的运行结果。
(1)MOV A,#20H
MOV DPTR,#2030H
MOVX @DPTR,A
MOV 30H,#50H
MOV R0,#30H
MOVX A,@R0
外部RAM(2030H)=20H,(DPTR)=2030,(30H)=50H,(R0)=30H,(A)=0FFH
(2)MOV A,#79H
MOV 20H,#88H
ADD A,20H
DA A
SWAP A
内部RAM(20H)=88H,(A)=76H,(PSW)=0C1H
8. 试写出达到下列要求的程序。
(1)将外部RAM 1000H单元中的低4位清0,其余位不变,结果存回原处。
DPTR,#1000H
MOVX A,@DPTR
ANL A,#0F0H
MOVX @DPTR,A
(2)将内部RAM 50H单元中的高3位置1,其余位不变,结果存回原处。
ORL 50H,#0E0H
(3)将内部RAM 20H单元中的高4位置1,低4位清0,结果存回原处。
ANL 20H,#0F0H
ORL 20H,#0F0H
(4)将DPTR的中间8位取反,其余位不变,结果存回原处。
XRL DPL,#0F0H
XRL DPH,#0FH
9. 用三种方法实现累加器A中的无符号数乘2运算。
(1) MOV R0,A
ADD A,R0
(2) MOV B,#02H
MUL AB
(3) CLR C
RL A
10. 编程实现两个16位二进制数8E52H、47A4H相减的运算,结果放在内部RAM的20H与21H单元中,前者放低8位,后者放高8位。
CLR C
MOV A,#52H
SUBB A,#0A4H
MOV 20H,A
MOV A,#8EH
SUBB A,#47H
MOV 21H,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。执行长调用指令“LCALL LOOP”后,堆栈指针和堆栈的内容发生什么变化?PC的值为多少?若将上述指令改为“ACALL LOOP”是否可以?为什么?
(SP)=37H,(36H)=48H,(37H)=23H,(PC)=3456H
若将上述指令改为“ACALL LOOP”是不行的,因为“ACALL”指令只能在2K范围内调用。
14. 试编写程序完成将内部RAM 30H为首地址的20个数据传送至外部RAM以1000H为首地址的区域中。
MOV R0,#30H
MOV DPTR,#1000H
MOV R7,#20
LOOP: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,LOOP
RET
15. 试编程实现:若累加器A的内容为正数,则将内部RAM 20H单元内容清零,否则置FFH。
MOV 20H,#00H
JNB ACC.7,LOOP
MOV 20H,#0FFH
LOOP: RET
16. 试编程实现:查找内部RAM的20H~50H单元中出现00H的次数,并将查找结果存入R1单元。
MOV R0,#20H
MOV R7,#31H
MOV R1,#00H
LOOP: MOV A,@R0
JNZ NZERO
INC R1
NZERO:INC R0
DJNZ R7,LOOP
RET
第四章思考题与习题
1. 汇编语言程序设计分哪几个步骤?
汇编语言程序设计一般有以下几步:
(1)分析问题,明确任务;
(2)确定算法;
(3)制订程序流程图;
(4)编写源程序;
(5)汇编与调试。
2. 什么叫“伪指令”?伪指令与指令有什么区别?它们的用途是什么?
伪指令是指在单片机的指令系统中为汇编程序提供相关信息的特定指令。与指令不同之处在于,伪指令在汇编时不产生目标代码,不影响程序执行。它们主要用于为汇编程序提供汇编的信息,例如为程序指定起始点和结束点等。
3. 基本程序结构有哪几种?各有什么特点?
基本程序结构主要有顺序结构、分支结构和循环结构三种。顺序结构是从第一条指令开始依次执行每一条指令,直到执行完毕。分支结构是通过对条件是否满足的判断,产生一个或多个分支以决定程序的流向。循环结构是可对同一组操作重复执行多次的程序结构。
4. 试对下列程序进行汇编,并用流程图说明程序的功能。
ORG 0100H
MOV A,30H
JNB ACC.7,ZHENG
CPL A
ADD A,#01H
ORL A,#80H
ZHENG:MOV 32H,A
SJMP $
END
该程序的功能:对30H中的数据进行求补运算,并将结果存入32H单元。
5. 子程序调用时,参数的传递方法有哪几种?
子程序调用时,参数传递方法有三种:(1)通过工作寄存器或累加器传递参数;(2)通过指针寄存器传递参数;(3)通过堆栈传递参数。
6. 设内部RAM 50H和51H单元中存放有二个8位有符号数,试编程找出其中的大数,将其存入60H单元中。
ORG 0100H
MOV A,50H
XRL A,51H
JB ACC.7,LOOP
MOV A,50H
CLR C
SUBB A,51H
JC LOOP1
MOV 60H,50H
SJMP ERET
LOOP1:MOV 60H,51H
SJMP ERET
LOOP: MOV A,50H
JB ACC.7,LOOP1
MOV 60H,50H
ERET: SJMP $
END
7. 编程将外部RAM 2000H~202FH单元中的内容,移入内部RAM 20H~4FH单元中,并将原数据块区域全部清0。
ORG 0100H
MOV DPTR,#2000H
MOV R0,#20H
MOV R7,#30H
CHUAN:MOVX A,@DPTR
MOV @R0,A
CLR A
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,CHUAN
SJMP $
END
8. 编程计算内部RAM 50H~57H连续8个单元中所有数的算术平均值,将结果存放在5AH中。假设所有数据和不超过255。
ORG 0100H
MOV R0,#50H
MOV R1,#8
CLR A
SUM: ADD A,@R0
INC R0
DJNZ R1,SUM
MOV B,#8
DIV AB
MOV 5AH,A
SJMP $
END
9. 设有100个有符号数,连续存放在以2000H为首地址的存储区中,试编程统计其中正数、负数、零的个数,并将其分别存入40H、41H和42H单元中。
ORG 0100H
MOV DPTR,#2000H
MOV R7,#100
PD: MOVX A,@DPTR
JZ ZERO
JNB ACC.7,ZHENG
INC 41H
LOOP: INC DPTR
DJNZ R7,PD
SJMP $
ZERO: INC 42H
SJMP LOOP
ZHENG:INC 40H
SJMP LOOP
END
10. 编程设计发光二极管的闪烁程序。要求8只发光二极管每隔两只点亮一只,反复循环不止,变换时间为100ms,已知时钟频率为6MHZ。
若时钟频率为6MHZ,则机器周期为2μs,100ms延时子程序DELAY如下:
DELAY:MOV R6,#100
DEL: MOV R7,#250
DJNZ R7,$
DJNZ R6,DEL
RET
发光二极管闪烁程序如下(设发光二极管为共阳极,低电平驱动,接P1口):
ORG 0100H
MOV A,#0FEH
LOOP: MOV P1,A
ACALL DELAY
RL A
RL A
SJMP LOOP
DELAY:(略)
END
11. 编程将外部RAM DATA1单元开始的50个字节数据逐一移至DATA2单元为起始地址的存储区中。
ORG 0100H
MOV DPTR,#DATA1
MOV R0,#DTEP
MOV R7,#50
LOOP: MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R7,LOOP
MOV DPTR,#DATA2
MOV R0,#DTEP
MOV R7,#50
LOOP1:MOV A,@R0
MOVX @DPTR,A
INC DPTR
INC R0
DJNZ R7,LOOP1
SJMP $
END
12. 分别用数据传送指令和位操作指令编写程序,将内部RAM位寻址区128个位全部清零。
(1)用数据传送指令
MOV R0,#20H
MOV R7,#10H
CLR A
LOOP: MOV @R0,A
INC R0
DJNZ R7,LOOP
SJMP $
(2)用位操作指令
CLR 00H
CLR 01H
…
CLR 7FH
13. 把长度为10H的字符串从内部RAM的输入缓冲区INBUF向位于外部RAM的输出缓冲区OUTBUF进行传送,当遇到字符“CR”或整个字符串传送完毕后停止传送。
ORG 0100H
MOV R7,#10H
MOV R0,#INBUF
MOV DPTR,#OUTBUF
LOOP: MOV A,@R0
CJNZ A,#0D,JX ;0DH为“CR”的ASCII码
SJMP LEND
JX: MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R7,LOOP
LEND: SJMP $
END
14. 编写一个采用查表法求1~20的平方数子程序。要求:X在累加器中,1≤X≤20,平方数高位存放在R6,低位在R7中。
ORG 0100H
MOV DPTR,#TAB
MOV R0,A
ADD A,R0
MOV R7,A
MOVC A,@A+DPTR
MOV R6,A
MOV A,R7
INC DPTR
MOVC A,@A+DPTR
MOV R7,A
SJMP $
TAB: DW 0,1,4,9,16,25,36,49,64,81,100,121,144,169,225
DW 256,289,324,361,400
END
15. 从内部RAM 30H单元开始,连续存有200字节的补码数,编写程序将它们改变为各自的绝对值。
ORG 0100H
MOV R0,#30H
MOV R7,#200
LOOP: MOV A,@R0
JNB ACC.7,ZHG
SUBB A,#01H
CPL A
ZHG: MOV @R0,A
INC R0
DJNZ R7,LOOP
SJMP $
END
16. 若单片机的晶振频率为6MHZ,试编写一段延时子程序,其延时时间为500ms。
若时钟频率为6MHZ,则机器周期为2μs,500ms延时子程序DELAY如下:
DELAY:MOV R6,#250
DEL: MOV R7,#250
DEL1: NOP
NOP
DJNZ R7,DEL1
DJNZ R6,DEL
RET
17. 在内部RAM STRING单元开始有一个字符串(字符串以00H结尾)。试编写一段程序,统计字符“$”的个数,并将结果存入NUM单元。
ORG 0100H
MOV R0,#STRING
MOV NUM,#00H
LOOP: MOV A,@R0
CJNE A,#24H,NEQ ;24H为“$”的ASCII码
INC NUM
NEQ: INC R0
CJNE A,#00H,LOOP
SJMP $
END
第五章思考题与习题
1. 名词解释:
(1)中断 (2)中断源
(3)中断系统 (4)中断优先权
(5)中断嵌套 (6)中断屏蔽
(1)中断是指在计算机执行程序过程中,由服务对象向CPU发出请求信号,要求CPU暂停当前程序的执行,而转去执行相应的处理程序,当待处理程序执行完后,再返回继续执行原来被中断程序的过程。
(2)中断源是指引起中断的原因或触发中断请求的来源。
(3)中断系统是指为实现中断而设置的各种硬件和软件。
(4)中断优先权是指两个或两个以上中断源同时申请中断时,哪一个中断源被CPU优先响应的权力。
(5)中断嵌套是指在一个中断处理还未完成时,优先级更高的中断打断了这个中断的执行过程,即一个中断程序中又有另一个中断在执行的情况。
(6)中断屏蔽是指某中断被CPU禁止响应的情况。
2. 89S51单片机中各中断源的中断处理程序的入口地址可否自行设定?当中断处理程序的长度大于8个字节时如何处理?
89S51单片机中各中断源的中断处理程序的入口地址不能自行设定,当中断处理程序的长度大于8个字节时,应设置一条无条件跳转指令,将中断处理程序写入其他存储区。
3. 89S51单片机的中断系统由哪些部件构成?分别有何用处?
89S51单片机的中断系统由中断源、中断标志位、中断允许控制寄存器、中断优先级控制寄存器及中断入口地址组成。中断源用于产生中断请求信号;中断标志位用于将中断源产生的中断请求做上标记,以便于CPU能及时查询到中断的请求;中断允许控制寄存器用于设置哪些中断源可以被CPU响应,哪些被禁止;中断优先级控制寄存器的作用是设置各种中断源的优先顺序;中断入口地址用于将中断处理程序的首地址存入PC指针以控制中断服务程序的执行。
4. 89S51单片机中断系统有几个中断源?各中断标志如何产生?如何清除?CPU响应中断时,它们的中断入口地址分别是多少?
89S51单片机中断系统有五个中断源,是通过TCON、SCON中的IE0、IE1、TF0、TF1、TI、RI六个标志位产生的。其中,IE0、IE1、TF0、TF1由硬件清零,TI、RI由软件清零。它们的中断入口地址分别是0003H(外部中断0)、0013H(外部中断1)、000BH(定时器0)、001BH(定时器1)、0023H(串行口)。
5. 89S51内部设有几个定时器/计数器?它们是由哪些特殊功能寄存器组成的?
89S51内部设有2个定时器/计数器,它们是由TCON、TMOD、TH1、TH0、TL1、TL0组成。
6. 89S51单片机定时/计数器T0、T1有哪几种操作模式?它们有什么区别?
89S51单片机定时/计数器T0、T1有4种操作模式。方式0为13位定时/计数器,方式1为16位定时/计数器,方式2为自动重装初值的8位定时/计数器,方式3为T0被拆成两个独立的8位定时/计数器。
7. 89S51单片机定时/计数器在定时或计数工作方式下,其计数脉冲分别由谁提供?定时时间与哪些因素有关?做计数时,对外界计数脉冲频率有何限制?
89S51单片机定时/计数器在定时工作方式下,其计数脉冲由内部机器周期提供;89S51单片机定时/计数器在计数工作方式下,其计数脉冲由外部引脚T0(P3.4)、T1(P3.5)提供。定时时间与定时器工作方式及单片机时钟有关。做计数时,对外界计数脉冲频率必需小于时钟频率的1/24,且高低电平持续时间不得小于一个机器周期。
8. 设单片机的fosc=12MHz,若内部RAM的30H单元的内容为55H,则定时器的定时时间为30ms;否则定时时间为15ms。试对定时/计数器进行初始化编程。
MOV TMOD,#01H
MOV TH0,#0C5H
MOV TL0,#68H
MOV A,30H
CJNE A,#55H,ST
MOV TH0,#8AH
MOV TL0,#0CFH
ST: …
9. 已知89S51的fosc=6MHz,利用定时/计数器T0编程实现P1.0端口输出矩形波。要求:矩形波高电平宽度为50μs,低电平宽度为300μs。
将T0作为定时器,工作在方式2,定时时间为25μs,则初值为256-25=231=E7H,TMOD=00000010B=02H。
ORG 0000H
LJMP START
ORG 000BH
LJMP INTT0
ORG 0050H
START:CLR P1.0
MOV TMOD,#02H
MOV TH0,#0E7H
MOV TL0,#0E7H
SETB PT0
MOV IE,#10000010B
SETB TR0
SETB P1.0
SETB F0
MOV R7,#6
LJMP $
ORG 0100H
INTT0: JB F0,GAO
DJNZ R7,IED
MOV R7,#6
GAO: CPL P1.0
CPL F0
IED: RETI
END
10. 已知 89S51的fosc=12MHz,用定时/计数器T1编程实现P1.0和 P1.1引脚上分别输出周期为2ms和500μs的方波。
将T1作为定时器,工作在方式2,定时时间为250μs,则初值为256-250=6=06H,TMOD=00100000B=20H。
ORG 0000H
LJMP START
ORG 001BH
LJMP INTT1
ORG 0050H
START:CLR P1.0
CLR P1.1
MOV TMOD,#20H
MOV TH1,#06H
MOV TL1,#06H
SETB PT1
MOV IE,#10001000B
SETB TR1
MOV R7,#4
LJMP $
ORG 0100H
INTT1: CPL P1.1
DJNZ R7,IED
MOV R7,#4
CPL P1.0
IED: RETI
END
11. 什么是串行异步通信?它有哪些特点?
串行异步通信是指数据传送时各位分时传送,只需要一根数据线。在传送过程中数据以字符为单位传送,每个字符数据都要加进一些识别信息位和校验位,数据发送和接收端的时钟可以不同步。它的特点是节省传输线路,可实现远距离通信,传输速度相对同步通信慢,异步通信不需要发送端和接收端的时钟严格同步。
12. 89S51单片机的串行口由哪些功能部件组成?各有何作用?
89S51单片机的串行口由SCON、SBUF及若干门电路构成。SCON用于设置串行口的工作方式,SBUF用于存储串行通信时要发送的数据或已接收到的数据。
13. 89S51的串行数据缓冲器只有一个地址,如何判断是发送还是接收信号?
通过不同的传送指令进行区分,如果发送数据则使用“MOV SBUF,A”,如果接收数据则使用“MOV A,SBUF”
14. 89S51的串行口有几种工作方式?各种方式下的数据格式及波特率有何区别?
89S51的串行口有4种工作方式。方式0为同步移位寄存器方式,波特率为fOSC/12;方式1为10位异步通信方式,波特率可调;方式2为11位异步通信方式,波特率为fOSC/32或fOSC/64;方式3为11位异步通信方式,波特率可调。
15. 试用查询方式编写一数据块发送程序。数据块首址为内部RAM的30H单元,其长度为20个字节,设串行口工作于方式1,传送的波特率为9600bps(fosc=6MHz),不进行奇偶校验处理。
设波特率=9600bps。由T1工作于方式2,fosc=6MHz,SMOD=1,求得TH1=TL1=0FDH。
ORG 0100H
FIRST: MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
MOV SCON,#40H
MOV PCON,#80H
SETB TR1
MOV R0,#30H
MOV R1,#20
F: MOV A,@R0
MOV SBUF,A
JF: JBC TI,GG
SJMP JF
GG:INC R0
DJNZ R1,F
SJMP $
END
16. 试用中断方式编写一数据块接收程序。接收缓冲区首址为内部RAM的20H单元,接收的数据为ASCII码,设串行口工作于方式1,波特率设定为1200bps(fosc=11.0592MHz),接收时进行奇偶校验,若出错则
展开阅读全文