单片机原理及应用复习题和答案 下载本文

实际应用中并不需要使用工作寄存器或不需要使用4组工作寄存器,不使用的工作寄存器组的区域仍然可作为一般数据缓冲区使用,用直接寻址或用Ri的寄存器间接寻址来访问。

(2) 20H~2FH为可位寻址区域,这16个字节的每一位都有一个地址,编址为

00H~7FH。

当然,位寻址区也可以用作字节寻址的一般数据缓冲区使用。

(3)30H~7FH为堆栈、数据缓冲区。

14、 单片机有哪几个特殊功能寄存器?各在单片机的哪些功能部件中?

答:8051单片机内部有21个特殊功能寄存器,在物理上是分散在片内各功能部件中,在数学上把它们组织在内部数据存储器地址空间80H~FFH中,以便能使用统一的直接寻址方式来访问。这些特殊功能寄存器颁在以下各个功能部件中:

(1) CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH两个8位寄存器组成); (2) 中断系统:IP、IE;

(3) 定时器/计数器:TMOD、TCOM、TL0、TH0、TL1、TH1; (4) 并行I/O口:P0、P1、P2、P3; (5) 串行口:SCON、SBUF、PCON。

15、 PC是什么寄存器?是否属于特殊功能寄存器?它有什么作用? 答:PC是16位程序计数器(Program Counter),它不属于特殊功能寄存器范畴,程序员不以像访问特殊功能寄存器那样来访问PC。PC是专门用于在CPU取指令期间寻址程序存储器。PC总是保存着下一条要执行的指令的16位地址。通常程序是顺序执行的,在一般情况下,当取出一个指令(更确切地说为一个指令字节)字节后,PC自动加1。如果在执行转移指令、子程序调用/返回指令或中断时,要把转向的地址赋给PC。

16、 DPTR是什么寄存器?它由哪些特殊功能寄存器组成?它的主要作用是什么?

答:DPTR是16位数据指针寄存器,它由两个8位特殊功能寄存器DPL(数据指针低8位)和DPH(数据指针高8位)组成,DPTR用于保存16位地址,作间址寄存器用,可寻址外部数据存储器,也可寻址程序存储器。 16、 简述MCS-51汇编语言指令格式。

答:MCS-51汇编语言格式如下: [标号:]操作码助记符[操作数1] [操作数2] [操作数3][注释]标号是用户定义的符号,其值代表这条指令的地址。操作码助记符是指令系统规定的代表特定指令功能的英文缩写符。每条指令都有操作码记符。指令的操作数最多有3个,也有无操作数的指令。注释字段是用户对程序的说明,便于对程序的阅读和理解。 简答

16、 MCS-51指令系统主要有哪几种寻址方式?试举例说明。

答:MCS-51指令操作数主要有以下7种寻址方式:

寻址方式 举例

立即寻址 MOV A,#16 直接寻址 MOV 20H,P1 寄存器寻址 MOV A,R0

寄存器间接寻址 MOVX A, @DPTR 变址寻址 MOVC A, @A+DPRT 相对寻址 SJMP LOOP 位寻址 ANL C,70H

17、对访问内部RAM和外部RAM,各应采用哪些寻址方式?

答:对内部RAM的寻址方式有直接寻址、寄存器间接寻址和可对位寻址的位寻址。对外部RAM的寻址方式只能用寄存器R0/R1(8位地址)或DPTR(16位地址)间接寻址。

18、 SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。

前者提供了以SJMP的下一条指令的起始地址为中心的256字节范围的转移(-128~+127),后者的转移目标地址必须在与AJMP的下一条指令的第一字节相同的2KB区的程序储存器中。短转移方便了可重定位编码。SJMP方便了PC可重定位编码,但转移范围小。而ASJMP转移范围大,但存在跳区的限制,AJMP指令只能位于2KB区的最后2个字节处时,才可跳到下一个区去。因此用AJMP指令来代替SJMP指令是有条件的,也就是目标地址必须与它下面的指令存放地址在同一个2KB区域内。

19、 8031的扩展储存器系统中,为什么P0口要接一个8位锁存器,而P2口却不接?

答:这是因为P0口是扩展储存器系统的多路低8位地址和数据总线,在访问外部存储器时,P0口分时用作输出外部储存器低8位地址和传送数据,为了在整个访问外部存储器期间,对外部存储器存在着有效的低8位地址信号,所以P0口需要外接一个地址锁存器。ALE信号就是用来把P0口输出的地址字节锁存在这个外接的锁存器中,再从锁存器输出外部存储器的低8位地址。而P2口只用作扩展存储器系统的高8位地址线,并在整个访问外部存储器期间不变,所以不必外接地址锁存器。

20、在8031扩展系统中,外部程序存储器和数据存储器共用16位地址线和8位数据线,为什么两个存储空间不会发生冲突?

答:这是因为外部程序存储器和外部数据存储器所使用的控制信号不同。对外部程序存储器的选读通是用PSEN控制线,而对外部数据存储器的读/写控制是用RD和WR读、写控制线,所以不会发生地址冲突。

21、 8031单片机需要外接程序存储器,实际上它还有多少条I/O线可以用?当使用外部存储器时,还剩下多少条I/O线可用?

答:8031系统必须外接程序促成器,原则上说,P0和P2口要用作数据和地址总线,所以只有P1和P3口可用作I/O口,共16条I/O线。在使用外部存储器时,除了占用P0和P2口外,还需要用P3口RD(P3.7)和WR(P3.6)两条控制线,所以这种情况下就只剩下14条I/O线可用了。

5、编程题 1、编程将片内RAM30H单元开始的15B的数据传送到片外RAM3000H开始的单元中去。

解:STRAT:MOV R0,#30H MOV R7,#0FH

MOV DPTR,#3000H LOOP: MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ R7,LOOP RET

2、片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和

<256 ).

解 ADDIO:MOV R0,30H MOV R7,#9 MOV A,@R0 LOOP: INC R0

ADD A,@R0 DJNZ R7,LOOP MOV 30H,A RET

3、 片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中.

解 START: MOV R0,#40H ;数据块首地址送R0 MOV R7,#09H ;比较次数送R7 MOV A,@R0 ;取数送A LOOP: INC R0

MOV 30H,@R0 ;取数送30H

CJNE A,30H,NEHT ;(A)与(30H)相比 NEXT: JNC BIE1 (A)≥(30H)转BIR1 MOV A,30H ;(A)<(30H),大数送A

BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较

MOV 50H,A ;比较结束,大数送50H RET

4、 编一子程序,从串行接口接受一个字符.

解: START: MOV TMOD,#20H ;定时器T1工作于模式2 MOV TH1,#0E8H ;设置波特率为1 200b/s MOV TL1,#0E8H

SETB TR1 ;启动T1

MOV SCON,#50H ;串行接口工作于方式1,充许接收 L1: JNB RI,L1 ;等待接收数据,末接收到数据,继续等待

CLR RI ;接收到数据,清RI MOV A,SBUF ;接收到数据送A RET

5、 利用调子程序的方法,进行两个无符号数相加。请编主程序及子程序。

解 用R0和R1作数据指针,R0指向第一个加数,并兼作“和”的指针,R1指向另一个加数,字节存放到R2中作计数初值。

主程序:

JAFA: MOV R0,#20H ;指向加数最低字节

MOV R1,#29H ;指向另一加数最低字节 MOV R2,#04H ;字节数作计数值 ACALL JASUB ;调用加法子程序 AJMP $ RTE 多字节加法子程序:

JASUB: CLR C

JASUB1: MOV A,@R0 ;取出加数的一个字节(4B无符号数加数) ADDC A,@R1 ;加上另一数的一个字节 MOV @R0,A ;保存和数

INC R0 ;指向加数的高位 INC R1 ;指向另一加数的高位 DJNZ R2,JASUB1 ;全部加完了吗? RET

6、 若图数据块是有符号数,求正数个数,编程并注释。

解 ORG 0030H

START: MOV 20H,#00H ;计正数个数计数器 MOV DPTR,#0000H ;

MOVX A,@DPTR ;数据块长度→10H MOV 10H,A

INC DPTR ;DPTR指向第一个数的地址 TWO: MOVX A,@DPTR ;取数→A

JB ACC.7,ONE ;是负数转ONE,准备取下一个数 INC 20H ;是正数,正数计数器加1 ONE: INC DPTR ;地址指针加1

DJNZ 10H,TW ;数据块长度减1不等于0,继续寻找 RET

7、编定一个软件延时1S和1min的子程序.设fosc=6Hz,则一个机器周期1μs。

解:(1)1S=2US*5*100000

5*100000=250*200*10 (2) ORG 1000H TIME:MOV R7,#10 T3: MOV R6,#200 T2: MOV R6,#250 T1: DJNZ R5,T1

DJNZ R6,T2 DJNZ R7,T3 RET

(2)1min=60,调用上面1s子程序60次 ORG 0030H MOV R0,#60

LOOP:LCALL TIME DJNZ R0,LOOP RET

8、请编制串行通信的数据发送程序,发送片内RAM50H~5FH的16B数据,串行接口设定为方式2,采用偶校验方式。设晶振频率为6MHz。 解:查询方式发送程序如下 MOV SCON,#8OH M OV PCON,#80H MOV R0,#50H